Booki Documentation

Introduction

Overview of the Booki platform repositories and their roles.

The Booki platform is a multi-tenant booking system built on a Nuxt (SPA) frontend stack and an Express v5 backend. All apps share common infrastructure through two internal packages: codi-layer and codi-node-utils.

Repository Overview

booki-api

Express v5 REST API with Socket.IO. MongoDB (native driver), Redis cache, JWT auth, Joi validation.

codi-node-utils

Shared Node.js utilities published as @codisolutions23/node-utils. HTTP errors, auth middleware, DB/cache helpers.

codi-layer

Shared Nuxt layer. Contains base composables (useAuth, useBooking, useTenant…), plugins ($api, socket), and types used by all SPAs.

customer-booki-web-app

Customer-facing booking SPA. Subdomain-based multi-tenancy, Google Identity login.

owner-booki-web-app

Business owner dashboard. Manages bookings, staff, services, and payment methods.

admin-booki-web-app

Super-admin panel. Organization management, billing, SOA reports.

cms-booki-web-app

Public landing and organization registration pages.

Key Architectural Decisions

DecisionChoiceReason
Frontend renderingssr: false (SPA)All apps deployed to Cloudflare Pages as SPAs
Frontend UITailwind CSS v4 + DaisyUIComponent classes, theming, responsive layout
API routingNuxt route rules proxyAvoids CORS, hides API URL from client
DeploymentCloudflare Pages (nitro preset: cloudflare-pages)Each app deployed independently
HTTP client$fetch via $api pluginShared auth headers, 401 auto-redirect
Multi-tenancySubdomain (x-tenant-slug header)One customer app deployment per tenant via subdomain
AuthJWT (access + refresh cookies)Stateless, works across services
Database ORMNone — MongoDB native driverPerformance, flexibility
Validation (backend)JoiSchema-driven, consistent error messages
Validation (frontend)Custom useFormHandler composableLightweight, reactive