PersonalEasy

Inventory Management System

Inventory API and dashboard built with NestJS, Prisma and React, deployed to AWS across a purpose-built VPC with ECS and RDS.

— Overview

Architecture Overview

graph TB
    subgraph VPC["AWS VPC, two availability zones"]
        subgraph Public["Public subnets"]
            A[Load balancer]
        end
        subgraph Private["Private subnets"]
            B["NestJS on ECS<br/>Docker"]
        end
        subgraph Data["Database subnets"]
            C[(RDS PostgreSQL)]
        end
    end
    D["React dashboard<br/>Vite + MUI"] --> A --> B --> C

A stock and inventory tracker split into a NestJS API and a React dashboard. The API models products and movements through Prisma against PostgreSQL, validates every payload with class-validator DTOs, and publishes a Swagger document.

The more instructive half of the project was the deployment. Rather than reach for a platform-as-a-service, the API was containerised and placed on ECS inside a hand-built VPC: two availability zones, public and private subnets, NAT egress, and a dedicated database subnet group for RDS. The repository carries a step-by-step record of that build-out.

Key Features:

  • Product and inventory movement tracking through a typed REST API
  • DTO validation and Swagger documentation on every endpoint
  • Material UI dashboard with Redux Toolkit state and client-side routing
  • Containerised API image for ECS deployment
  • Two-availability-zone VPC with public, private and database subnets
  • RDS PostgreSQL behind a dedicated subnet group
  • Written deployment runbook covering the full AWS console walkthrough

Tech Stack:

  • Backend: NestJS, TypeScript, Prisma, PostgreSQL
  • Frontend: React, TypeScript, Vite, Material UI, Redux Toolkit
  • Infrastructure: AWS VPC, ECS, RDS, Docker
— Stack
TypeScriptNestJSReactNode.jsPrismaPostgreSQLAWSDockerMaterial UIReduxVite