Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
Time tracking for solo contractors.
Translation pending
BusinessTypeScript · HTMLGitHub @BlakeEriksOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Time tracking and invoicing for solo contractors. One timer, a calendar, invoicing — deliberately nothing else.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
A time tracker for solo contractors. One timer, a calendar, and invoicing —
and deliberately nothing else.
Design system, schema, shared logic and the /api/v1/* route handlers —
including invoicing, payment details and PDF generation — are built and
covered by integration tests. The app sends no email: invoices are downloaded
and sent by the user from their own address.
Not built yet: the mobile app. The web app is complete: timer, calendar,
clients, projects, settings, payment profiles, invoicing. The macOS menu bar
app runs the timer — start, stop, task name, project — and nothing else.Read the full README ↗A time tracker for solo contractors. One timer, a calendar, and invoicing — and deliberately nothing else.
Design system, schema, shared logic and the /api/v1/* route handlers —
including invoicing, payment details and PDF generation — are built and
covered by integration tests. The app sends no email: invoices are downloaded
and sent by the user from their own address.
The web app is complete: timer, calendar, clients, projects, settings, payment profiles, invoicing. The macOS menu bar app and the phone app run the timer — start, stop, task name, project — and nothing else.
docs/ setup, deploying, architecture, data model, API contract, design system
docs/design/samples/ committed renderer output
packages/
schema/ Zod schemas — the API contract
core/ duration, rates, timer, uuid, calendar,
invoice, payment, billing
design-tokens/ tokens.json -> CSS + TS + Swift (generated into dist/)
client/ the timer, writes and cache keys both apps share
apps/
web/ Next.js — the API layer
macos/ Swift menu bar app — the timer only
mobile/ Expo phone app — the timer only
supabase/migrations/
apps/mobile (Expo) is planned, not created.
pnpm tokens # generate CSS / TS / Swift from tokens.json
pnpm tokens:validate # assert the contrast contract (runs in CI)
pnpm --filter @stint/core test # pure logic, no database needed
pnpm --filter @stint/web dev
pnpm --filter @stint/web typecheck
pnpm --filter @stint/web sample:invoice # regenerate docs/design/samples/ and the picker's
# thumbnails in apps/web/src/components/template-thumbs/
./apps/macos/bundle.sh # build and install ~/Applications/Stint Local.app
Run pnpm tokens first on a clean checkout: @stint/design-tokens resolves
through the generated dist/.
They exercise the real handlers against a real database, and the RLS suite
checks row isolation as a non-superuser authenticated role — two throwaway
databases on the local stack's Postgres, beside the seed:
pnpm db:setup # rebuilds both from this checkout's migrations
pnpm verify:db # both suites, then the schema check
docs/local-dev.md has why there are two.
pnpm test:e2e is a fourth suite: Playwright against a real browser, needing
the local Supabase stack (pnpm dev:up) and the app (pnpm dev) already
running. It is deliberately outside verify:static and verify:db so a
browser download is not a prerequisite for the unit suites, and it signs in
for real through Mailpit rather than injecting a cookie. It is the only suite that sees cookies,
navigation, redirects and server components — see docs/local-dev.md.
bug — known faultsCopyright (C) 2026 Blake Eriks. Licensed under the GNU AGPL v3.0.
You may use, modify and self-host this freely. The one obligation that matters: if you run a modified version as a network service, you must publish your source — that is the difference between the AGPL and the GPL, and it is why this license was chosen.
Copyright is held solely by the author, so these terms bind everyone else and not the author. A commercial license, for anyone wanting to build on this without the source obligation, is available on request.