CRISTYSNACKS.EXE · Management system for a real business

PROJECT 09 / 11 · Web

Cristy Snacks.

The web app that replaced the spreadsheets of Cristy Snack’s, a nuts and snacks business in Hermosillo: inventory, sales, supplier orders exported to Excel, expenses and profit — on the owner’s iPhone, iPad or laptop.

  • Client project
  • Web
  • 2026
Client project NEXT.JS 16 · SUPABASE · SHEETJS

01 / IMAGE_VIEWER.EXE

Evidence gallery.

Real screenshots, one per step of each flow. Use the arrows or the thumbnails, and enlarge any image to see it whole.

02 / STACK.INI

Tech stack.

What each piece does in this project. Hover over a tool, tap it or tab into the list to light it up.

  • Next.js 16 · React 19Eight modules in a single signed-in app
  • TypeScriptTyped products, sales and orders
  • SupabaseEmail sign-in and data shared across devices
  • PostgreSQLSix tables with row-level security
  • SheetJS (xlsx)Supplier order in the supplier’s Excel format
  • CSSHand-written, mobile-first, large touch targets
  • VercelHosting and deploys
  • GitHub ActionsKeep-alive ping to Supabase every 5 days

03 / README.TXT

About the project.

README.TXT

Problem

The owner ran the business on Excel files: inventory, sales, expenses and supplier orders. On an iPhone or iPad that was clumsy, there was no automatic sales history, orders were copied by hand into the supplier’s format and the real profit was anyone’s guess.

Solution

A responsive web app built around the daily routine: tap products to register a sale and the stock updates itself, use + and − to build the supplier order and download it in their exact Excel format, log expenses by category and see sales, expenses and net profit by day, week or month.

Key features

  1. DashboardSales, expenses and net profit for today, this week or this month, plus low-stock alerts, best sellers and inventory value.
  2. Product catalogThe real catalog is preloaded when the account is created; full create, edit and delete, category filters, search and seven sizes, from a full bag to a kilo.
  3. InventoryQuick + / − buttons, bulk stock entry and an audit trail: every change is logged as a movement with its reason.
  4. Fast salesTap products, adjust quantities and register; the stock goes down on its own and the sale lands in the history.
  5. Supplier orders in ExcelChoose quantities with + / −, see the total live and download an .xlsx in the supplier’s exact format, delivery fee included.
  6. ExpensesCustom categories (labels, bags, delivery…), quick entry with date and description, and a summary by category and period.
  7. SettingsBusiness details, the profit split between partners (30/70, 50/50…), expense categories and the low-stock threshold.
  8. Private and multi-deviceEach account only sees its own data, and the same login works on the iPhone, the iPad and the laptop.
Ready UTF-8 · LF · 34 L

04 / ARCHITECTURE.SYS

How it works.

Components and data flow, taken from the source code.

ARCHITECTURE.SYS

OWNER’S DEVICES

  • iPhone · iPad · laptopResponsive web app
  • Next.js 16 app8 modules running in the browser (served by Vercel)
  • SheetJSBuilds the order .xlsx on the device

SUPABASE

  • AuthEmail + password
  • Postgres + RLSproducts · sales · expenses · orders · inventory_movements · settings

GITHUB ACTIONS

  • keep-alive.ymlScheduled workflow (cron)
Architecture diagram — The browser does the work (modules and Excel export) against Supabase; a scheduled job keeps the project awake.

Data flow, step by step

  1. Creating the account seeds the real catalog (with stock at zero) and the default business settings for that user.
  2. Each module reads and writes its tables directly with supabase-js; row-level security limits every query to the signed-in user.
  3. Registering a sale inserts the sale, lowers each product’s stock and logs an out movement for every item.
  4. The supplier order becomes an Excel file right in the browser with SheetJS, and a copy is saved to the orders table.
  5. A scheduled GitHub Action pings the Supabase API every five days so the free-tier project isn’t paused for inactivity.

Engineering notes

  • Built for touchLarge buttons and + / − controls instead of typing, with a collapsible sidebar on phones — designed around how the owner actually works.
  • Audit trail by designStock never changes silently: every sale, entry or adjustment writes to inventory_movements with its reason.
  • The supplier’s format, not oursThe Excel export reproduces the layout the supplier already used, so the order can be sent as is.
  • Lean dependenciesOnly Next.js, Supabase and SheetJS — hand-written CSS, no UI kit — to keep the app light and easy to maintain.

05 / PROPERTIES.CPL

Project properties.

PROPERTIES.CPL · Cristy Snacks

Platform
Responsive web — Next.js 16 on Vercel
Type
Inventory, sales and finance management
Status
Delivered to the business
Year
2026
My role
Full-stack development
Built for
Cristy Snack’s — Hermosillo, Sonora
Repository
On requestIt holds the supplier’s catalog

06 / LINKS.LNK