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
Coaching client management
Translation pending
BusinessTypeScript · JavaScriptGitHub @vikwilliamsonOnlineOwner 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
Loading the full README. The saved excerpt is shown below.
Coaching client management. A Next.js app that turns coach documents into a
confirmed "active protocol", ingests real nutrition/health data from Health
Connect via an Android companion app, and closes the loop with a compliance
dashboard, an AI weekly analysis, and a generated coach check-in.
Live demo: https://show-prep-gamma.vercel.app — seeded with sample
coaching data; log in with the demo passcode.
• / — Next.js 16 (App Router) + TypeScript + Drizzle + PostgreSQL web app
• /mobile — Expo (React Native) Health Connect companion for Android
(its README)Read the full README ↗Coaching client management. A Next.js app that turns coach documents into a confirmed "active protocol", ingests real nutrition/health data from Health Connect via an Android companion app, and closes the loop with a compliance dashboard, an AI weekly analysis, and a generated coach check-in.
Live demo: https://show-prep-gamma.vercel.app — seeded with sample coaching data; log in with the demo passcode.
Monorepo layout (pnpm workspaces):
/ — Next.js 16 (App Router) + TypeScript + Drizzle + PostgreSQL web app/mobile — Expo (React Native) Health Connect companion for Android
(its README)claude-opus-4-8) extracts structured prescriptions (calories, P/C/F,
effective date, cardio plan); you review and confirm before one becomes
the active protocol. Program rules/guidelines are just another document
category.check_ins. Thresholds live in the weekly_targets
table (set per client by the coach, on the client's page — Edit). Output: a copyable/mailable filled-in template.voyage-4 embeddings,
1024-dim, pgvector), with source citations./log, POST /api/manual-entry): a client logs their own days, a coach
picks a client. Saved with source: "manual"; saving a day again replaces
that day's manual entry. Macros/nutrition are not logged here./api/ingest/{nutrition|weight|hydration|sleep|exercise|activity},
Zod-validated, bearer-token-gated, idempotent (upserts on Health Connect
record UIDs).pnpm install
cp .env.example .env.local # add ANTHROPIC_API_KEY + VOYAGE_API_KEY for AI features
pnpm seed # optional: 35 days of demo data (run with dev server stopped)
pnpm dev
No database setup needed: without DATABASE_URL the app runs an embedded
PGlite (WASM Postgres, pgvector included) at .data/pglite. Point
DATABASE_URL at a real Postgres (with the pgvector extension) to use one —
same Drizzle schema/migrations either way.
PGlite is single-process: stop the dev server before running
pnpm seed, and vice versa.
Create a Postgres database (Neon, or Vercel → Storage → Postgres) and copy
its pooled connection string. Migrations and the vector extension are
applied automatically on first boot — no manual setup.
Import the repo at vercel.com/new and set env vars:
DATABASE_URL, ANTHROPIC_API_KEY, VOYAGE_API_KEY, INGEST_API_KEY
(required in prod — the ingest API is public), SESSION_SECRET, and for a
public demo SEED_COACH_PASSCODE/SEED_CLIENT_PASSCODE (see "Demo
account seeding" in .env.example — sets the seeded demo account's
passcode; there's no login-page shortcut, sign in with it like any other
account).
Seed the deployed database with sample data + AI content from your machine:
DATABASE_URL="<neon-pooled-url>" SEED_AI=1 pnpm seed
AI routes run with maxDuration = 300; next.config.ts bundles the migration
SQL into the serverless output.
| Command | What |
|---|---|
pnpm dev / pnpm build / pnpm start | Next.js |
pnpm seed | demo data (35 days, active + pending protocol) |
pnpm test | unit tests (Vitest) |
pnpm test:e2e | e2e smoke tests (Playwright) |
pnpm typecheck | tsc --noEmit |
pnpm db:generate | regenerate Drizzle migrations after schema changes |
pnpm backfill-accounts | one-time: create coach/client accounts, assign existing data (see the script's header comment) |
All optional — see .env.example. INGEST_API_KEY protects the ingest API
(the companion app sends it as a bearer token). SESSION_SECRET enables the
per-account login gate (each account has its own passcode, see
scripts/backfill-accounts.ts); leave unset for none.
Day bucketing is done in America/Los_Angeles (configurable per client — a coach
sets it on the client's page via Edit; a client sets their own in Settings):
timestamps are stored as UTC and each row also stores its local_date,
computed at ingest.
MyFitnessPal ─┐
├→ Health Connect (on-device) → mobile companion (batched POST)
Samsung Health┘ → /api/ingest/* → Postgres → dashboard / check-ins
Coach docs → upload → Claude extraction → pending protocol → user confirms
→ active protocol (compliance baseline)
→ chunked + embedded (voyage-4) → doc chat (RAG)