Emmanuel Hernandez
The Rise the Fenua admin dashboard, on demo data: a stats row, ordered versus made by size, and value by item
All work

08 2026

Rise the Fenua

Rise the Fenua is a nonprofit that gets school supplies to kids in Tahiti. Part of how it raises money is merchandise: shirts, crewnecks, totes and stickers, released in drops with collab partners.

I built the admin the volunteers run that fulfillment from. It keeps a catalog and stock count for every collab, imports the orders that come in through Google Forms, and turns them into a production board that says which sizes are ready to print and which still need blanks.

The screens on this page are a September 2026 redesign of that admin, running on demo data. They aren't the volunteers' live dashboard, and none of the numbers are real.

Role
Software Engineering Intern
Stack
Next.js, TypeScript, Tailwind CSS, Supabase (Postgres)
Users
20+ volunteers
Screens
September 2026 redesign, demo data

Screens

A September 2026 redesign of the admin on demo data, not the live dashboard. Every number is made up.

  1. 01

    In stock

    Every item in a collab with its price, a stock count you can nudge with + and − or type over, and a badge when it drops below the collab's threshold.

    In stock
  2. 02

    Production

    Ordered against blanks on hand and shirts made, per size, with a status on each row: done, ready to print, needs more blanks, or no blanks.

    Production
  3. 03

    Orders

    Each Google Form import is kept as its own batch, so a bad one can be deleted without touching the rest.

    Orders
  4. 04

    Collabs

    One row per collab, each with its own low-stock threshold and item count.

    Collabs

What it does

Collabs and a catalog
Each drop is a collab with its own items. A default catalog of six items comes pre-priced, and custom items cover anything it doesn't.
Stock and low-stock warnings
Adjust a count with + and − or type an exact number. Each collab sets its own threshold, and anything below it is flagged across the admin.
Order import
Google Form responses come in as CSV, with columns excluded or renamed on the way in. Every import stays a separate batch you can review or delete.
Production tracking
Ordered, blanks on hand, made and ready to print, per size, with a print list you can export.

How it's built

Frontend
Next.js App Router in TypeScript, with Tailwind CSS.
Data
Supabase Postgres, with collabs, items, order entries and production items as tables. Six SQL migrations, including auth and row-level security.
Import
A CSV parser that normalizes Google Form responses before they reach the database.

What I built

  1. 01Built the production dashboard that 20+ volunteers use for merchandise fulfillment and coordination.
  2. 02Wrote the SQL migrations and the import that normalizes Google Form responses, which cut manual processing time by 40%.