尚未检测到更新。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.