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
עוזר לכל עסק קטן למתג, לתמחר, ולהפיק הצעות מחיר מקצועיות
Translation pending
BusinessTypeScript · CSSGitHub @carolinegenzel27OnlineOwner 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
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Final project — Internet Technologies (Fullstack) course — Caroline Genzel
Live site: basis-app-sigma.vercel.app
Basis is a leverage platform for small business owners and freelancers of any kind - bakers, nail artists, photographers, trainers, and so on. A small business owner is usually very good at their craft, but weak on marketing, pricing, and professional paperwork. The app takes minimal input from them (a short questionnaire, filled out once) and turns it into professional deliverables: marketing content, a data-driven price recommendation, price quotes as PDF files, and a public business page that can be sent to clients.
/p/[slug]) with a photo, free text, and
downloadable documents - accessible without logging inTESTING.md)TESTING.md)npm install
Create a new project at supabase.com.
In the Supabase dashboard, under SQL Editor, run the following files, in this exact order (each one depends on the ones before it):
supabase/schema.sql
supabase/fix_grants.sql
supabase/add_quote_title.sql
supabase/add_fit_assessment.sql
supabase/add_profile_media.sql
supabase/fix_profile_view.sql
supabase/update_pricing_real_data.sql
supabase/add_public_branding_text.sql
supabase/add_indexes.sql
supabase/fix_public_access.sql
supabase/any_business_ai.sql
Under Settings → API, copy the Project URL, the anon public key, and the service_role key (secret - never expose it).
cp .env.local.example .env.local
Fill in the three values from step 2, plus an Anthropic API key (from platform.claude.com) for the AI market search and branding ideas:
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
ANTHROPIC_API_KEY=
.env.local is already in .gitignore - never commit real values in it.
npm run dev
Open http://localhost:3000. To try the full flow: sign up, then go through onboarding → fit assessment → dashboard → pricing advisor / branding / quotes / public page.
npm test # single run
npm run test:watch # watch mode
One-time setup, both steps:
npx playwright install chromium
Then run supabase/grant_service_role_for_tests.sql once in the Supabase
SQL Editor - the test helpers seed data directly through the service_role
admin client, which has no table access until it's explicitly granted one.
Not needed to run the app itself, only the e2e tests.
npm run test:e2e
For full details on what's tested, why, and what's intentionally out of
scope (for both the unit and end-to-end suites), see TESTING.md.
npm run lint
Push the code to GitHub, then import it as a New Project on Vercel.
Add the same four environment variables from step 3 under Settings → Environment Variables in the Vercel project.
Deploy - Vercel builds and redeploys automatically on every push.
Final, critical step: in Supabase, under Authentication → URL Configuration, set:
https://the-app.vercel.app)/** at the endWithout this step, sign-up/login on the live site won't work - Supabase Auth will reject the redirect because it doesn't recognize the domain.
app/
(public)/ Pages that don't require login: landing, login,
sign-up, and the public business page /p/[slug]
(private)/ Protected pages: onboarding, fit-assessment, dashboard,
branding, pricing-advisor, quotes, public-profile
api/quotes/[id]/pdf/ The only API Route - generates and returns a PDF
file
components/
forms/ All form components (Client Components)
ui/ Small, reusable UI components
layout/ Navbar
lib/
actions/ Server Actions - every write action goes through them
validations/ Zod schemas - the same schemas used client- and
server-side
templates/ Branding questions, tones and idea categories
ai/ Claude calls - market price search and branding ideas
pricing/ Saves the market search results as pricing options
fit-assessment/ Questionnaire questions and scoring logic
pdf/ The PDF document and the Hebrew bidi-text fix
supabase/ Client creation (browser, server, admin)
supabase/
schema.sql and migration files - run manually in the Supabase SQL
Editor
proxy.ts Runs before every request - refreshes the auth cookie
(the Next.js 16 equivalent of middleware.ts)