Nibblr Architecture

System architecture and technical overview of the Nibblr platform

System Overview

Platform Type

Nibblr is a restaurant discovery and review platform that connects users with restaurants, enabling them to browse menus, read reviews, and rate their dining experiences.

Key Features

  • • Restaurant listings and profiles
  • • Menu management and browsing
  • • User reviews and ratings
  • • User and restaurant analytics
  • • Restaurant owner management

Technology Stack

Backend

  • • Supabase (PostgreSQL)
  • • Row Level Security (RLS)
  • • Real-time Subscriptions
  • • RESTful API

Frontend

  • • Next.js 14+ (App Router)
  • • React 18+
  • • TypeScript
  • • Tailwind CSS

Services

  • • Supabase Auth
  • • Supabase Storage
  • • Analytics Service
  • • Database Client

Database Schema

users

FieldTypeDescription
idUUIDPrimary key, references auth.users
emailTEXTUser email address
full_nameTEXTUser's full name
user_typeTEXTType: 'restaurant' or 'user'
onboarding_completeBOOLEANOnboarding status flag
created_atTIMESTAMPAccount creation timestamp

restaurants

FieldTypeDescription
idUUIDPrimary key
nameTEXTRestaurant name
addressTEXTRestaurant address
cuisine_typeTEXTType of cuisine
ratingNUMERICAverage rating from reviews
user_idUUIDRestaurant owner (FK to users)
image_urlTEXTProfile image URL

menus

FieldTypeDescription
idUUIDPrimary key
restaurant_idUUIDForeign key to restaurants
nameTEXTMenu item name
descriptionTEXTMenu item description
priceNUMERICItem price
categoryTEXTMenu category

restaurant_reviews

FieldTypeDescription
idUUIDPrimary key
restaurant_idUUIDForeign key to restaurants
menu_idUUIDOptional: specific menu item review
user_idUUIDReviewer (FK to users)
ratingNUMERICRating (typically 1-5)
commentTEXTReview comment/feedback

System Architecture

Client Layer

Next.js Frontend

  • • Analytics Dashboard
  • • User Management
  • • Restaurant Management
  • • Data Visualization

Service Layer

Analytics Service

  • • Data Aggregation
  • • Statistics Calculation
  • • Time-based Queries
  • • Analytics API

Data Layer

Supabase PostgreSQL

  • • Users Table
  • • Restaurants Table
  • • Menus Table
  • • Reviews Table
API Calls

Integration Architecture

CREO Dashboard ↔ Nibblr Database

The CREO dashboard connects to a separate Nibblr Supabase database for analytics and data management. This separation allows for independent scaling and management of the two systems.

Connection Method

  • • Separate Supabase client instance
  • • Environment variables for connection
  • • Read-only access for analytics
  • • RESTful API through Supabase

Data Flow

  • • Query Nibblr database for analytics
  • • Aggregate statistics and metrics
  • • Display in CREO dashboard
  • • Real-time data updates

Key Components

lib/services/nibblr-analytics.ts

Service layer for fetching analytics data, user stats, restaurant stats, and usage metrics.

lib/supabase/nibblr-client.ts

Dedicated Supabase client instance configured to connect to the Nibblr database.

app/(dashboard)/nibblr/

Dashboard pages for analytics, user management, and restaurant management.