|
12 hours ago | |
---|---|---|
.cursor/rules | 1 day ago | |
.github/workflows | 10 months ago | |
android | 17 hours ago | |
assets | 3 days ago | |
doc | 1 day ago | |
ios | 17 hours ago | |
public | 5 months ago | |
scripts | 2 days ago | |
src | 12 hours ago | |
sw_scripts | 5 months ago | |
test-playwright | 3 days ago | |
test-scripts | 2 months ago | |
.browserslistrc | 3 years ago | |
.env.development | 3 months ago | |
.env.example | 3 months ago | |
.env.production | 3 months ago | |
.env.staging | 3 months ago | |
.eslintrc.js | 1 month ago | |
.gitignore | 3 days ago | |
BUILDING.md | 17 hours ago | |
CHANGELOG.md | 2 months ago | |
CONTRIBUTING.md | 9 months ago | |
Dockerfile | 16 hours ago | |
Gemfile | 2 months ago | |
Gemfile.lock | 2 months ago | |
LICENSE | 5 months ago | |
README.md | 1 day ago | |
build.sh | 4 weeks ago | |
capacitor.config.json | 2 days ago | |
index.html | 2 weeks ago | |
main.js | 3 months ago | |
package-lock.json | 16 hours ago | |
package.json | 3 days ago | |
pkgx.yaml | 3 days ago | |
playwright.config-local.ts | 2 months ago | |
playwright.config.ts | 5 months ago | |
postcss.config.js | 3 years ago | |
project.task.yaml | 1 year ago | |
requirements.txt | 3 months ago | |
sw_combine.js | 1 year ago | |
tailwind.config.js | 3 years ago | |
tsconfig.electron.json | 3 weeks ago | |
tsconfig.json | 2 months ago | |
tsconfig.node.json | 3 weeks ago | |
vite.config.capacitor.mts | 3 months ago | |
vite.config.common.mts | 4 weeks ago | |
vite.config.dev.mts | 3 months ago | |
vite.config.electron.mts | 3 weeks ago | |
vite.config.mts | 2 months ago | |
vite.config.pywebview.mts | 3 months ago | |
vite.config.ts | 2 months ago | |
vite.config.utils.mts | 3 months ago | |
vite.config.web.mts | 3 months ago |
README.md
TimeSafari.app - Crowd-Funder for Time - PWA
Time Safari allows people to ease into collaboration: start with expressions of gratitude and expand to crowd-fund with time & money, then record and see the impact of contributions.
Roadmap
See project.task.yaml for current priorities. (Numbers at the beginning of lines are estimated hours. See taskyaml.org for details.)
Setup & Building
Quick start:
npm install
npm run dev
See BUILDING.md for more details.
Tests
See TESTING.md for detailed test instructions.
Icons
Application icons are in the assets
directory, processed by the capacitor-assets
command.
To add a Font Awesome icon, add to main.ts and reference with font-awesome
element and icon
attribute with the hyphenated name.
Other
Reference Material
-
Notifications can be type of
toast
(self-dismiss),info
,success
,warning
, anddanger
. They are done via notiwind and set up in App.vue. -
If you are deploying in a subdirectory, add it to
publicPath
in vue.config.js, eg:publicPath: "/app/time-tracker/",
Code Organization
The project uses a centralized approach to type definitions and interfaces:
src/interfaces/
- Contains all TypeScript interfaces and type definitionsdeepLinks.ts
- Deep linking type system and Zod validation schemasgive.ts
- Give-related interfaces and type definitionsclaims.ts
- Claim-related interfaces and verifiable credentialscommon.ts
- Shared interfaces and utility types- Other domain-specific interface files
Key principles:
- All interfaces and types are defined in the interfaces folder
- Zod schemas are used for runtime validation and type generation
- Domain-specific interfaces are separated into their own files
- Common interfaces are shared through
common.ts
- Type definitions are generated from Zod schemas where possible
Kudos
Gifts make the world go 'round!
- WebStorm by JetBrains for the free open-source license
- Máximo Fernández for the 3D code and explanatory post
- Many tools & libraries such as Nodejs.org, IntelliJ Idea, Veramo.io, Vuejs.org, threejs.org
- Bush 3D model
- Forest floor image
- Time Safari logo assisted by DALL-E in ChatGPT
- DiceBear and Avataaars for human-looking identicons
- Some gratitude prompts thanks to Develop Good Habits