Skip to content

jusso-dev/SkyTime

Repository files navigation

SkyTime

SkyTime

Clean multi-tenant time tracking software with projects, clients, task boards, browser reminders, weekly timesheet approvals, polished CSV/PDF timesheet exports, full audit logging, captured server errors, and Postgres-backed workspace data.

Features

  • Time tracking. Start/stop timer, manual entries, billable flag, project rates, weekly/monthly/financial year/custom period filters, CSV and PDF export with configurable GST.
  • Clients & projects. Clients as first-class entities (contact, address, currency, default rate). Projects reference a client so renames flow through to historical entries.
  • Approvals. Weekly timesheet periods per user with draft → submitted → approved/rejected lifecycle. Entries inside an approved week are locked until an admin reopens the period.
  • Audit log. Every mutating action on tenant data is recorded (who, what, when, before, after) and visible to admins in-app and via /api/audit-log.
  • Error log. Server-side exceptions are captured to error_log and surfaced to admins for incident triage.
  • Multi-tenant. Organizations with admin/member roles, invite flow with email delivery via Resend, two-factor authentication via better-auth.
  • API. Documented JSON API under /api/* (current v1 surface) — see docs/api.md. /api/v1/health provides a liveness probe.

Local development

docker compose up -d
cd src/client/next-landing-page
npm install
npm run auth:migrate   # better-auth tables
npm run db:migrate     # SkyTime schema
npm run dev

The app boots at http://localhost:3000. Sign up creates a user; the first sign-in prompts for an organization name.

Optional integrations

  • Google Places address autocomplete. Set NEXT_PUBLIC_GOOGLE_MAPS_API_KEY to a Google Maps JavaScript API key with the Places library enabled. When set, the client address field offers type-ahead address suggestions. When unset, the field behaves as a plain text input.
  • Email delivery. Configure RESEND_API_KEY and RESEND_FROM for invite emails. Invites are still created without these — only the email send is skipped.

Backups

SkyTime includes Docker-based Postgres backups. Backups are written as custom-format pg_dump files so they can be restored with pg_restore.

Create a local file-backed backup:

docker compose --profile backup run --rm backup-local

The dump and .sha256 checksum are persisted under ./backups, which is ignored by git except for the placeholder directory.

For S3-compatible storage, copy the example env file and fill in your bucket, endpoint, and credentials:

cp .env.backup.example .env.backup

Then run:

docker compose --env-file .env.backup --profile backup-s3 run --rm backup-s3

S3_ENDPOINT_URL supports S3-compatible providers such as MinIO, Cloudflare R2, Backblaze B2, and Wasabi. Leave it empty for AWS S3. S3_FORCE_PATH_STYLE=true is useful for MinIO and many self-hosted S3-compatible services.

Restore from a local backup file:

RESTORE_FILE=skytime-skytime-20260511T010000Z.dump \
CONFIRM_RESTORE=true \
docker compose --profile restore run --rm restore

Restore directly from S3-compatible storage:

RESTORE_FILE=s3://your-bucket/skytime/postgres/skytime-skytime-20260511T010000Z.dump \
CONFIRM_RESTORE=true \
docker compose --env-file .env.backup --profile restore run --rm restore

Restores replace objects in the configured Postgres database. Stop the app process before restoring into a live environment.

Demo Screenshots

Regenerate the seeded demo account, organization, projects, tasks, timesheets, and screenshots with:

cd src/client/next-landing-page
npm run demo:screenshots

The script signs up fictional users, creates fictional organizations, adds sample projects, tasks, and time entries, then captures light and dark mode screenshots into docs/screenshots.

Desktop

View Light Dark
Dashboard SkyTime desktop dashboard in light mode SkyTime desktop dashboard in dark mode
Projects SkyTime desktop projects in light mode SkyTime desktop projects in dark mode
Board SkyTime desktop task board in light mode SkyTime desktop task board in dark mode
Timesheets SkyTime desktop timesheets in light mode SkyTime desktop timesheets in dark mode
Settings SkyTime desktop settings in light mode SkyTime desktop settings in dark mode

Mobile

View Light Dark
Dashboard SkyTime mobile dashboard in light mode SkyTime mobile dashboard in dark mode
Projects SkyTime mobile projects in light mode SkyTime mobile projects in dark mode
Board SkyTime mobile task board in light mode SkyTime mobile task board in dark mode
Timesheets SkyTime mobile timesheets in light mode SkyTime mobile timesheets in dark mode
Settings SkyTime mobile settings in light mode SkyTime mobile settings in dark mode

About

Timesheet recording application

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages