Back to projects

Personal projects2026

SiyaMap

A concert seat-view sharing platform

Overview

A two-person side project built with a UI designer (started February 2026, currently deployed to a stage environment). The designer owns the product concept and UI design; I own all of the engineering end-to-end: database modeling, backend API, frontend and shared UI component library, image-processing service, AWS infrastructure, and CI/CD.

The platform uses interactive SVG venue seat maps as an index: concert-goers submit real photos of the view from the seat they sat in, along with experience ratings (satisfaction, obstructed view, exit time, air-conditioning strength, etc.), so future ticket buyers can click a section on the seat map and see what that seat actually looks like.

Key contributions

  • Partnered with a designer and independently designed and built the entire system, spanning frontend, backend, database design, and infrastructure architecture

Highlights

  1. 01

    AWS Serverless architecture

    Packaged Next.js as a Docker image running on AWS Lambda via Lambda Web Adapter, with static assets served from S3 + CloudFront, keeping compute cost near zero when there is no traffic

  2. 02

    Layered backend with dependency injection

    Inspired by NestJS, every domain module follows Route → Controller → Service, with constructor injection so dependencies can be swapped for unit tests

  3. 03

    Single-definition Zod DTOs

    Derived every DTO from one Zod schema so a single definition is shared by the frontend, the backend, and data validation, covering request validation, response field filtering, and shared types

  4. 04

    Chained middleware for the Next.js proxy

    Reworked the Next.js proxy with a generic chain() that composes route guards into a chain of responsibility, so adding a rule only takes one more factory

  5. 05

    Standalone image-processing service

    Split watermarking and resizing into a separate image-processor Lambda triggered by S3 events and CDN requests, keeping image uploads and processing entirely off the main app to reduce its load

  6. 06

    On-demand resizing with abuse protection

    CloudFront routes /resize/* through API Gateway to Lambda for on-the-fly resizing, with a 200/400/800 width whitelist preventing cache-busting cost attacks

  7. 07

    Monorepo engineering

    Managed three modules with pnpm Workspaces + Turborepo, with the shared UI library bundled by tsup and deployed as a standalone Storybook site

Images

SiyaMap homepage design mockup
Database ER diagram
Backend request pipeline