Skip to content

derankin/cleanplated

Repository files navigation

Cleanplated Logo

Cleanplated

Cleanplated centralizes Southern California restaurant health inspection data and exposes normalized Trust Scores through a mobile-first directory.

Structure

  • backend/: Rust backend (clean architecture + ingestion scheduler)
  • frontend/: Vue 3 mobile-first client with IBM Carbon Design System
  • infra/terraform/: GCP bootstrap + deployment infrastructure
  • cloudbuild/: CI/CD configs for backend and frontend on main
  • docs/research/socal-food-safety-data-strategy.md: research blueprint and source references

Quick start

1. Environment Setup

# Copy the environment template
cp .env.example .env

# Edit .env and add your Google Maps API key (required for map functionality)
# VITE_GOOGLE_MAPS_API_KEY=your_api_key_here

Google Maps API Key Setup:

  1. Go to Google Cloud Console
  2. Create a new API key or use an existing one
  3. Enable the "Maps JavaScript API" for your project
  4. Configure API restrictions:
    • Application restrictions: HTTP referrers (websites)
    • Website restrictions: Add these URLs:
      • localhost:15173 (local development)
      • *.cleanplated.com/* (production, if applicable)
  5. Add the API key to your .env file

2. Start the Application

# Full stack with Docker Compose
docker compose up --build

# Seed the database with restaurant data (optional, for local development)
./scripts/seed-database.sh

Services:

  • Frontend: http://localhost:15173
  • Backend API: http://localhost:18080
  • Backend repository: PostgreSQL when DATABASE_URL is set (falls back to in-memory only if missing)
  • Postgres: internal compose service (postgres:5432) for local persistence
  • Redis: internal compose service (redis:6379, provisioned for planned caching migration)

Database Seeding

The local development environment starts with an empty database. To populate it with restaurant data for testing:

# After starting the main services
./scripts/seed-database.sh

This will fetch a subset of data from public health APIs to populate your local database. The process typically takes 2-5 minutes.

Manual seeding (alternative):

docker compose --profile seed run --rm seed

Cloud Build (main triggers)

After completing GitHub OAuth for the Cloud Build connection, run:

./scripts/create_cloudbuild_triggers.sh

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors