Matthew Raymer d9b168bf2a fix: Replace Vue emits option with @Emit decorators for vue-facing-decorator compatibility
-  Fixed AmountInput.vue increment/decrement functionality
-  Updated all components to use @Emit decorators instead of emits option
-  Fixed import paths to use relative imports instead of @ aliases
-  Resolved TypeScript/linter errors for  property access
-  Improved component communication reliability

Components updated:
- AmountInput.vue: @Emit('update:value') for v-model compatibility
- GiftDetailsStep.vue: All form events use @Emit decorators
- EntitySelectionStep.vue: Fixed imports and entity selection events
- EntitySummaryButton.vue: Fixed imports and edit events
- ProjectCard.vue: Fixed imports and project selection events
- PersonCard.vue: Fixed imports and person selection events
- EntityGrid.vue: Fixed imports and entity delegation events
- SpecialEntityCard.vue: Fixed imports and special entity events

Technical improvements:
- Proper vue-facing-decorator compatibility
- Cleaner event handling with decorator pattern
- Better TypeScript support for component events
- Eliminated Vue warnings about undeclared emits
- Improved maintainability with consistent event patterns

The incrementor functionality should now work correctly with proper event propagation.
2025-06-29 13:27:52 +00:00
2024-07-18 19:55:57 +08:00
2025-06-06 18:15:42 +08:00
2025-06-11 00:46:46 -06:00
2022-11-16 14:48:22 +08:00
2025-06-11 00:46:46 -06:00
2025-06-28 13:49:51 +00:00
2025-05-08 20:11:45 +08:00
2024-12-08 21:22:03 -07:00
2022-11-27 14:16:57 +08:00
2025-05-25 15:49:36 -06:00

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 dev command). 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, and danger. They are done via notiwind and set up in App.vue.

  • Customize Vue configuration.

  • 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 definitions
    • deepLinks.ts - Deep linking type system and Zod validation schemas
    • give.ts - Give-related interfaces and type definitions
    • claims.ts - Claim-related interfaces and verifiable credentials
    • common.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!

Description
No description provided
Readme 519 MiB
Languages
Vue 47.5%
TypeScript 28.4%
JavaScript 13.6%
Shell 9%
Python 0.6%
Other 0.9%