Files
thrilltrack-explorer/replit.md
pac7 f02ba17760 Improve project documentation with updated technical details
Update README with detailed descriptions of the frontend and backend architecture, including tech stacks, component structures, routing, and database schema.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: a759d451-40bf-440d-96f5-a19ad6af18a8
Replit-Commit-Checkpoint-Type: full_checkpoint
2025-10-07 15:27:03 +00:00

4.8 KiB

ThrillWiki - Theme Park & Ride Encyclopedia

Overview

ThrillWiki is a community-driven web application for discovering, reviewing, and tracking theme parks, rides, and related entities globally. Its core purpose is to provide a centralized platform for enthusiasts to research attractions and contribute to a collaborative knowledge base through user contributions and reviews, offering a comprehensive encyclopedia for the theme park world.

User Preferences

Preferred communication style: Simple, everyday language.

System Architecture

Frontend

  • Tech Stack: React + TypeScript with Vite, Radix UI + Tailwind CSS (shadcn/ui), TanStack Query for state management, React Router v6 for routing.
  • Component Structure: Utilizes layout, page-level, reusable UI, and custom domain components.
  • Design System: HSL-based color system, dark/light theme support, custom gradients, Inter font, responsive and mobile-first design.
  • State Management: TanStack Query for server state, React Context for authentication, custom hooks for business logic, and Realtime subscriptions for live updates.

Backend

  • Database (Supabase PostgreSQL): Stores core entities (parks, rides, companies), location data, review/rating systems, user profiles, content submission workflows, and image metadata.
  • Authentication & Authorization: Supabase Auth for user management (magic link, email/password), Cloudflare Turnstile for bot protection, role-based access control (user, moderator, admin, superuser), and Row-Level Security (RLS).
  • Content Moderation: Two-tier submission workflow with dependency tracking, conflict resolution, real-time updates for moderation queues, automated slug generation, and status tracking.
  • Data Access: Security definer functions for privileged operations, complex joins, aggregated data, full-text search, and real-time subscriptions.

Image Management

  • Cloudflare Images Integration: Used for media storage and transformation, with uploads proxied via Supabase Edge Functions. Supports multiple variants for responsive display and stores metadata in Supabase.
  • Upload Workflow: Uppy dashboard for multi-file uploads, image editor integration, progress tracking, and automatic resizing/optimization via Cloudflare.

Notification System (Novu)

  • Architecture: Multi-channel delivery (in-app, email, push), workflow-based templates, per-workflow user preferences, frequency controls, and headless notifications.
  • Features: Supports subscriber management and preference syncing via Supabase Edge Functions.

Search & Discovery

  • Multi-Entity Search: Unified search across parks, rides, and companies with autocomplete, recent history, category/type filtering, and advanced filters.
  • Location Features: Automatic unit conversion, geo-based preferences, and distance/measurement system settings.

User Management

  • Profile System: Customizable usernames, display names, avatars, bios, privacy controls, home park selection, and activity tracking.
  • User Blocking: Functionality to block users and hide their content.
  • Role Management: Hierarchical permission system for superuser, admin, moderator, and user roles, with role-specific UI and routes.

Admin & Moderation

  • Moderation Queue: Real-time monitoring of submissions, item-level approval/rejection, dependency conflict resolution, bulk actions, and status tracking.
  • Admin Settings: System-wide configuration with category-based organization and audit trails.
  • Reports System: Manages user-generated content reports with status workflows.

External Dependencies

Third-Party Services

  • Supabase: PostgreSQL database, authentication, real-time, Edge Functions, storage.
  • Cloudflare: Cloudflare Images for media storage/transformation, Turnstile for CAPTCHA.
  • Novu: Multi-channel notification delivery, workflow management.
  • Uppy: File upload interface and image editor.
  • Google Fonts: For the Inter typeface.
  • Radix UI: For accessible UI components.

API Integrations

  • Supabase Edge Functions:
    • upload-image: Cloudflare Images upload proxy.
    • trigger-novu-notification: Sends Novu notifications.
    • sync-novu-subscriber: Manages Novu subscribers.
    • sync-novu-preferences: Syncs notification preferences.
  • Database Functions (PostgreSQL): For privacy checks, role-based permissions, and automated tasks.

Environment Configuration

  • Requires VITE_NOVU_APPLICATION_IDENTIFIER, VITE_NOVU_SOCKET_URL, VITE_NOVU_API_URL, VITE_CLOUDFLARE_ACCOUNT_HASH, VITE_SUPABASE_URL, VITE_SUPABASE_ANON_KEY, VITE_TURNSTILE_SITE_KEY, and Cloudflare Images API credentials.
  • Utilizes feature flags for theme persistence, unit preferences, auto-detection for location settings, and notification channel preferences.