PROJECT / gastify
Gastify — Finance tracking with a Telegram bot
A personal finance tracker with two entry points: a PWA dashboard and a Telegram bot that parses natural-language messages ('I spent 5k at the store on debit') into structured transactions using AI.
Problem
Logging income and expenses by hand is tedious and quickly abandoned; and once the data is scattered across spreadsheets by currency, category, and month, it becomes unmanageable.
What I did
Built the app on SvelteKit, deployed as a Cloudflare Worker, with Drizzle ORM over Turso/libSQL. The Telegram bot parses natural-language Spanish via OpenRouter and links to the web account with one-time codes. Auth is JWT in httpOnly cookies, it's an installable PWA with a service worker, and the whole design is documented with OpenSpec and ADRs.
Highlights
- A Telegram bot that turns 'I spent 5k at the store' into a structured transaction using AI (OpenRouter).
- Installable PWA dashboard with per-currency, per-category, and monthly breakdowns.
- Web ↔ bot account linking via one-time codes.
- Compile-time type-safety: a module asserts that Drizzle's inferred types match the domain types, preventing schema drift.
- Deployed on Cloudflare Workers, with JWT auth in httpOnly cookies.
Stack
- SvelteKit
- Svelte 5
- TypeScript
- Cloudflare Workers
- Drizzle ORM
- Turso / libSQL
- OpenRouter
Links
—