Oracle3
Oracle3: 예측시장 거래 엔진·MCP 서버
FinDB는 인도를 위한 무료 개인 재무 앱으로, 광고 없이 은행·카드·현금 등을 관리합니다
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
금융TypeScript · JavaScriptGitHub @viswabnath온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.
저장소 README에서 가져옴
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).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).