- Create EntitySelectionStep.vue for complete step 1 interface * Dynamic step labeling based on context (giver/recipient/projects) * EntityGrid integration for unified entity display * Conflict detection and prevention with visual feedback * Special entity handling (You, Unnamed) with proper conditions * Show All navigation with context preservation through query params * Cancel functionality with event delegation * Comprehensive prop interface for all dialog contexts - Create GiftDetailsStep.vue for complete step 2 interface * Entity summary display using EntitySummaryButton components * Gift description input with placeholder support * AmountInput integration with increment/decrement controls * Unit code selection (HUR, USD, BTC, BX, ETH) * Photo & more options navigation with computed route * Conflict detection and warning display * Form validation and submission with disabled states * Local reactive state management with prop synchronization * Edit entity functionality with structured events - Update GiftedDialog-Decomposition-Plan.md * Mark Phase 3 as completed with detailed specifications * Add comprehensive integration examples for step components * Update component count and progress tracking * Add usage patterns for EntitySelectionStep and GiftDetailsStep * Update project status to 'Integration Phase Ready' Phase 3 completes the major UI section extraction, creating two comprehensive step components that can directly replace the existing step logic in GiftedDialog. These components maintain all existing functionality while providing clean, testable interfaces. Components: 9 total (4 Phase 1 + 3 Phase 2 + 2 Phase 3) Next: Integration phase - Replace GiftedDialog step logic with new components
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:
- For setup, we recommend pkgx, which installs what you need (either automatically or with the
devcommand). Core dependencies are typescript & npm; when building for other platforms, you'll need other things such as those in the pkgx.yaml & BUILDING.md files.
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
publicPathin 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