製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗A campus app for Kirinyaga students: Market with escrow, wallet, anonymous messages, roommates, study groups, Hearts, polls, Club shop, event tickets, clips and an admin panel.
Production setup on Render: RENDER.md (backend server.js + static site). DEPLOY.md describes the older Cloudflare route.
| Folder | What it is |
|---|---|
frontend/ | Static site (index.html, cc-core.js, admin.html, config.js = the only settings file) |
server.js | Starts the API on Render (Node 20+); render.yaml is the Blueprint |
backend/src/ | Cloudflare Worker API (endpoints listed in API.md) |
supabase/ | schema.sql is the base (tables, security rules, the two Storage buckets). The other files add features and are listed by admin > SQL (safe to run again) |
tests/ | npm test (Worker, fake database, no keys) and python3 tests/browser_*.py (real page, fake Worker) |
wrangler.toml | Worker settings, no secrets |
Render (API and static site; Cloudflare Workers + Pages also supported), Supabase (database + Storage), Google sign-in, Gemini free tier, and manual M-Pesa: buyers pay your number, till or paybill, enter the M-Pesa code, and you confirm it in admin.html. TinyPesa (automatic prompts) is optional and has its own fees. Limits and caveats: the "Cost check" table in DEPLOY.md.
RENDER.md in order (production): Supabase, the API service, the site, payments, domain. Then run the extra SQL: admin > SQL > Copy missing SQL. DEPLOY.md is the older Cloudflare route.npm test and python3 tests/browser_manualpay.py (needs Playwright; no keys).Never commit keys. Every secret is set with npx wrangler secret put NAME; the names are listed in .env.example (no values). For local runs copy it to .dev.vars, which .gitignore already excludes.
Pages: frontend/ludo.html (offline), frontend/ludo-online.html (rooms, KES stakes), frontend/ludo-loader.js (3D dice loader), entry card frontend/cc-ludo.js. Backend: backend/src/ludo.js. They follow the site theme (cc-theme.js, light and dark) and are laid out for phones from 320 px wide. The withdraw sheet in frontend/cc-core.js explains exactly why a balance cannot be withdrawn and how much to add. Details and env names are in API.md and LUDO_HANDOFF.md.
REMAINING.md lists what is done, what is not, and every known limit. Nothing has been run against a real Supabase project, Worker or phone yet; the tests use fakes.
After the site is live: python3 set-domain.py YOUR-DOMAIN [GOOGLE_VERIFICATION_CODE], re-upload frontend/, then add the property and sitemap.xml in Google Search Console. Ranking for the single word "comrades" is unrealistic; realistic targets are "Comrade Connect" and "Comrade Connect Kirinyaga".
Built by Ogolla Tech. Developers: Christian N., Peter M.