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 59d711bd90 make fixes to help my Mac build electron 5 days ago
.cursor/rules chore: update migration documents and move to new home 2 weeks ago
.github/workflows Playwright install 11 months ago
android fix: add requirements for capacitor/sqlite 1 week ago
assets add documentation, especially for build processes 3 weeks ago
doc convert all remaining DB writes & reads to SQL (with successful registration & claim) 1 week ago
electron fix(sqlite): resolve migration issues and enhance documentation 5 days ago
ios fix spelling of SQLite module for iOS 1 week ago
public add another sample boundary frame for the certificate view of a claim 6 months ago
scripts make fixes to help my Mac build electron 5 days ago
src make fixes to help my Mac build electron 5 days ago
sw_scripts switch the encryption secret from localStorage to IndexedDB (because localStorage gets lost so often) 6 months ago
test-playwright fix some errors and correct recent type duplications & bloat 5 days ago
test-scripts rename app ID from app.timesafari.app to app.timesafari & adjust tests (Java 20 works) 3 months ago
.browserslistrc init 3 years ago
.env.development fix console error about "window" unavailable due to service worker 2 weeks ago
.env.production fix console error about "window" unavailable due to service worker 2 weeks ago
.env.staging fix console error about "window" unavailable due to service worker 2 weeks ago
.eslintrc.cjs rename a js config file to avoid an error running lint 6 days ago
.gitignore refactor files that should be ignored 3 weeks ago
BUILDING.md fix console error about "window" unavailable due to service worker 2 weeks ago
CHANGELOG.md Merge branch 'master' into deep_linking 3 months ago
CONTRIBUTING.md add recipient description to offers in user's list 10 months ago
Dockerfile Remove ContactScanView and rename ContactQRScanView to ContactQRScanFullView 2 weeks ago
Gemfile feat: Add Fastlane configuration for mobile app deployment 3 months ago
Gemfile.lock feat(ios): enhance iOS test automation and fix dependencies 3 months ago
LICENSE add license file 6 months ago
README.md various instructions (and their timeouts) 2 weeks ago
TASK_storage.md add documentation for some new work: storage 2 weeks ago
build.sh feature: adding Dockerfile for online testing or deployment to docker 1 month ago
capacitor.config.json fix: SQLite plugin initialization in Electron main process 1 week ago
experiment.sh feat(electron): improve window and database initialization 1 week ago
index.html Safe area implementation for iOS 4 weeks ago
package-lock.json WIP: Improve SQLite initialization and error handling 7 days ago
package.json make fixes to help my Mac build electron 5 days ago
pkgx.yaml add a pod dependency to environment 3 weeks ago
playwright.config-local.ts refactor: improve feed loading and infinite scroll reliability 2 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. 5 months ago
postcss.config.cjs fix: rename postcss.config.js to .cjs for ES module compatibility 1 week ago
project.task.yaml update ClickUp link to a public link 1 year ago
requirements.txt add Python dependency for electron on Mac 5 days ago
sw_combine.cjs rename script files that would fail in the prebuild step 6 days ago
tailwind.config.js Fix config 3 years ago
tsconfig.electron.json WIP: fix(AbsurdSqlDatabaseService) fixes to typing and other curious beasts 1 week ago
tsconfig.json WIP: fix(AbsurdSqlDatabaseService) fixes to typing and other curious beasts 1 week ago
tsconfig.node.json refactor(electron): improve build process and configuration 1 month ago
vite.config.app.electron.mts experiment(electron): different vite build script for web application 1 week ago
vite.config.capacitor.mts refactor: reorganize Vite config into modular files 4 months ago
vite.config.common.mts WIP: disabling absurd-sql when using Capacitor SQLite 1 week ago
vite.config.dev.mts WIP: certificate view and dependency updates 4 months ago
vite.config.electron.mts fix: rename postcss.config.js to .cjs for ES module compatibility 1 week ago
vite.config.mts refactor: Replace console logging with logger utility 3 months ago
vite.config.pywebview.mts refactor: reorganize Vite config into modular files 4 months ago
vite.config.renderer.mts debug(electron): app index loads but problem with preload script 1 week ago
vite.config.ts remove unused setting 2 weeks ago
vite.config.utils.mts refactor: reorganize Vite config into modular files 4 months ago
vite.config.web.mts fix: resolve PWA build issues with SQL.js worker files 1 week 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:

  • 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!