How jjulian10/porto-esfirra works
Porto Esfirras is an online menu and order-management site. Customers browse the database-backed catalog, configure pickup or delivery, and submit orders; the server validates items and recalculates totals before persisting the order and, for Pix, creating a Mercado Pago order. Administrators manage orders, menu items, delivery zones, and store/payment settings. The README and sampled routes establish these API relationships; the storefront implementation and some storage internals were not sampled, so their wiring is shown only where documented.
Main entry points: index.ts D1 database access · page.tsx Storefront · catalog/route.ts Menu management API · settings/route.ts Store settings API
Components 19
Customer ordering
- Storefront
app/page.tsx
Store operations
- Admin panel
app/admin/page.tsx - Menu management API
app/api/admin/catalog/route.ts - Order management API
app/api/admin/orders/route.ts - Store settings API
app/api/admin/settings/route.ts - Admin authorization
lib/admin.ts
Order and catalog services
- Public catalog API
app/api/catalog/route.ts - Order checkout API
app/api/orders/route.ts - Order status API
app/api/orders/status/route.ts - Store data loader
lib/store.ts - Catalog utilities
lib/catalog.ts
Persistent data
- D1 database access
db/index.ts - Data schema
db/schema.ts - D1 database
Pix payments
- Payment state logic
lib/payment-state.ts - Mercado Pago client
lib/mercado-pago.ts - Payment webhook
app/api/webhooks/mercado-pago/route.ts
Other components
- Customer
- Mercado Pago
Connections 27
- Customer → Storefront: browses and submits
- Storefront → Public catalog API: loads catalog
- Public catalog API → Store data loader: loads store data
- Storefront → Order checkout API: submits checkout
- Storefront → Order status API: checks status
- Admin panel → Order management API: loads and updates
- Admin panel → Menu management API: loads and edits
- Admin panel → Store settings API: loads and saves
- Order management API → Admin authorization: checks access
- Menu management API → Admin authorization: checks access
- Store settings API → Admin authorization: checks access
- Menu management API → Store data loader: loads catalog
- Store settings API → Store data loader: loads settings
- Order checkout API → Store data loader: loads catalog and settings
- Order checkout API → Mercado Pago client: creates Pix order
- Payment webhook → Mercado Pago client: verifies and fetches
- Payment webhook → Payment state logic: calculates payment state
- Order checkout API → D1 database access: reads and writes orders
- Order status API → D1 database access: reads order status
- Order management API → D1 database access: reads and updates orders
- Menu management API → D1 database access: writes products
- Store settings API → D1 database access: writes settings and zones
- Payment webhook → D1 database access: reads and updates payment
- D1 database access → D1 database: queries
- Data schema → D1 database access: defines tables
- Mercado Pago client → Mercado Pago: creates and queries orders
- Mercado Pago → Payment webhook: sends notifications