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.
A phone-OTP-login civic platform: anyone can log in with just their mobile
number and file a complaint about a local issue (road, water, electricity,
etc). To register clients and view complaint/client records, a user has to
pay a one-time membership fee.
Built with Next.js 14 (App Router), react-hook-form, zod, Tailwind CSS, and
lucide-react icons.
Open http://localhost:3000 in Chrome — redirects to /login.Read the full README ↗A phone-OTP-login civic platform: anyone can log in with just their mobile number and file a complaint about a local issue (road, water, electricity, etc). To register clients and view complaint/client records, a user has to pay a one-time membership fee.
Built with Next.js 14 (App Router), react-hook-form, zod, Tailwind CSS, and lucide-react icons.
npm install
npm run dev
Open http://localhost:3000 in Chrome — redirects to /login.
/membership →
click Pay ₹499 & Become a Member (this is a mock payment, nothing is
actually charged) → you're marked as a member and redirected backJSON files in data/, created automatically:
data/users.json — phone number + membership statusdata/clients.json — submitted client records (masked Aadhar only)data/complaints.json — submitted complaintsThis is a stand-in for a real database — replace lib/db.ts with real
queries against Postgres (Supabase/Neon) before going live. data/ is
already excluded via .gitignore.
Mocked in app/api/auth/send-otp/route.ts and
app/api/auth/verify-otp/route.ts. Replace with a real SMS/OTP provider.
Mocked in app/api/mobile-otp/send/route.ts and
app/api/mobile-otp/verify/route.ts. Same kind of provider as above — can
reuse the same SMS provider/account as login OTP.
Mocked in app/api/aadhar/send-otp/route.ts and
app/api/aadhar/verify-otp/route.ts. This one is regulated — needs a
licensed KYC provider like Setu, Surepass, Cashfree, or HyperVerge (not a
generic SMS provider), since Aadhar authentication requires UIDAI
AUA/KUA licensing that only these intermediaries hold.
Mocked in app/api/membership/create-order/route.ts and
app/api/membership/verify-payment/route.ts. Full instructions for wiring
up real Razorpay (order creation, checkout.js, signature verification) are
written as comments directly in those two files. You'll need:
RAZORPAY_KEY_ID=your_key_id
RAZORPAY_KEY_SECRET=your_key_secret
in a .env.local file, plus npm install razorpay.
The recommended path is to turn this into a PWA (add a manifest + icons) and wrap it with Google's Trusted Web Activity (TWA) tooling — this packages the live website into a real installable Android app without a rewrite. Requires: the app deployed on a real HTTPS domain (not localhost), a Google Play Developer account ($25 one-time), a privacy policy page, and app store assets (icon, screenshots).
app/
page.tsx Redirects to /dashboard
login/page.tsx Phone + OTP login (auto-registers new numbers)
dashboard/page.tsx Dashboard (protected, membership-aware)
membership/page.tsx Membership payment page
api/auth/ Phone OTP send/verify, logout
api/mobile-otp/ Mobile number verification (on the client form)
api/aadhar/ Aadhar OTP send/verify (mock)
api/membership/ Order creation + payment verification (mock Razorpay)
api/clients/ List (members only) and create (members only) client records
api/complaints/ List (members only) and create (any logged-in user) complaints
components/
Login/ PhoneLoginForm, LogoutButton
Membership/ MembershipCard
Dashboard/ DashboardShell, Sidebar, Topbar, SectionHero, ClientsTable
Complaints/ ComplaintForm, ComplaintsList
ClientForm/ 2-step intake form, Aadhar OTP, Mobile OTP
lib/
db.ts Mock JSON-file database (users, clients, complaints)
schema.ts Zod schemas + age calculation helper
locationData.ts Sample State/District/Taluka data
session.ts Reads logged-in phone + membership status from cookie
middleware.ts Protects all routes except /login