Full-StackSolo: designed, built, and deployed from scratch

Glam Gallery

Admin dashboard for an online art store: products, inventory, orders, and campaign analytics.

Admin dashboard

Overview

Running an online store means managing products, inventory, orders, campaigns, and media across tools that rarely connect. Glam Gallery consolidates every operational concern into one admin interface, with each module handling exactly one operational domain.

The design prioritizes clarity and structured data. Clean module separation means admin users work inside one context at a time, without visual competition from unrelated data.

Collections

Goal

Admin tools get cluttered because they try to surface everything at once. The goal was clean module separation: one section per operational concern, with layout that makes the current context immediately clear.

  • Build a multi-section admin dashboard
  • Design structured data tables and filtering systems
  • Create reusable layout and component architecture
  • Provide analytics and reporting visibility across all modules
  • Maintain visual consistency across inventory, orders, and analytics sections
Inventory management

Outcome

Built modular, with each management section owning one operational area. Products, orders, analytics, and media are independently navigable without visual competition between modules.

  • Product and collection management with live inventory tracking
  • Inventory tracking with low stock and out-of-stock alerts
  • Orders and customer handling with payment and fulfillment status
  • Media library system with folder organization and uploads
  • Campaign and performance analytics with 2.45M impressions and 320% ROI
  • Reporting and traffic insights with Core Web Vitals monitoring
Order management

Tech Stack

  • Next.jsNext.js
  • TypeScriptTypeScript
  • Tailwind CSSTailwind CSS
  • Shadcn UI
  • SupabaseSupabase
  • PostgreSQLPostgreSQL

Technical Decisions

01

One module per operational domain

Admin interfaces get cluttered when modules share layout and compete for attention. Each concern (products, inventory, orders, campaigns, traffic, media) is a self-contained section with its own data layer. This made it possible to scope access per module and extend any section without touching the rest of the codebase.

02

PostgreSQL over a document store for product data

Products have variants, collections, inventory levels, and order relationships. The join complexity of product → variant → order → customer maps naturally to relational tables. A document store would have required significant denormalization to support the filtering and reporting queries the analytics module needs.

03

Shadcn UI for data tables and status systems

Six admin modules each needed consistent data tables with sorting, filtering, status badges, and pagination. A shared table primitive from Shadcn ensured visual consistency across modules without re-implementing table behavior six times.

6

Admin modules

6

Order status states

24

Campaigns tracked

Folder-based

Media organization

Campaign analytics
Traffic analytics