In production
Featured projectMayorista Javier Management System
- Challenge
- Orders were recorded on paper, and the business lacked reliable information about its actual stock levels, sales and profit margins. This limited visibility made supplier purchasing difficult to plan and left uncertainty about which products to reorder and in what quantities.
- My contribution
- Gathered and analyzed the business requirements and built the management system from the ground up. Handled deployment and continue to maintain the system, including its API, frontend and integration with the customer-facing website.
- Outcome
- The system keeps inventory up to date and saves approximately 15 minutes per order entered, according to the client’s estimate. It brings together monthly sales KPIs, best- and lowest-selling product rankings, profit margins and estimated sales for the month. Expiry alerts and stock information help prevent product losses and overbuying. It also keeps the product catalog on the customer-facing website up to date in real time.
C#
React 19
.NET 10
PostgreSQL
Explore technical decisions and features
Technical decisions
Separate the React 19 frontend from the C#/.NET 10 REST API and centralize business data in PostgreSQL using Entity Framework Core. Use TanStack Query for data fetching and caching, Zustand for state management and Zod for form validation. Protect endpoints with JWT authentication and role-based permissions, and hash passwords with BCrypt.NET. Generate PDFs in the API with QuestPDF and connect order and inventory management to the customer-facing web catalog.
A C# REST API running on .NET 10, using Entity Framework Core and Npgsql to access PostgreSQL. The frontend uses React 19, TypeScript and Vite, with React Router for navigation, TanStack Query for data fetching and caching, Zustand for state management, and React Hook Form with Zod for forms and validation. Recharts displays business performance indicators, while QuestPDF generates PDF documents in the API. Access is protected with JWT authentication and role-based permissions, with password hashing handled by BCrypt.NET.
- REST API with JWT-protected endpoints and role-based access control
- Password hashing with BCrypt.NET
- Automatic PDF order generation with QuestPDF
- React 19 frontend with TypeScript and Vite
- Data fetching and caching with TanStack Query; state management with Zustand
- Forms with React Hook Form and validation with Zod
- Interactive charts and business performance indicators with Recharts
- PostgreSQL persistence through Entity Framework Core and Npgsql
- Dashboard with performance indicators, reports and sales estimates
- Order entry and generation of print-ready documents
- Docker containers and tests with Vitest and xUnit
Technology stack checked against dependency manifests and code in the backoffice and API repositories. The approximately 15 minutes saved per order is a client estimate for the integrated catalog and management system workflow, not two separate savings.
Technology stack:
C#
React 19
.NET 10
PostgreSQL
TypeScript
Vite
- Entity Framework Core
- Npgsql
- QuestPDF
- JWT
- BCrypt.NET
- TanStack Query
- Zustand
- React Router
- React Hook Form
- Zod
- Recharts
Tailwind CSS
Docker
- Vitest
- xUnit



















