Project

Full-Stack Anime Platform

AniDis

AniDis is a full-stack anime discovery, tracking, and discussion platform built around current-season browsing, organized watch folders, episode progress, and threaded conversation.

AniDis landing page with seasonal anime lineup and feature sections
Landing experience for seasonal anime discovery.

Role

Designed and shipped the product surface, API layer, database model, CI pipeline, container builds, and self-hosted deployment path.

Product Shape

The app is centered on the moment a viewer asks what is airing now, what they are already following, and where the active discussion is happening.

  • Built separate Next.js product, landing, and Cel docs apps inside a Turborepo monorepo.
  • Modeled discovery around current-season anime, folders, profile activity, and episode progress.
  • Kept the entry flow usable for browsing while preserving authenticated watch and discussion state.

System Design

The backend keeps Jikan-powered discovery, social features, profile data, and discussion primitives behind a typed FastAPI/PostgreSQL API.

  • Designed API surfaces for anime metadata, profiles, follows, folders, episode progress, threads, comments, likes, and avatars.
  • Used PostgreSQL, Redis, and Alembic migrations to keep application state explicit and deployable.
  • Separated product concerns enough for the landing site, app shell, docs, and backend services to ship independently.

Shipping Discipline

The project is deployed like a real service rather than a static demo, with repeatable checks, versioned images, and observable infrastructure.

  • Created path-filtered GitHub Actions CI for linting, formatting, type checks, pytest, Playwright E2E, Docker builds, and schema drift checks.
  • Published SHA-tagged GHCR images for web, landing, docs, and backend services.
  • Deployed through a self-hosted runner with Traefik, Doppler-synced secrets, smoke checks, and OpenTelemetry/Grafana/Loki/Tempo observability.

Screens

AniDis sign in page for creating an anime desk
App entry point with provider auth and browsing fallback.