Imoran ai LogoImoran ai Logo

Full Control: E-Commerce Admin Panel with React & TypeScript

The admin half of Fasco: a React + TypeScript + Supabase dashboard where the store owner manages inventory, watches revenue, recovers abandoned carts, and controls user roles at the database level.

Published: November 15, 2025

Last updated: June 30, 2026

image of the article

This is the other half of Fasco. The shopper-facing store has its own writeup; this is the admin panel the store owner logs into to actually run the business.

A shopping cart is the easy part of e-commerce. The admin side, inventory, orders, who-bought-what, refunds, is where the real work lives. I built it with React, TypeScript, and Vite on top of the same Supabase backend the storefront uses.

The dashboard answers one question first

When the owner logs in, the first screen answers "how is the business doing right now": total revenue, products sold, customer count, and stock on hand. Under that, the top-selling products and a live feed of recent transactions.

I kept this screen deliberately plain. An admin dashboard is something you check ten times a day, so it should load fast and show you the state of things at a glance instead of making you hunt.

Inventory, with real CRUD

Product management is full create, read, update, delete: add a product, edit price and description, swap images, adjust stock. TypeScript earned its keep here. A product has a specific shape, and once that type was defined, a whole class of bugs (a missing price, the wrong image field) turned into compile errors instead of broken pages in production.

Catching abandoned carts

This is my favourite feature, because it ties the two halves of the app together. Carts live in Supabase tied to a user, so the admin can see exactly who added items and never checked out. That turns a lost sale into a list of people to email a discount to. The data was already sitting there; I just surfaced it.

Roles and access that the database enforces

The Customers section lists every user, and an admin can change a role or remove an account. The part that matters isn't the UI, it's that Supabase row-level security decides what each role can touch at the database level. A regular user physically cannot query another user's orders, no matter what the frontend asks for.

A support channel built into the product

There's a support page that emails me, the developer, directly. A store owner who can't reach the person who built their site will quietly abandon it, so I wired that line of communication straight into the panel.

Frequently asked questions

What can the admin panel do?

Manage inventory with full create/read/update/delete, watch revenue and stock at a glance, spot abandoned carts, and control user roles, all on the same Supabase backend as the store.

How is access controlled?

Supabase row-level security decides what each role can read at the database level, so a regular user can't reach another user's orders no matter what the frontend asks for.

Can you build an admin dashboard for my product?

Yes. The admin side is most of the real work in any app, and it's something I build often. Get in touch.

Let's Work
Together

Hand Reaching

Have a project in mind? We'd love to hear about it. Let's create something great together!

PRODUCT DEVELOPERUI ENGINEERMVP DEVELOPMENTFRONTEND DEVELOPMENTPRODUCT DEVELOPERUI ENGINEERMVP DEVELOPMENTFRONTEND DEVELOPMENTPRODUCT DEVELOPERUI ENGINEERMVP DEVELOPMENTFRONTEND DEVELOPMENT