Oracle3
Open-source trading engine and MCP server for prediction markets. Fee-aware no-arbitrage trading across related contracts, live on Kalshi, Polymarket and Solana or on paper.
FinDB is a free personal finance app made for India. Track bank accounts, cards, cash, loans, gold and savings in plain words, and use free EMI, FD, RD, SIP and chit fund calculators. No ads; your dat
FinanceTypeScript · JavaScriptGitHub @viswabnathOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
FinDB (Finance Dashboard): a personal finance tracker for India. Track bank accounts, credit cards, cash, income and expenses, with monthly summaries and a full activity log. Next.js, TypeScript and PostgreSQL.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
FinDB (Finance Dashboard) is a personal finance tracker for people in India. You record your money yourself: bank accounts, credit cards, cash, income and expenses. FinDB keeps every balance up to date and shows where your money went each month. It never connects to your bank. Amounts are in rupees with Indian digit grouping (5,00,000.00).Read the full README ↗FinDB (Finance Dashboard) is a personal finance tracker for people in India. You record your money yourself: bank accounts, credit cards, cash, income and expenses. FinDB keeps every balance up to date and shows where your money went each month. It never connects to your bank. Amounts are in rupees with Indian digit grouping (5,00,000.00).
Website. The official FinDB website is part of the same app: the home page, a page for every feature (marked available now, in development or planned), free calculators (EMI, which loan to close first, FD, RD, SIP, gold value, chit fund return, inflation), the roadmap, how to install the app, questions, security, privacy, terms and about.
App.
| Layer | Technology |
|---|---|
| App | Next.js 16 (App Router), React 19, TypeScript |
| API | Next.js route handlers in app/api, with the logic in lib/services |
| Database | PostgreSQL (Supabase) through pg, plain SQL |
| Hosting | Vercel |
| Tests | Jest and Playwright |
app/(site) The website: home, features, roadmap, get the app, questions, security, privacy, terms, about
app/(product) The app: sign-in screens and the logged-in screens
app/api API route handlers
components/ React components (components/site: the website's components and copy)
lib/ Server and shared code: database, sessions, rate limits, services
proxy.ts Per-request Content-Security-Policy; sends signed-out visitors to /login
next.config.ts Security headers
public/icons App icons for installing FinDB (scripts/generate-icons.js draws them)
setup-db.js Creates and updates the database schema (safe to rerun)
tests/ API tests, unit tests (tests/unit) and end-to-end tests (tests/e2e)
docs/ API reference and project status
Requirements: Node.js 20.9 or later, and a PostgreSQL database (for example a Supabase project).
npm install
Create a .env file:
DB_HOST=<database host>
DB_PORT=6543
DB_NAME=postgres
DB_USER=<database user>
DB_PASSWORD=<password>
DB_SSL=true
SESSION_SECRET=<64-byte hex string>
FIELD_ENCRYPTION_KEYS=1:<base64 of 32 random bytes> # docs/security.md
# Optional: the Postgres schema to use (default: public)
DB_SCHEMA=findb_dev
Generate a session secret with:
node -e "console.log(require('crypto').randomBytes(64).toString('hex'))"
Create the tables and start the app:
npm run setup-db # creates the tables in DB_SCHEMA (public if unset)
npm run dev # http://localhost:3000
| Command | What it does |
|---|---|
npm run dev | Development server on port 3000 |
npm run build / npm start | Production build and server |
npm run setup-db | Create or update the tables |
npm test | Build the app, start it against the balancetrack_test schema, and run all Jest tests |
npm run test:unit | Unit tests only (no database needed) |
npm run migrate:test / npm run migrate:status | Apply or list the SQL migrations in db/migrations/ |
npm run ledger:check | Read-only check that stored balances equal the ledger's (docs/ledger.md) |
npm run test:e2e | End-to-end browser tests (Playwright) |
npm run typecheck / npm run lint | TypeScript and ESLint checks |
Tests always use the balancetrack_test schema and refuse to run against any other, so they never touch real data. Put a separate test database's connection settings in .env.test (same keys as .env, git-ignored) and every test command uses it instead of the database in .env. Create the tables once with npm run setup-test-db.
FinDB runs on Vercel as a standard Next.js project (vercel.json sets the region, bom1 in Mumbai, next to the database).
.env for Production (Settings > Environment Variables). Use a different SESSION_SECRET and FIELD_ENCRYPTION_KEYS per environment.npm run setup-db once against the production database, then node scripts/migrate.js --production (after a backup, for later migrations).Only production is built: merging into master deploys production. Preview builds for other branches are skipped (ignoreCommand in vercel.json), which saves build time on the free plan. The Preview environment still points at the test database (balancetrack_test schema, with REQUIRE_TEST_SCHEMA=true), in case a preview is ever deployed by hand with vercel deploy.
ISC (declared in package.json).