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) |