Featured Project

Zovex

Zovex

QR-based restaurant ordering and management platform with multi-tenant architecture.

Overview

Zovex is a QR-based restaurant ordering and management platform that lets guests order and pay from their phones while restaurants manage tables, orders, and analytics. Each restaurant gets a pre-hosted website on a custom subdomain (e.g., foodmaster.zovex.app) with customizable branding and live menu integration.

Problem

Restaurants relying on paper menus, manual order-taking, and static websites face slower service (8+ minutes from order to kitchen), frequent errors, and fragmented online presence. They also struggle with the cost and complexity of maintaining their own website infrastructure.

Key Issues

  • Manual order-taking increases wait times (8+ minutes) and leads to errors during peak hours
  • Paper menus and static PDFs are hard to update and provide no behavioral data
  • No unified system to manage tables, in-house orders, online orders, and payments together
  • High cost and technical complexity of hosting and maintaining a restaurant website
  • Restaurant owners struggle to maintain a modern, up-to-date website connected to their live menu
  • Lack of real-time visibility into order status and kitchen operations

Solution

A full-stack multi-tenant SaaS platform where guests scan a table QR to view the live menu, place orders, and pay online. Each restaurant gets a pre-hosted website on a custom subdomain with customizable branding and real-time menu synchronization.

Implementation Highlights

  • Architected and deployed a multi-tenant SaaS platform with real-time order management using optimized database queries and WebSockets
  • Built scalable subdomain-based architecture with tenant isolation, integrated payment orchestration (BYOK support), and ML-powered menu recommendations
  • Established testing pipeline with Pytest for backend services and Playwright for E2E flows; set up GitHub Actions for automated CI/CD deployment
  • Optimized concurrent request handling and implemented monitoring with Sentry for production error tracking
  • Implemented real-time menu synchronization so changes appear instantly across QR menus and public websites
  • Designed QR-based ordering flow that eliminates manual order-taking and reduces errors
  • Created live order management dashboard with real-time updates across all connected devices
  • Developed ML recommendation system using collaborative filtering and content-based signals from order history

Outcome

The platform streamlines in-restaurant ordering with 16x faster order-to-kitchen times (from 8 minutes to under 30 seconds), provides instant online presence through pre-hosted subdomains, and lays the groundwork for data-driven recommendations.

Key Results

  • Latency optimized architecture: Built a low-latency real-time order pipeline by optimizing database access patterns and introducing WebSocket-based push delivery.
  • Instant online presence with pre-hosted websites on custom subdomains (e.g., restaurantname.zovex.app)
  • Eliminated website hosting and maintenance costs for restaurant owners
  • Improved order accuracy by sending orders directly from guest devices to the kitchen dashboard
  • Centralized management of locations, tables, menus, orders, payments, and public website in a unified interface
  • Enabled restaurants to accept online payments via their own gateways while Zovex handles orchestration
  • Real-time updates across all devices using WebSocket implementation
  • Handling daily orders for multi-table restaurant environments in production

Challenges

Designing a platform that combines subdomain routing, real-time order management, table management, online ordering, website customization, BYOK payments, and ML-driven recommendations while achieving sub-30-second order times required careful performance optimization.

Technical Challenges

  • Implementing dynamic subdomain routing with Next.js middleware while maintaining clean separation between restaurant websites
  • Building multi-tenant architecture where each restaurant's website is isolated but shares infrastructure
  • Optimizing database queries and implementing WebSocket for real-time updates to achieve 16x performance improvement
  • Modeling tables, orders, menus, and websites so they stay in sync while serving both in-house and online guests
  • Keeping order and payment states consistent and traceable when using external payment providers
  • Ensuring low-latency, real-time updates between guest devices, owner dashboards, and kitchen views
  • Planning and implementing recommendation features while dealing with early cold-start and evolving data volume
  • Building comprehensive testing pipeline covering unit tests (Pytest) and E2E flows (Playwright)

Key Learnings

The project provided hands-on experience in building a production-ready vertical SaaS for restaurants that combines subdomain routing, real-time order management, QR ordering, website building, payments, ML features, and comprehensive testing/deployment pipelines.

What I Learned

  • Mastered performance optimization techniques reducing order processing time by 16x through database query optimization and WebSocket implementation
  • Mastered dynamic subdomain routing using Next.js middleware for multi-tenant SaaS architecture
  • Learned to design order and table lifecycles that work for both small single-location restaurants and more complex setups
  • Deepened understanding of the cold-start problem and how to shape the UX and data model to collect high-value behavioral data for ML
  • Gained experience implementing BYOK payment flows and reconciling external gateway states with internal order logic
  • Refined patterns for building real-time, observable systems with proper error monitoring using Sentry
  • Developed expertise in testing strategies with Pytest for backend and Playwright for E2E flows
  • Mastered CI/CD pipeline setup with GitHub Actions for automated deployments

Technologies Used

Next.jsFastAPIPostgreSQLTypeScriptSQLAlchemyTanStack QueryTailwind CSSSocket.IOSentryResendPytestPlaywrightGitHub Actions