/ Case study · Internal tools
Stock control system
A full-stack application to manage inventory for purchasing and withdrawals: items by category, recorded movements, low-stock threshold alerts and dashboards that differ by role (employee, purchasing manager, administrator). Designed for field and desktop use, with clear flows and data persisted in a relational database. It has its own visual identity: a logo and icon set drawn from scratch, built on the idea of a grid of slots where one is empty. The public demo shows the same kind of flow with sample data.
- Role
- Full-stack development and modelling of permissions and inventory flows.
- Duration
- Personal project / portfolio demo
- Client
- Ministerio de Comunicación Pública
- Year
- 2026
Screenshots

Sign in 
Dashboard: units in stock, low-stock strip and quick actions 
Item list: a filled slot when stock is fine, an amber ring when it is low 
Withdraw items 
Low-stock alerts 
Movement history (manager and admin) 
User administration (admin only, sample data) 
Bulk import from Excel 
Dashboard on desktop 
Item list on desktop 
Purchasing metrics with Excel export (sample data)
The problem
Controlling stock takes more than a loose spreadsheet: you need to record inbound and outbound movements, see what is below the minimum, audit who moved what and limit sensitive views by role, without complicating the team's day-to-day.
The solution
A web app with a dashboard (totals and alerts), item list and detail, purchases, withdrawals with notes, categories, history and metrics for authorised profiles, plus bulk import from Excel and user administration (including a link flow to create or reset passwords). Session and JWT authentication and roles (for example ADMIN, JEFE_COMPRAS, EMPLEADO) that condition history, metrics, exports and user management.
Technical details
Front end
- Next.js (App Router)
- React
- TypeScript
- Material UI (MUI)
- Tailwind CSS
Back end
- Next.js (Route Handlers and server actions)
- Internal API for login and administration
Data
- MySQL
- Prisma ORM
Features
- Dashboard with total items and a low-stock counter
- Stock by category, item detail and soft delete where applicable
- Purchases (inbound) and withdrawals (outbound) with user traceability
- Alerts by configurable low-stock threshold
- History and metrics with role-based permissions
- Excel export (metrics) and import from .xlsx / .xls
- Login and user management for administrators
Deploy
- Netlify
Result
- Working inventory demo with roles
- Less friction when loading data in bulk
- A base ready to extend to a real environment
Demo access
Test accounts to explore the demo.
- Employee — user: testEmpleado, password: test123
- Purchasing manager — user: testJefe, password: test123