You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Trent Larson dc21e8dac3 bump version number and add '-beta' 21 hours ago
.cursor/rules chore: update migration documents and move to new home 2 months ago
.github/workflows Playwright install 1 year ago
android bump to version 1.0.3 build 36 21 hours ago
assets Updated icon and splash assets 1 month ago
doc Merge branch 'migrate-dexie-to-sqlite' 3 weeks ago
ios bump to version 1.0.3 build 36 21 hours ago
public add another sample boundary frame for the certificate view of a claim 7 months ago
scripts Merge branch 'sql-absurd-sql-back' 1 month ago
src fix incorrect checks for success 1 week ago
sw_scripts switch the encryption secret from localStorage to IndexedDB (because localStorage gets lost so often) 7 months ago
test-playwright fix a web test (all passing now) 1 month ago
test-scripts rename app ID from app.timesafari.app to app.timesafari & adjust tests (Java 20 works) 4 months ago
.browserslistrc init 3 years ago
.env.development remove relative URL references in different target because mobile chokes 1 month ago
.env.production fix console error about "window" unavailable due to service worker 2 months ago
.env.staging fix console error about "window" unavailable due to service worker 2 months ago
.eslintrc.js fix: update ESLint and VS Code settings 2 months ago
.gitignore feat: add conditional rendering for claim certificate link and update gitignore 4 weeks ago
BUILDING.md bump to version 1.0.3 build 36 21 hours ago
CHANGELOG.md bump to version 1.0.3 build 36 21 hours ago
CONTRIBUTING.md add recipient description to offers in user's list 11 months ago
Dockerfile Remove ContactScanView and rename ContactQRScanView to ContactQRScanFullView 2 months ago
Gemfile feat: Add Fastlane configuration for mobile app deployment 4 months ago
Gemfile.lock feat(ios): enhance iOS test automation and fix dependencies 4 months ago
LICENSE add license file 7 months ago
README.md fix: quick-and-dirty fix to get the correct environment variables 23 hours ago
TASK_storage.md add documentation for some new work: storage 2 months ago
build.sh feature: adding Dockerfile for online testing or deployment to docker 3 months ago
capacitor.config.json Turned off automatic safe area in iOS 1 month ago
index.html Safe area implementation for iOS 2 months ago
package-lock.json bump version number and add '-beta' 21 hours ago
package.json bump version number and add '-beta' 21 hours ago
pkgx.yaml disable SQLite in Java & Swift (since they don't compile) & add SQL queueing on startup 1 month ago
playwright.config-local.ts refactor: improve feed loading and infinite scroll reliability 3 months ago
playwright.config.ts Refatored vite.config to be a bit more streamlined before adding alternate build options. This did end up requiring me to remove @ from imports for some reason. Tests came out fine. 6 months ago
postcss.config.js Adding Tailwind and start application views 3 years ago
project.task.yaml update ClickUp link to a public link 1 year ago
requirements.txt add Python dependency for electron on Mac 1 month ago
sw_combine.js combine all service-worker scripts into a single file to try and ensure included scripts aren't lost 1 year ago
tailwind.config.js Fix config 3 years ago
tsconfig.electron.json WIP: fix(AbsurdSqlDatabaseService) fixes to typing and other curious beasts 2 months ago
tsconfig.json WIP: fix(AbsurdSqlDatabaseService) fixes to typing and other curious beasts 2 months ago
tsconfig.node.json refactor(electron): improve build process and configuration 2 months ago
vite.config.capacitor.mts refactor: reorganize Vite config into modular files 5 months ago
vite.config.common.mts fix: quick-and-dirty fix to get the correct environment variables 23 hours ago
vite.config.dev.mts WIP: certificate view and dependency updates 5 months ago
vite.config.electron.mts WIP: disabling absurd-sql when using Capacitor SQLite 2 months ago
vite.config.mts refactor: Replace console logging with logger utility 4 months ago
vite.config.pywebview.mts refactor: reorganize Vite config into modular files 5 months ago
vite.config.ts remove unused setting 2 months ago
vite.config.utils.mts refactor: reorganize Vite config into modular files 5 months ago
vite.config.web.mts fix: resolve PWA build issues with SQL.js worker files 2 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.

Database Migration Status

Current Status: The application is undergoing a migration from Dexie (IndexedDB) to SQLite using absurd-sql. This migration is in Phase 2 with a well-defined migration fence in place.

Migration Progress

  • SQLite Database Service: Fully implemented with absurd-sql
  • Platform Service Layer: Unified database interface across platforms
  • Settings Migration: Core user settings transferred
  • Account Migration: Identity and key management
  • 🔄 Contact Migration: User contact data (via import interface)
  • 📋 Code Cleanup: Remove unused Dexie imports

Migration Fence

The migration is controlled by a migration fence that separates legacy Dexie code from the new SQLite implementation. See Migration Fence Definition for complete details.

Key Points:

  • Legacy Dexie database is disabled by default (USE_DEXIE_DB = false)
  • All database operations go through PlatformService
  • Migration tools provide controlled access to both databases
  • Clear separation between legacy and new code

Migration Documentation

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 fontawesome.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

Database Architecture

The application uses a platform-agnostic database layer:

  • src/services/PlatformService.ts - Database interface definition
  • src/services/PlatformServiceFactory.ts - Platform-specific service factory
  • src/services/AbsurdSqlDatabaseService.ts - SQLite implementation
  • src/db/ - Legacy Dexie database (migration in progress)

Development Guidelines:

  • Always use PlatformService for database operations
  • Never import Dexie directly in application code
  • Test with USE_DEXIE_DB = false for new features
  • Use migration tools for data transfer between systems

Kudos

Gifts make the world go 'round!