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
CUEPA for Work by ELIPAN GROUP. Less busywork, more room for bigger things. Human-centered workflow help for small-business owners, managers and their teams. You keep the decisions.
BusinessTypeScript · CSSGitHub @marcoscuellarOnlineOwner 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 ↗The CUEPA marketing site and client proposal pages.
Next.js 16 (App Router) · React 19 · TypeScript · plain CSS · deployed on Vercel.
npm install
npm run dev # http://localhost:3000
npm run build # production build
npm start # serve the production build
npm run lint
npx tsc --noEmit
Vercel builds production from main, serving makingcuepa.com and
www.makingcuepa.com. Every other branch deploys as a preview.
Preview deployments and all *.vercel.app URLs sit behind Vercel SSO, so only
the account owner can open them. Custom domains are exempt — makingcuepa.com
is the URL to share with anyone else.
| Route | What it is |
|---|---|
/ | The marketing site |
/contact | Email capture |
/api/contact | Sends form submissions through Resend |
/cirques-experience | Client proposal (noindex, not in site nav) |
/cirques-experience/operations-hub | Phase One dashboard concept, illustrative data only |
/cirques-experience/approved | Terms sheet and electronic signature |
The three /cirques-experience routes are noindex and deliberately absent
from the site navigation. They are reachable only by direct link.
| Variable | Purpose |
|---|---|
RESEND_API_KEY | Required. Without it /api/contact returns 503 and the forms say so rather than failing silently. |
CONTACT_TO | Where submissions go. Defaults to [email protected]. |
CONTACT_FROM | From address. Defaults to Resend's shared sender. |
Fonts load via <link> in app/layout.tsx, not @import. Next's CSS
pipeline strips remote @import from bundled stylesheets, which silently drops
every webfont and ships the site in Arial. If you add a family, add it to that
<link>.
app/globals.css and app/motion-refine.css set bare-element rules —
h2 { … } and h1,h2,h3,h4 { font-family: 'Archivo Black' } among them. Those
outrank a single class, so scoped stylesheets have to declare font-family and
margins explicitly rather than relying on inheritance. Both .cx and .hub
wrap their resets in :where() for the same reason.
Client proposal configuration lives in named constants at the top of the files that use it:
app/cirques-experience/page.tsx — APPROVE_URL, CONTACT_EMAIL, HUB_URLapp/cirques-experience/approved/page.tsx — SIGNER_EMAILapp/cirques-experience/approved/agreement.ts — the terms being signed, and
a VERSION string. Change the price or timeline on the proposal and change it
here too: this text is what ends up inside a signed record, and it has to
match what the client read. Bump VERSION when it changes.public/cirques-hub-preview.png is a captured render of
/cirques-experience/operations-hub, used in the proposal hero. If the hub's
layout changes, regenerate it from the live route or it goes stale.