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
AI Automation Consultancy workforce portal — attendance, tasks, payroll and HR management
Translation pending
BusinessTypeScript · CSSGitHub @Mr-AshishKSinghOnlineOwner 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.
A workforce management portal for an AI Automation Consultancy — attendance, tasks, payroll, leave, expenses, and company announcements. Built with Next.js, Prisma (Postgres), and Vercel Blob for document storage — designed to deploy to Vercel with real, persistent data.
You need a Postgres database and a Vercel Blob store before the app will run — see Setting up storage below. Once you have both:
Open http://localhost:3000.Read the full README ↗A workforce management portal for an AI Automation Consultancy — attendance, tasks, payroll, leave, expenses, and company announcements. Built with Next.js, Prisma (Postgres), and Vercel Blob for document storage — designed to deploy to Vercel with real, persistent data.
You need a Postgres database and a Vercel Blob store before the app will run — see Setting up storage below. Once you have both:
npm install
cp .env.example .env # then fill in DATABASE_URL, DIRECT_URL, BLOB_READ_WRITE_TOKEN, SESSION_SECRET
npx prisma migrate deploy # creates the tables
npm run db:seed # only needed once, or after resetting the database
npm run dev
Open http://localhost:3000.
Running npm run db:seed creates one admin account and a handful of sample employee accounts — see prisma/seed.ts for the exact emails and starter passwords it uses. New employees added through the Employees page get a starter password shown on screen right after creation.
Change every seeded password immediately after first login — never leave a seeded/default password in place on a real deployment, and never commit real credentials to this file or anywhere else in the repo.
This project (ceo-portal under the linked Vercel account) already has both provisioned via Vercel's Storage tab:
POSTGRES_* / PG* vars, but this app specifically reads DATABASE_URL and DIRECT_URL, which were set manually to the pooled and unpooled connection strings Neon provided.BLOB_READ_WRITE_TOKEN — nothing else needed for that one.SESSION_SECRET was generated separately (a different random value per environment) and added under Settings → Environment Variables.Important gotcha: Neon's pooled connection string alone isn't enough for Prisma — it needs &pgbouncer=true appended to DATABASE_URL, or every query fails with Can't reach database server even though the pooled endpoint is perfectly reachable (Prisma's prepared-statement usage doesn't work against PgBouncer's transaction-pooling mode without that flag). DIRECT_URL (unpooled, used only for migrations) does not need this flag.
If you ever need to redo this setup from scratch (new project, rotated database, etc.):
DATABASE_URL to Neon's pooled connection string plus &pgbouncer=true, and DIRECT_URL to the unpooled one, for all three environments (production/preview/development).SESSION_SECRET.vercel link, then vercel env pull .env.local.Neon's compute also auto-suspends when idle — the very first query after a period of inactivity can take several seconds and occasionally times out once before succeeding on retry. This is normal and only affects cold starts, not steady traffic.
git push # Vercel deploys automatically (GitHub integration is connected)
# or, from the CLI:
npx vercel --prod
Migrations run automatically as part of every build (prisma migrate deploy && next build, see package.json), so there's nothing extra to do after a schema change beyond pushing.
npm run dev # start the dev server
npm run build # production build
npm start # run the production build
npm run db:studio # browse/edit the database in Prisma Studio
npm run db:seed # re-seed departments, admin, and sample employees
npm run db:migrate # apply pending migrations to the database in DIRECT_URL
secure in production, so the app must be served over HTTPS there — Vercel does this by default./api/documents/[id]) that checks the requester is an admin or the owning employee before streaming the file.npx prisma migrate reset against your Postgres database, careful — this is destructive) and run npm run db:seed again.