Calorina began with a narrower problem than a typical food-delivery website. The problem was more specific. People could order a meal in minutes, but anyone counting calories still had to search for nutrition information separately, make a rough estimate, and hope it was close.
That gap shaped the whole project: could the ordering screen do the calorie tracking at the same time?
Starting With the Menu, Not the Checkout
For Calorina, the menu had to do more than show a photograph and a price. Each dish needed useful nutrition information before the customer made a decision:
- calories per serving
- protein, carbohydrates, and fat
- allergen information
- portion choices
This sounds like a small addition. It was not. Once nutrition becomes part of the buying decision, it affects the data structure, admin tools, filters, meal plans, and even how much information can fit comfortably on a mobile screen.
Turning Individual Dishes Into a Weekly Plan
We did not want Calorina to feel like a spreadsheet with an order button. Customers can choose dishes around a calorie target, build a weekly meal plan, and check out once. The numbers are present when they are useful, but the main task still feels like ordering food.
On the kitchen side, the admin panel handles menu changes, daily order summaries, and live order statuses. An operations user can manage normal day-to-day tasks without opening the codebase for every change.
Why We Used This Stack
- Frontend: React, Vite, and Tailwind CSS
- Backend: CodeIgniter 4 REST API
- Database: MySQL
- Hosting: Hostinger shared hosting
The hosting setup mattered. The build targeted shared PHP hosting, so choosing a stack that needed a separate Node server or VPS would have added cost and maintenance without improving the customer experience. CodeIgniter 4 gave us a lean PHP backend that suited the existing environment.
What the Working Build Demonstrates
- more than 80 menu items with nutrition data
- 12 curated weekly meal plans
- a complete admin panel for menu and order management
- mobile load times below two seconds
Those numbers are useful, but the more important result was operational: an operations user could update the menu and manage orders without depending on a developer.
The Work We Nearly Underestimated
Entering nutrition data was the quiet, time-consuming part of the build. A health-focused food app is only as useful as the information behind each dish. Adding dozens of items one by one would have slowed the build and made future updates painful.
We built a bulk-import tool so the team could prepare dishes in a spreadsheet and bring them into the platform in minutes. It was not the most visible feature, but it removed one of the biggest practical bottlenecks.
What We Would Add Next
A future version could include barcode lookup for packaged ingredients. That would reduce manual entry further and help the kitchen keep nutrition details consistent as ingredients change.
Calorina was a good reminder that the strongest feature is not always the flashiest one. Here, showing calories mattered. Making that information manageable behind the scenes mattered just as much.