Architecture
ByteBite Tech Stack
Current ByteBite tech stack.
Applications
- Storefront: Next.js + React + TypeScript
- Dashboard: React + Vite + TypeScript + PWA
- API: Fastify + TypeScript
- Docs: Fumadocs
Frontend
- Tailwind CSS
- shadcn/ui in Dashboard
- Storefront uses fixed UX/layout with restaurant-specific branding
Backend
- Node.js
- Fastify
- REST
- Zod
- WebSockets
- DB-backed scheduler for 10-minute pending-order expiration
- no Redis/BullMQ initially
Data
- PostgreSQL
- Drizzle ORM
- shared database/shared schema multi-tenancy
- tenant isolation through
restaurant_id - PostGIS available when needed
Authentication
- Better Auth
- e-mail + password
- roles:
RESTAURANT,ADMIN - customer account optional; guest checkout supported
Payments
- BitePay powered by Stripe Connect
- Direct Charges
- Manual Capture
- optional application fee
- when fee is 0,
application_fee_amountis omitted - online methods: credit/debit card and Apple Pay
- offline methods: cash and card-at-door
Address & Delivery
- Mapbox Search
- Permanent Geocoding
- AddressProvider abstraction
- delivery precedence:
STREET > DISTRICT > POSTAL_CODE + CITY > CITY
Notifications
- AWS SES
- Twilio transactional SMS
- sender:
ByteBite
Storage
- Production: Backblaze B2
- Development: MinIO
Observability
- Sentry
- uptime monitoring
Repository & Tooling
- pnpm
- Turborepo
- TypeScript monorepo
- ADRs
- Fumadocs from day one
Development
Full Docker Compose environment with:
- Traefik
- Storefront HMR
- Dashboard HMR
- API watch mode
- PostgreSQL
- MinIO
.testdomains
Production
- Hetzner Dedicated Server
- Proxmox
- dedicated ByteBite VM
- public IPv4
88.99.0.118 - Docker
- Dokploy
- Traefik
- NPM not in ByteBite request path
- Cloudflare DNS for ByteBite-controlled domains
Not Used Initially
- Microservices
- Kubernetes
- Redis
- BullMQ
- native apps
- database per restaurant
- deployment per restaurant