Oracle3
Oracle3: 예측시장 거래 엔진·MCP 서버
무료 오픈소스 개인 재무 기록 앱: 텔레그램 봇, 영수증 OCR, 예산 및 보고서 작성, 자체 호스팅 가능
Aplikasi pencatat keuangan pribadi gratis & open source: catat pengeluaran lewat bot Telegram, OCR struk, budget dan laporan. Self-hosted personal expense tracker.
금융TypeScript · JavaScriptGitHub @ilramdhan온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
Dompetku — a private, self-hosted personal finance tracker: budgets, goals, recurring & split transactions, gold & net worth, Telegram bot, receipt OCR, 2FA and backups.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A private, self-hosted personal finance tracker with a Telegram bot and receipt OCR.
Demo credentials are shown on the login page (one-click Masuk ke demo). Fake data, resets daily at 00:00 WIB.
⭐ If Dompetku helps you, star the repo — it helps others find it.README 전문 보기 ↗English · Bahasa Indonesia
A private, self-hosted personal finance tracker with a Telegram bot and receipt OCR.
Demo credentials are shown on the login page (one-click Masuk ke demo). Fake data, resets daily at 00:00 WIB.
⭐ If Dompetku helps you, star the repo — it helps others find it.
Dompetku ("my wallet" in Indonesian) helps you track income, expenses, transfers, installments, subscriptions, budgets, savings goals, gold and money people owe you, all in one place. Log a coffee by sending "kopi 25rb" to your own Telegram bot, or snap a photo of a receipt and let AI fill in the details. Everything lives in your own Supabase database and your own Vercel deployment, so your financial data stays yours.
It is built for you and your family: the owner login is defined in environment variables, and the owner can add family members from the web UI, each with access to only the wallets you choose (view or manage). No sign-up pages, no shared servers. The interface is available in Indonesian and English (switch any time), and amounts support IDR and USD.
[!NOTE] Dompetku was designed with Indonesian users in mind (Rupiah, local banks and e-wallets, Antam gold prices, chat shortcuts like
25rb/2jt), but it works for anyone who tracks money in IDR and/or USD.
A plain-language summary of the v1.7 release, ready to share: Reports and the Yearly recap can now be filtered by wallet, dark mode is easier to read (and works better with screen readers), and pages load faster on phones and show their data right away. No database changes this time; just update the app.
Full size: Bahasa Indonesia · English · Changelog
Already on v1.4 or older? Run supabase/schema.sql once more for the v1.5 features; everything
else is optional.
Try it without installing anything: https://demo.dompetku.ilramdhan.dev
All screenshots use the fictional demo data and follow your GitHub theme (light
or dark). Regenerate them with bun run screenshots (see Regenerating screenshots).
On your phone and in Telegram
kopi 25rb #makan, /kantong; schema v19).kopi 25rb, gaji masuk 8jt ke BCA) or by sending
a receipt photo. Chat and receipt entries are shown as a preview with buttons before they are
saved (change the category, account, type or description — even for a receipt); /undo removes
the last one. /bayar <name> (subscription or installment payment) and
/tarik <amount> dari <account> (cash withdrawal) are recorded immediately, without a preview.
Slash commands give balances, reports, bills, budgets and more.httpOnly session cookie and a brute-force login limit.You need free accounts on GitHub, Supabase and Vercel. No coding is required.
supabase/schema.sql and click Run.SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY,
APP_USERNAME, APP_PASSWORD and SESSION_SECRET (a random string of at least 32
characters).[!IMPORTANT] The button deploys the app, but you still need to run
supabase/schema.sqlin your Supabase project (step 2) before logging in. Never share yourSUPABASE_SERVICE_ROLE_KEY: it gives full access to your database.
Prefer your own server? An official multi-arch Docker image (ghcr.io/ilramdhan/dompetku) and a
docker-compose.yml are published for every release: docker compose up -d with
your .env, behind an HTTPS reverse proxy. Supabase stays external. See
SELF-HOSTING.md → Docker.
The complete, beginner-friendly walkthrough (exact clicks, optional features, updating and troubleshooting) is in docs/SELF-HOSTING.md. Every environment variable is explained in docs/ENVIRONMENT.md.
| Layer | Technology |
|---|---|
| App | TanStack Start (React 19, SSR, server functions) |
| Data & UI | TanStack Router & Query, Tailwind CSS v4, shadcn/ui (Radix), Recharts, zod |
| Database | Supabase PostgreSQL + private Storage (server-only) |
| Hosting | Vercel serverless, Lovable or Docker (Node) |
| Automation | n8n + Telegram Bot API |
| AI | Any OpenAI-compatible API (receipt OCR and chat parsing) |
| Extras | Resend (email, optional), Sentry (errors, optional) |
| Quality | Vitest, Testing Library, ESLint, Prettier, GitHub Actions |
How it all fits together, with diagrams: docs/ARCHITECTURE.md.
src/
routes/ Pages (file-based) and the /api/public/n8n/* API used by n8n
components/ UI components (shadcn/ui in components/ui, lazy charts in components/charts)
lib/ Business logic: *.server.ts = server-only, *.functions.ts = server functions,
other files = pure, tested helpers
test/ Vitest test suites
supabase/ schema.sql — the whole database, in re-runnable sections v1–v13
n8n/ Importable n8n workflows: Telegram bot, schedules, error alerts, backup
docs/ Documentation
public/ PWA manifest, icons and self-hosted fonts
| Document | What it covers |
|---|---|
| Self-hosting guide | Step-by-step install: Supabase, Vercel, first login, optional features, updates |
| Environment variables | Reference for every setting |
| n8n, Telegram & email | Telegram bot, reminders, reports, weekly backup, Google Drive, Gmail SMTP, Resend |
| Architecture | Tech stack, directory layout, data flows, contributor rules |
| FAQ | Common questions and troubleshooting |
| Public demo | How the live demo works and how to run your own |
| n8n templates | What each workflow file does |
| Changelog | Notable changes |
| Contributing | How to propose changes |
| Security policy | How to report a vulnerability |
| Accessibility | Accessibility goals, supported environments, known gaps and how to report barriers |
Prefer zero setup? Open the repo in GitHub Codespaces: the dev container installs dependencies
and includes Docker, so bun run db:up, bun run dev and bun run test work right away.
Locally, you need Node.js 22 or newer, Bun (the primary package manager, used by CI) and
a Supabase project with the schema applied. npm also works (npm install / npm run <script>).
git clone https://github.com/<your-username>/dompetku.git
cd dompetku
bun install
cp .env.example .env # then fill in at least the five required variables
bun run dev # open the URL printed in the terminal
| Command | What it does |
|---|---|
bun run dev | Start the development server |
bun run build | Production build |
bun run lint | ESLint |
bun run typecheck | TypeScript check |
bun run test | Run all tests once (bun run test:watch to keep watching) |
bun run format | Format the code with Prettier |
bun run gen:types | Regenerate database types (needs SUPABASE_PROJECT_ID and the Supabase CLI) |
More detail is in the local development section of the self-hosting guide.
Contributions are welcome, from typo fixes and translations to new features. Please read
CONTRIBUTING.md and the Code of Conduct first. Before
opening a pull request, make sure bun run lint, bun run typecheck, bun run test and
bun run build all pass; CI runs the same checks. Contributor rules (schema sections, i18n,
privacy mode and more) are summarised in docs/ARCHITECTURE.md
and listed in full in AGENTS.md. For user-facing changes, also follow the
accessibility expectations.
Please do not open a public issue for security problems. See SECURITY.md for how to report a vulnerability privately.
Released under the MIT License. Copyright (c) 2026 Ilham Ramadhan.
Every instance also serves short, public privacy policy
(/privacy) and terms (/terms) pages written for a self-hosted deployment; they are linked from
the landing page footer. Edit src/components/legal/legal-content.ts (and the matching English
strings in src/lib/i18n.tsx) if your instance needs different wording.
Thanks to everyone who has helped build Dompetku. Want to join them? Pick a good first issue.
If Dompetku is useful to you, please consider giving it a star, or support its development via GitHub Sponsors. Feedback, ideas and bug reports are welcome in GitHub Issues.