How gankhulugd/petti-shop works
Petti Shop is a Mongolian pet-products store composed of a Next.js storefront, a separate admin app, and a Hono API backed by Drizzle/D1. The primary customer journey is browsing and filtering the catalog, managing a cart, and checking out; customers can also track orders and manage wishlists. Admins manage products, orders, and dashboard data. The README documents the broad product flows; sampled source confirms selected BFF proxy handlers, admin data fetching, API route registration, and database schema. Other internal links are limited to those documented relationships.
Main entry points: app.ts API application · api-client.ts Admin API client · queries.ts Database queries · app Admin pages
Components 23
Storefront
- Storefront pages
client/app - Catalog and filters
client/components/shop/ShopPageClient.tsx - Product details
client/components/product/ProductDetailView.tsx - Wishlist
client/components/wishlist/WishlistPageClient.tsx
Shopping and orders
- Cart state
client/store/useCart.ts - Checkout
client/app/checkout/page.tsx - Order tracking
client/app/track/page.tsx
Admin console
- Admin pages
admin/app - Dashboard data
admin/lib/fetch-dashboard.ts - Product management
admin/components/product-form.tsx - Order management
admin/components/orders-view.tsx - Admin API client
admin/lib/api-client.ts
API services
- Client API proxy
client/lib/bff-proxy.ts - Catalog proxy route
client/app/api/catalog/route.ts - Order lookup route
client/app/api/orders/lookup/route.ts - API application
server/src/app.ts - Public catalog routes
server/src/routes/public-catalog.ts - Public order routes
server/src/routes/public-orders.ts - Admin routes
server/src/routes/admin-products.ts
Persistence
- Database queries
server/src/db/queries.ts - Commerce schema
server/src/db/schema.ts
Other components
- Shopper
- Cloudflare D1
Connections 29
- Shopper → Storefront pages: browses
- Storefront pages → Catalog and filters: shows catalog
- Shopper → Product details: views products
- Shopper → Wishlist: manages wishlist
- Shopper → Cart state: manages cart
- Shopper → Checkout: checks out
- Shopper → Order tracking: tracks order
- Catalog and filters → Cart state: opens cart
client/components/shop/ShopPageClient.tsx - Catalog proxy route → Client API proxy: proxies catalog
client/app/api/catalog/route.ts - Order lookup route → Client API proxy: proxies lookup
client/app/api/orders/lookup/route.ts - Admin pages → Dashboard data: loads dashboard
admin/app/page.tsx - Admin pages → Product management: manages products
- Admin pages → Order management: manages orders
- Dashboard data → Admin API client: fetches data
- Product management → Admin API client: uses API
- Order management → Admin API client: uses API
- Checkout → Public order routes: creates orders
- Order tracking → Order lookup route: looks up orders
- Client API proxy → API application: forwards requests
- API application → Public catalog routes: registers routes
server/src/app.ts - API application → Public order routes: registers routes
server/src/app.ts - API application → Admin routes: registers routes
server/src/app.ts - Admin API client → API application: calls API
- Public catalog routes → Database queries: reads catalog
- Public order routes → Database queries: stores orders
- Admin routes → Database queries: manages products
- Database queries → Commerce schema: uses schema
- Commerce schema → Cloudflare D1: persists data
- Shopper → Storefront pages: uses search