Full-Stack Platform
Sirenbase
Built for a working coffeehouse, this modular platform replaces fragmented daily workflows with fast, accountable digital operations.
Next.js · React · TypeScript · Tailwind CSS · ShadCN/Radix · Flask · SQLAlchemy · PostgreSQL · JWT · Vercel + Render + Neon
The Problem
Daily friction that adds up
Working in a coffeehouse exposes daily processes that silently drain time and energy. Ordering, counting, and restocking rely on outdated, repetitive workflows — tasks that feel simple but stack up into constant friction.
Inventory Ordering
Daily ordering lacks a reliable source of truth. Inventory changes throughout the day without shared visibility, forcing partners to compensate with time, repetition, and caution. What should be a straightforward decision becomes a recurring liability.
Milk Ordering
Daily milk orders rely on slow, manual processes that pile up frustration and errors. Partners track totals, carry numbers forward, and calculate orders by hand every day, turning a routine task into repetitive friction.
Display Restocking
Daily restocking depends on repeated checks and back-and-forth trips, as missing items are easy to overlook. Partners spend time verifying what’s needed instead of acting, turning a routine task into a slow, frustrating cycle.
The Solution
Three tools, one platform
A Next.js frontend backed by a Flask REST API and PostgreSQL database. Partners log in once and access all three tools from a central dashboard. The dashboard doubles as an operational overview — surfacing milk order progress and time since the last restock so partners know what’s done and what’s overdue without opening each tool.
01
Inventory Tracking
A shared, real-time inventory system that gives every partner immediate visibility into current stock. Items are identified by unique 4-digit codes written directly on them for fast physical lookup. A single search field queries across names, codes, and categories. Every add and remove is logged with ownership and timestamp, creating a persistent audit trail.
02
Milk Order
A structured daily workflow that walks partners through each counting phase in sequence — no steps can be skipped, no math is done by hand. The system collects stock levels from multiple locations, handles all calculations automatically, and logs every completed session. Par levels are admin-configurable.
03
RTD&E Counting
A guided restocking workflow that presents items one at a time, compares counts against par levels, and generates a pull list with exact quantities. Partners count what’s on the display — the app tells them what to pull. Sessions expire after 30 minutes to prevent stale data from carrying over.
Impact
What changes on the floor
Every tool targets a specific daily bottleneck I experienced firsthand. The improvements below are based on the actual workflows I performed and timed against the original processes.
Inventory Tracking
more efficient
to verify stock per order
order accuracy
changes tracked
Milk Order
more efficient
per daily count
steps to complete
calculations
RTD&E Restocking
more efficient
per restock cycle
to restock
tracked
Technical Decisions
Architecture shaped by constraints
The architecture behind Sirenbase was shaped by one constraint: this platform needed to support multiple independent tools without any of them interfering with each other — and it needed to be built in a way where adding a fourth tool wouldn’t require touching the first three.
/api/tracking/*, /api/milk-order/*, /api/rtde/*). The database uses prefixed tables per tool (tracking_items, milk_order_sessions, rtde_count_sessions) sharing only a central users table. The frontend mirrors this with nested route trees under /tools/. Authentication, UI components, and the design system are shared — everything else is namespaced. This wasn't how the project started. Migration #3 renamed the original tables to add the tracking_ prefix — the moment the architecture shifted from single-tool to multi-tool.create_all() and drop_all() bracketing per test, no shared state, no interdependencies.Methodology
Built with AI
Looking Forward
What I'd build next
IMS Integration for Milk Order
The milk order workflow currently requires partners to manually enter on-order quantities from the store’s Inventory Management System. With direct IMS access, those numbers would populate automatically — removing a manual step and eliminating transcription errors. Combined with the existing count data and par levels, the system could then calculate and pre-fill the final milk order automatically.
CI/CD Pipeline
The 226 tests exist but run manually. A GitHub Actions pipeline would gate every push to main and enforce the testing discipline that’s currently a convention into an automated requirement.
About me
Precise and fast-learning software engineer with experience in Python, JavaScript, Typescript, React, Next, Flask, SQL databases, SQLAlchemy, APIs, AWS Cloud Services, TailwindCss and MaterialUI. Adept at designing, developing, and troubleshooting full-stack applications, with a focus on responsive design, data security, and scalable solutions. Known for a blend of technical expertise, problem-solving skills, and an adaptable mindset.
© 2025 John John Penafiel. All Rights Reserved. Build with Next.js, Typescript, and TailwindCSS. 🛠️



