尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Free digital khata and 30-day cash-flow forecasting for Pakistani shops, enterprises, households and students. FinDost AI flags projected cash shortages, tests shocks like late payments or price rises, and compares recovery options — in English and Urdu.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Cash-flow early warning and recovery planning for Pakistani shops, enterprises, households and students — in English and Urdu.
Live: https://findostai.vercel.app · API health: https://findost-api.vercel.app/api/v1/health · Presentation guide: docs/PRESENTATION_GUIDE.md
A shop can be profitable on paper and still run out of cash: customers pay late (udhaar) while rent, suppliers and bills fall due on fixed dates. Households and students have the same timing problem with salaries, allowances and fees. FinDost turns your records into a 30-day cash forecast, warns you before a projected shortage with the records behind it, lets you test what-if shocks, and prices recovery options by re-running the forecast. Enterprises add budgets, data checks, an approval workflow and team roles.
Every figure is calculated by FinDost's deterministic engine from your own records. AI is optional: with your consent it helps understand questions, words answers and reads receipt photos into proposals you review — it never calculates your figures.
Real screens from the local app with fictional demo data:
| Workspace selection | Switcher |
|---|---|
| Shop dashboard | Recovery options |
| Copilot | Team & access |
| Type | For | Distinctive modules |
|---|---|---|
| SME / shop | Kiryana, retail, micro-business | Khata, udhaar, inventory, data checks, tasks |
| Enterprise | Finance teams | Everything in SME + Team & Access; navigation grouped as a finance workflow |
| Household | Family budgets | Income & expenses, bills, budget, savings goals, personal what-ifs |
| Student | Allowance, fees, part-time income | Same as household, student wording |
The type is chosen once, when you create your own workspace; the server enforces the modules
(backend/app/auth.py, FEATURES).
| Layer | Stack |
|---|---|
| Frontend | Next.js 15.5.27, React 19.1.1, TypeScript 5.9.2, Tailwind CSS 3.4.17, Recharts 2.15.4, Supabase JS/SSR |
| Backend | Python 3.12, FastAPI 0.143.0, Pydantic 2.14.0, SQLAlchemy 2.1.4, psycopg 3.3.6, NumPy 2.5.3, httpx, PyJWT |
| Data & auth | Supabase PostgreSQL (RLS enabled, no public policies) and Supabase Auth (email confirmation, Google, anonymous demo, Cloudflare Turnstile) |
| AI (optional) | Groq (default openai/gpt-oss-20b), Google Gemini (default gemini-3.5-flash-lite) via plain HTTPS |
| Resend (auth emails through Supabase SMTP; team invitations through the Resend API) | |
| Hosting | Vercel: findost-ai (frontend) and findost-api (backend + daily cron) |
| Tests | pytest, Vitest, ESLint, tsc, headless-Chrome scripts in scripts/ |
Browser ─► Next.js (Vercel) ── Supabase Auth (session, captcha)
│ /api/v1/* rewritten server-side to the API (same origin; API URL never in the bundle)
│ Authorization: Bearer <JWT> · X-Workspace-Id: <chosen workspace>
▼
FastAPI (Vercel) verify JWT ─► resolve workspace + membership + role ─► engine
│ │
▼ ▼ optional, consent + quota
PostgreSQL (Supabase) Groq / Gemini (wording, receipts)
Diagrams, request lifecycle and the full API reference: docs/PRESENTATION_GUIDE.md
(sections 9–13). Code: frontend/ (App Router), backend/app/routers (API), backend/app/services (engine).
email_sent status.Backend (Python 3.12+; no Supabase or AI keys needed):
cd backend
python -m venv .venv && .venv/bin/pip install -r requirements-dev.txt
DATABASE_URL=sqlite:///./local.db DEV_AUTH_SECRET=local-dev-secret-change-me-0123456789 \
.venv/bin/uvicorn app.main:app --port 8000
Frontend (Node 20+; developer sign-in instead of Supabase):
cd frontend
npm install
NEXT_PUBLIC_AUTH_MODE=dev DEV_AUTH_SECRET=local-dev-secret-change-me-0123456789 \
API_URL=http://localhost:8000 npm run dev # http://localhost:3000
Sign in with any email on the developer form, choose an account type, and start with demo data. To use Supabase
locally instead, fill frontend/.env.local from frontend/.env.example and leave NEXT_PUBLIC_AUTH_MODE empty.
cd backend && .venv/bin/python -m pytest # 168 tests (mocked AI, SQLite)
cd frontend && npm run typecheck && npm run lint && npm test && npm run build # 28 Vitest tests
# browser checks against the local stack (needs Chrome + playwright-core):
node scripts/e2e-enterprise.cjs # enterprise workflow, roles, workspace selection/switching (26 checks)
node scripts/e2e-journey.cjs # 10-step demo journey (15 checks)
Results and what is not verified: docs/TESTING.md.
Names only — never commit values.
Backend (backend/.env.example)
| Name | Purpose |
|---|---|
DATABASE_URL | SQLite locally; Supabase transaction-pooler URL in production |
SUPABASE_URL | JWKS location for verifying access tokens |
SUPABASE_JWT_SECRET | Only for legacy HS256 projects |
DEV_AUTH_SECRET | Local developer tokens; ignored in production |
CORS_ORIGINS | Allowed origins for direct API calls |
GROQ_API_KEY, GROQ_MODEL | Optional AI wording / question interpretation |
GEMINI_API_KEY, GEMINI_MODEL | Optional receipt reading and AI fallback |
LLM_TIMEOUT_SECONDS, AI_DAILY_LIMIT | AI timeout (12 s) and daily per-workspace cap (60) |
ANON_AI_DAILY_LIMIT, ANON_MAX_TRANSACTIONS, DEMO_TTL_DAYS | Private-demo limits |
CRON_SECRET | Authenticates the daily demo-cleanup cron |
RESEND_API_KEY, EMAIL_FROM, APP_URL | Optional team-invitation emails and invitation link base |
FINDOST_TODAY, MAX_UPLOAD_BYTES, ENVIRONMENT | Test date pin, upload limit, environment |
Frontend (frontend/.env.example): API_URL, NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY,
NEXT_PUBLIC_TURNSTILE_SITE_KEY, NEXT_PUBLIC_GOOGLE_AUTH_ENABLED, NEXT_PUBLIC_AUTH_MODE,
NEXT_PUBLIC_SITE_URL, DEV_AUTH_SECRET (dev only). Supabase Auth config push also uses TURNSTILE_SECRET_KEY
and RESEND_API_KEY.
Two Vercel projects (backend/, frontend/) and one Supabase project. For schema changes: apply
supabase/migrations/* → deploy backend → deploy frontend. Rollback by promoting the previous Vercel deployment.
See docs/DEPLOYMENT.md and docs/ROLLBACK.md.
| Now (implemented) | Next (roadmap — not built) |
|---|---|
| Ledger, CSV/receipt import, forecast, alerts, simulator, recovery, budgets, goals, data checks, approvals, reports, Copilot, roles, workspace selection | Payment-timing uncertainty in forecasts · real-business pilot · bank feeds and reconciliation · ERP integrations · approval thresholds and chains · per-tenant RLS policies · team roles for SME · controlled execution of approved payments with human sign-off |
Presentation guide · Architecture · Forecast methodology · Security · Testing · Deployment · Demo script · Implementation report
FinDost AI provides decision support, not financial advice. Demo data is fictional.