Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗
🌐 Live: ungakoodal.vercel.app · 💻 Source: github.com/triozcompany/koodal · 🎬 Videos, demo & MVPs
Built by TEAM TRIOZ for Build with AI: Code for Communities
▶ Watch the 24-second product video · also in the repo: public/videos/koodal-product.mp4
One open loop for every community's issues. Koodal is a multi-tenant platform where any organization (a city corporation, an apartment community, a university or an institution) gets its own space to report, verify, fix and confirm local issues.
| 🗣 Members report and support | Report in your own language by photo, text or voice note through the Koodal app. Neighbours support and verify, so the most important issues rise to the top. |
| 🛠 The team decides and fixes | Staff use the Koodal Console to accept or reject cases, assign the right team, track deadlines and post proof of the fix. |
| ✅ The community confirms | A case closes only when the people who reported it agree it's fixed. Otherwise it reopens. |
What makes it different
Impact: people get a voice and see what happens to their reports. Organizations get fewer duplicates, clear priorities and data on which problems keep coming back.
Koodal started life as CivicPulse, a civic issue app for Tamil Nadu, and is growing into a platform for every kind of community. See Built vs roadmap for what is live today.
📖 View the pitch deck in the app, or download the PDF (also in the repo: public/docs/Koodal_Platform_Pitch_Deck.pdf).
| At a glance | |
|---|---|
| 🗣 12 | Indian languages |
| 🎁 14 days | free trial, no card needed |
| 💸 from ₹999 | per month, members never pay |
| 🎯 80% | community support opens an official case |
| Subject | What Koodal does | Remark |
|---|---|---|
| 📸 Reporting | Photo, text or voice note, in your own language | Takes a minute. Excuses not accepted. |
| 👥 Verification | Neighbours support and add evidence; enough support opens an official case | Plays well with others. |
| 🛠 Fixing | Staff accept, assign the right team, track deadlines and post proof | Always shows their work. |
| ✅ Trust | A public timeline; a case closes only when members confirm, and reopens if not | Never marks its own homework. |
| 🧩 Duplicates | The same problem filed ten times becomes one case with ten voices | Hates repeating itself. |
| 🔁 One account | Switch between your city, apartment and campus in a tap | Gets around. |
| 🤝 Fair pricing | Organizations subscribe, members never pay | Everyone's favourite. |
The full flow diagram is in Architecture below.
| 🖥 Apps | Next.js and TypeScript on Vercel: the installable PWA for members and the web Console for teams |
| 🔥 Firebase | Auth, Firestore (org-scoped data), Storage for photos and proof, push notifications |
| ✨ Gemini | Multilingual voice-to-report and case triage (category, severity, team), with staff making every decision |
| 🗺 Google Maps | Location, pins and nearby issues |
Diagrams from the pitch deck.
| Route | What it is |
|---|---|
/ | Landing page |
/get-started | Create an organization |
/pitch | Pitch deck viewer with PDF download (PDF) |
/nearby | Citizen app: nearby issues on a map |
/feeds | Citizen app: feed |
/search | Citizen app: search |
/cases | Citizen app: cases |
/profile | Citizen app: profile |
/settings | Citizen app: settings |
Plans and pricing are in Business model & growth below.
Organizations subscribe. Members never pay. Priced by community size, at about ₹2–10 per member a month. Every plan starts with a 14-day free trial.
| Plan | Price | Limits | Who it's for |
|---|---|---|---|
| Starter | ₹999 / month | 100 members · 2 staff | Small apartments, clubs |
| Community | ₹2,499 / month | 500 members · 5 staff | Gated communities, schools |
| Institution | ₹6,999 / month | 3,000 members · 15 staff | Colleges, hospitals, offices |
| Civic | Custom / year | Unlimited · SSO · open data | Cities and large campuses |
| Year 1 | Year 2 | Year 3 | |
|---|---|---|---|
| Annual recurring revenue | ₹30 L | ₹1 Cr | ₹2.7 Cr |
| Organizations | 73 | 271 | 735 |
| Footprint | 2 city pilots | 6 cities | 15 cities |
These are targets, not results.
How it grows
The platform-admin figures in the deck (8 paying organizations, ₹2.32 L MRR) come from demo/sample data, not real customers.
| ✅ Built in this repo | 🗺 Roadmap (shown in the deck) |
|---|---|
| Citizen app: nearby map and list, feed, search, cases, report flow, duplicate handling, profile, settings | Team/government workflow screens on live data |
| Firestore persistence, email/password auth | Multi-tenant organizations, billing, platform admin |
| Voice / WhatsApp intake, 12-language UI, policymaker hotspot analytics |
Koodal is a multi-tenant platform where any organization (city corporation, apartment, university or institution) gets its own space to report, verify, fix and confirm local issues.
Members report problems by photo, text or voice in 12 Indian languages via the Koodal app. Neighbours support and verify reports so urgent issues rise. Staff use the Koodal Console to accept, assign and track cases against deadlines, then post proof of the fix. A case closes only when the community confirms it; otherwise it reopens.
Gemini AI turns Tamil/Hindi voice notes into structured reports, merges duplicates and suggests category, severity and team; staff always make the final decision. One account works across many organizations, and the app adapts its wording, categories and teams to each.
Organizations subscribe monthly (from ₹999) after a 14-day free trial; members never pay.
Built with Next.js, Firebase, Gemini and Google Maps by Team TRIOZ.
Student: Koodal · Class: Communities of India · Class teacher: everyone who reports an issue
| Member | Role | Find them | |
|---|---|---|---|
| 🧭 | Santhosh S | Team Leader | GitHub · LinkedIn |
| 💻 | Aakash T | Team Member | GitHub · LinkedIn |
npm install
cp .env.example .env.local # then fill in real values, see below
You'll also need a Firebase Admin service account for local development — see Environment & secrets.
npm run dev
Open http://localhost:3000.
To (re)seed sample Firestore data:
npx tsx scripts/seed-koodal.ts
Nothing secret is committed to this repo. Copy .env.example to .env.local and fill in:
| Variable | Used for | Get it from |
|---|---|---|
GEMINI_API_KEY | AI report analysis (lib/domain/analyze.ts) | https://aistudio.google.com/apikey |
FIREBASE_SERVICE_ACCOUNT_JSON | Server-side Firestore writes (deploy-time alternative to a local key file) | Firebase Console → Project Settings → Service Accounts |
For local development, lib/firebase/admin.ts prefers a JSON key file over the env var:
secret/<project-id>-firebase-adminsdk-*.json
Download this from Firebase Console → Project Settings → Service Accounts → Generate new private key, and drop it in secret/. That whole folder is gitignored except secret/service-account.example.json, which documents the expected shape — copy the real file in beside it, don't overwrite it.
For deployment (Vercel or similar), you generally can't ship that file — set FIREBASE_SERVICE_ACCOUNT_JSON as a platform environment variable instead, pasting the entire service-account JSON as a single-line string. If neither the file nor the env var is present, admin.ts falls back to gcloud auth application-default login (ADC), which only works for local development.
The Firebase client (web) config in lib/firebase/client.ts is not secret — Firebase web API keys are safe to expose publicly; access is enforced by Firestore security rules, not by hiding that key. It's already committed as literal values; only change it if you're pointing this app at a different Firebase project.
app/(marketing)/ — the public site: landing /, /get-started and the pitch deck viewer /pitch with PDF download (public/docs/).app/(citizen)/ — the citizen-facing app (Next.js App Router), one route folder per screen (feeds/, search/, cases/, issues/[issueId]/, profile/, settings/, etc.), each typically split into a mobile *Screen.tsx and a desktop Desktop*.tsx.lib/domain/ — pure domain logic and types shared across screens (stages, filters, scoring, dedup, etc.), no framework or I/O dependencies.lib/firebase/ — Firestore client SDK (client.ts) and Admin SDK (admin.ts) setup.server/actions/ — Next.js Server Actions that perform the actual Firestore writes.app/tokens.css — design tokens (colors, type, spacing) imported by app/globals.css.scripts/seed-koodal.ts — seeds sample issues/cases into Firestore for local development and demos.| Command | Does |
|---|---|
npm run dev | Start the dev server (Turbopack) |
npm run build | Production build |
npm run start | Run a production build |
npm run test | Run the test suite (Vitest) |