Personal projects
Joseph's Projects
A collection of personal applications built by Joseph Tseng to solve everyday problems and explore better product experiences.
Personal & Household Expenses
JoPie
JoPie is a personal and household expense tracker with a mobile-friendly Traditional Chinese interface. It brings daily records, shared-cost settlement, recurring expenses, and AI-assisted entry into one app.
- Svelte 5 / SvelteKit
- TypeScript
- Tailwind CSS / DaisyUI
- Supabase
- IndexedDB / PWA
- Python / FastAPI
- LangGraph / Gemini
- GitHub Pages
Everyday expense tracking
Add and edit personal or household expenses
Browse daily records, monthly category summaries, and charts
Search expenses by keyword and settle shared household costs
Schedule one-off expenses or daily, weekly, and monthly repeats
AI-assisted entry
Describe an expense in natural language and answer follow-up questions for missing details
View streamed analysis as complete, validated text entries save automatically
Upload receipts, review and edit extracted items, exclude unwanted rows, and confirm before saving
Built for daily use
Google sign-in and expense records through Supabase
IndexedDB cache for previously loaded records
Taiwan-local date and month boundaries
Installable PWA with a statically built frontend
OAuth Application
Travel Split
Travel Split is a mobile-first trip expense app and travel-book companion that keeps Google Sheets as the source of truth while giving travelers a faster phone-friendly workflow.
- Next.js
- TypeScript
- Tailwind CSS / DaisyUI
- TanStack Query
- IndexedDB persistence
- Cloudflare Worker auth
- Google Cloud Functions
- Google Sheets
- PWA / static export
Features
Add expenses during a trip
Choose an active trip sheet
Track date, category, payer, currency, and split amounts
Review day-based expenses
View shared-cost summaries
Open trip plan resources
Use public mobile travel-book pages
Keep loaded data available through persisted cache
Google Sign-In authentication
Data notes
Google Sheet-backed expense records
Trip users, categories, currencies, dates, and resources from sheet config
IndexedDB cache for previously loaded data
Public travel-book routes for structured itinerary guides
Mobile-first and offline-readable travel content
No data selling
Links to Privacy / Terms
Evolved from English Word Cards
English Learning
A personal language-learning app that grew from a Google Sheets and Apps Script vocabulary tool into a SvelteKit app with a FastAPI and PostgreSQL backend. Daily reviews and English/Japanese deck management share an authenticated, owner-scoped API.
- SvelteKit
- TypeScript
- Python / FastAPI
- PostgreSQL
- SQLAlchemy / Alembic
- Google sign-in
Review and management
Review due English cards with swipe or button controls.
Manage English and Japanese decks and cards.
Submit review decisions as an atomic, idempotent batch.
Migration and boundaries
The current review flow uses FastAPI and PostgreSQL exclusively. Legacy Sheets data moves through a validated CSV import, without automatic Apps Script fallback or dual writes.
