Joseph Tseng

Personal projects

Joseph's Projects

A collection of personal applications built by Joseph Tseng to solve everyday problems and explore better product experiences.

Megaport selector

A performance selector for Megaport Festival. There are lots of shows in the two days, so I design a website to make scheduling easier. And people may participate the party with only mobile device, so RWD is required.

  • Responsive web
  • React
Megaport selector homepage

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.