Projects

AI-Companion

Dec 2025 - Present

  • Developed a cross-platform mobile application using React Native (Expo) to create an interactive AI dialogue system, featuring a historical "Qin Shi Huang" persona — search "TPCC-app" in the Apple App Store or Google Play.
  • Designed high-fidelity UI/UX in Figma, creating a modular interface with 5 distinct interaction modes (Historical, Coaching, Emotional Support) to enhance user engagement.
  • Built a FastAPI backend with JWT-based authentication (bcrypt password hashing, token issuance/validation) and a layered service architecture (routes → services → data access) to support user registration, login, and profile management.
  • Implemented the data layer with raw SQL first, then migrated it to SQLModel ORM (PostgreSQL) with Alembic-managed migrations — improving type safety and maintainability while retaining hands-on SQL experience.
  • Built a /chat/completions endpoint integrating Google's Gemini API via the Agent Development Kit (ADK), using a stateless LlmAgent + async Runner to generate persona-constrained AI responses while normalizing and injecting multi-turn conversation history into each prompt.
  • Constrained AI persona behavior via prompt engineering and a stateless agent-session design, isolating conversation state per request while injecting historical context into the LLM prompt.
  • Designed and implemented a distributed rate-limiting system using atomic PostgreSQL upserts (INSERT ... ON CONFLICT DO UPDATE) rather than in-memory counters, ensuring correct quota enforcement across horizontally-scaled, stateless Cloud Run instances under concurrent request load.
  • Implemented client-side session management with Expo SecureStore, transparently handling both authenticated-user and guest-token lifecycles (persistence, reuse, and silent re-issuance) across app restarts, with automatic API retries.
  • Defined API contracts with Pydantic validation, structured error handling and exception logging, covering chat, registration, login, guest access, profile editing and account deletion.
  • Containerized the backend with Docker to standardize local development, then deployed the containerized service to Google Cloud Run with GitHub-integrated continuous deployment, managing environment-specific configuration (secrets, production feature flags) across local and cloud environments.
  • Automated database migrations and regression tests with GitHub Actions against PostgreSQL, and documented build, deployment and environment configuration procedures.
  • Configured Expo EAS build profiles for internal APK testing, production Android App Bundles and iOS store builds, and published the app on the Apple App Store and Google Play.
PostgreSQLFastAPISQLModelAlembicReact NativeFigma (Software)DockerGoogle Gemini APIGoogle Cloud RunTypeScriptExpoGitHub ActionsPydantic

Bookmark Manager

Jul 2026 - Aug 2026

  • Built a FastAPI backend with JWT authentication (pyjwt + bcrypt) and a SQLModel/Alembic-managed PostgreSQL schema, following the same layered architecture pattern as AI Companion.
  • Designed a many-to-many relational schema (Bookmark ↔ Tag via join table) with per-user uniqueness constraints, and built a React + Vite frontend with keyword search and tag filtering.
  • Enforced per-user data isolation through reusable FastAPI dependencies that verify resource ownership on every endpoint, preventing cross-user data access.
  • Wrote 33 pytest tests covering authentication, full CRUD and cross-user ownership checks, using SQLAlchemy's nested-transaction/savepoint pattern (join_transaction_mode="create_savepoint") to roll back every test against a real Postgres instance instead of mocking the database.
  • Set up a GitHub Actions CI pipeline that spins up a throwaway Postgres service container, runs Alembic migrations, and executes the test suite on every push/PR.
  • Deployed the full stack across three free-tier providers (Neon for Postgres, Render for the FastAPI backend, Vercel for the React/Vite frontend), handling production-specific issues: idempotent migrations on boot (no shell access on free tier), CORS origin configuration, and SPA rewrite rules for client-side routing.
FastAPISQLModelAlembicPostgreSQLpytestGitHub ActionsReactVite

Personal Portfolio Website

Jul 2026 - Jul 2026

  • Built a personal resume/portfolio website from scratch using Next.js (App Router), React, and TypeScript.
  • Structured content as typed TypeScript data modules (profile, skills, contact, internships, projects), separated from route pages and reusable components to keep the codebase data-driven.
  • Implemented file-based routing across Home, About, Internship, and Projects pages using next/link navigation.
  • Styling the site with Tailwind CSS for a responsive, dark-mode-aware layout.
  • Deployed the site to Vercel with continuous deployment from GitHub.
Next.jsReactTypeScriptTailwind CSSVercel