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
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Loading the full README. The saved excerpt is shown below.
AI-powered fundraising simulator for African startup founders.
Don't practice on investors. Practice on AI first.
The full product and technical spec is in docs/SPEC.md.
2. Create a Supabase project, then copy the env template and fill it in:
3. Set up the database: paste supabase/setup.sql (all migrations bundled)
into the Supabase SQL editor and run it, or use the Supabase CLI:Read the full README ↗AI-powered fundraising simulator for African startup founders. Don't practice on investors. Practice on AI first.
The full product and technical spec is in docs/SPEC.md.
Next.js (App Router, TypeScript) · Tailwind CSS + shadcn/ui · Supabase (Postgres, Auth, Storage) · Anthropic API · Paystack · Vitest · Playwright
npm install
cp .env.example .env.local
supabase/setup.sql (all migrations bundled)
into the Supabase SQL editor and run it, or use the Supabase CLI:
npx supabase link --project-ref <your-project-ref>
npx supabase db push
npm run dev
Staff sign in at /admin/login. Roles are founder, viewer, support, admin and super_admin
(see lib/admin/permissions.ts and docs/DEPLOY.md).
Admins assign roles from Admin → Users. For the first super admin, sign
up in the app, then either run
npm run db:seed-admin -- [email protected]
or, in the Supabase SQL editor:
select private.set_user_role('[email protected]', 'super_admin');
| Command | What it does |
|---|---|
npm run dev | Development server |
npm run build | Production build |
npm run lint | ESLint |
npm run typecheck | Generates Next.js route types and runs tsc |
npm test | Vitest unit tests |
npm run test:db | Applies migrations to a throwaway Postgres and runs the RLS test suite |
npm run test:e2e | Playwright end-to-end tests (see below) |
npm run db:bundle | Regenerates supabase/setup.sql from the migrations |
npm run db:seed-admin -- <email> | Grants the super admin role to an existing user |
Deploying: see docs/DEPLOY.md.
npm run test:db needs the PostgreSQL server binaries (initdb, pg_ctl,
psql). It starts a temporary cluster, loads a small shim of the Supabase
pieces the migrations depend on (auth.users, auth.uid(), the API roles and
storage tables), applies every migration and runs supabase/tests/*.test.sql.
To run the same tests against a full local Supabase stack instead:
npx supabase start
npx supabase db reset
DATABASE_URL=postgresql://postgres:[email protected]:54322/postgres npm run test:db
npx playwright test --project=public --project=mobile builds the app, starts
it with a placeholder Supabase project and checks every public page, auth
redirects, security headers and CSRF/webhook rejections on desktop and mobile.
The core-loop project runs the whole product against a real deployment:
sign in, onboard, upload a deck, analyse, assess, a full Investor Room
meeting, results and account deletion. It needs E2E_BASE_URL,
E2E_SUPABASE_URL and E2E_SUPABASE_SERVICE_ROLE_KEY, and is skipped
without them. CI runs it for commits whose message contains [e2e]; see
docs/DEPLOY.md.
documents, reports, images) are private. Objects live at
{user_id}/{startup_id}/{file} and are served via short-lived signed URLs.ai_calls and
audit_logs are kept but unlinked from the deleted user.lib/account/service.ts):
any Pro subscription is cancelled at Paystack, their stored files are
removed, the auth user is deleted, and an account.deleted audit row
records the totals without personal details.