Food commerce platform
FreshPick / FreshOnTime
A premium food-commerce platform for Colombo bringing together fresh groceries, local products, prepared meals, recurring delivery and business ordering in one customer experience.
Product work and architecture overview by Savi Saluwadana.
What it does
- Who it serves
- Grocery shoppers, local producers, business buyers and administrators.
- Product purpose
- Food commerce, producer onboarding and scheduled recurring deliveries in Colombo.
- Catalog browsing, product discovery and customer shopping.
- Producer onboarding, admin operations and business enquiries.
- Subscription baskets and recurring-order delivery scheduling.
- Public read-only catalog tools through MCP.
How it works
- A shopper chooses catalog items or a recurring basket.
- Next.js validates the request and domain services persist orders through Prisma.
- PostgreSQL holds catalog, order and delivery state; scheduling advances due deliveries.
- Media and transactional messages use their configured storage and email integrations.
Architecture
Next.js → Prisma / PostgreSQL → recurring delivery + media storage
| Component | Responsibility |
|---|---|
| Next.js | Storefront, producer and admin interfaces, API routes and public MCP catalog access. |
| Prisma + PostgreSQL | Catalog, order, subscription and delivery records. |
| Scheduled workflows | Recurring deliveries and transactional communications. |
| Storage adapter | Durable product and editorial images. |
Current scope
Customer checkout and subscription baskets currently use cash on delivery. Automatic recurring card charging is not implemented. Subscription baskets and recurring grocery orders are distinct workflows.
Architecture summary reviewed . Repository documentation.
Contributor notes
Run locally
Set development environment variables; npm ci; npm run db:migrate; npm run dev
Design decision
Next.js route handlers enforce commerce rules using Prisma and PostgreSQL.
Trade-off
One app keeps order transitions together; background jobs and integrations need separate scheduling.
Unfinished
Automatic recurring card charging is not implemented; agentic commerce is planned.
Licence: No licence identified