Files
flyer-crawler.projectium.com/docs/getting-started/QUICKSTART.md
Torben Sorensen 9f3a070612
All checks were successful
Deploy to Test Environment / deploy-to-test (push) Successful in 19m20s
have dev continer send more to bugsink
2026-01-22 15:47:59 -08:00

4.8 KiB

Quick Start Guide

Get Flyer Crawler running in 5 minutes.

Prerequisites

  • Windows 10/11 with WSL 2
  • Podman Desktop installed
  • Node.js 20+ installed

1. Start Containers (1 minute)

# Start PostgreSQL and Redis
podman start flyer-crawler-postgres flyer-crawler-redis

# If containers don't exist yet, create them:
podman run -d --name flyer-crawler-postgres \
  -e POSTGRES_USER=postgres \
  -e POSTGRES_PASSWORD=postgres \
  -e POSTGRES_DB=flyer_crawler_dev \
  -p 5432:5432 \
  docker.io/postgis/postgis:15-3.3

podman run -d --name flyer-crawler-redis \
  -p 6379:6379 \
  docker.io/library/redis:alpine

2. Initialize Database (2 minutes)

# Wait for PostgreSQL to be ready
podman exec flyer-crawler-postgres pg_isready -U postgres

# Install extensions
podman exec flyer-crawler-postgres psql -U postgres -d flyer_crawler_dev \
  -c "CREATE EXTENSION IF NOT EXISTS postgis; CREATE EXTENSION IF NOT EXISTS pg_trgm; CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"

# Apply schema
podman exec -i flyer-crawler-postgres psql -U postgres -d flyer_crawler_dev < sql/master_schema_rollup.sql

3. Configure Environment (1 minute)

Create .env.local in the project root:

# Database
DB_HOST=localhost
DB_USER=postgres
DB_PASSWORD=postgres
DB_NAME=flyer_crawler_dev
DB_PORT=5432

# Redis
REDIS_URL=redis://localhost:6379

# Application
NODE_ENV=development
PORT=3001
FRONTEND_URL=http://localhost:5173

# Secrets (generate your own)
JWT_SECRET=your-dev-jwt-secret-at-least-32-chars-long
SESSION_SECRET=your-dev-session-secret-at-least-32-chars-long

# AI Services (get your own keys)
VITE_GOOGLE_GENAI_API_KEY=your-google-genai-api-key
GOOGLE_MAPS_API_KEY=your-google-maps-api-key

4. Install & Run (1 minute)

# Install dependencies (first time only)
npm install

# Start development server
npm run dev

5. Access Application

Dev Container (HTTPS)

When using the full dev container with NGINX, access via HTTPS:

Note: The dev container accepts both localhost and 127.0.0.1 for HTTPS connections. The self-signed certificate is valid for both hostnames.

SSL Certificate Warnings: To eliminate browser security warnings for self-signed certificates, install the mkcert CA certificate. See certs/README.md for platform-specific installation instructions. This is optional but recommended for a better development experience.

Dev Container Architecture

The dev container uses PM2 for process management, matching production (ADR-014):

Process Description Port
flyer-crawler-api-dev API server (tsx watch) 3001
flyer-crawler-worker-dev Background job worker -
flyer-crawler-vite-dev Vite frontend dev server 5173

PM2 Commands (run inside container):

# View process status
podman exec -it flyer-crawler-dev pm2 status

# View logs (all processes)
podman exec -it flyer-crawler-dev pm2 logs

# Restart all processes
podman exec -it flyer-crawler-dev pm2 restart all

# Restart specific process
podman exec -it flyer-crawler-dev pm2 restart flyer-crawler-api-dev

Verify Installation

# Check containers are running
podman ps

# Test database connection
podman exec flyer-crawler-postgres psql -U postgres -d flyer_crawler_dev -c "SELECT version();"

# Run tests (in dev container)
podman exec -it flyer-crawler-dev npm run test:unit

Common Issues

"Unable to connect to Podman socket"

podman machine start

"Connection refused" to PostgreSQL

Wait a few seconds for PostgreSQL to initialize:

podman exec flyer-crawler-postgres pg_isready -U postgres

Port 5432 or 6379 already in use

Stop conflicting services or change port mappings:

# Use different host port
podman run -d --name flyer-crawler-postgres -p 5433:5432 ...

Then update DB_PORT=5433 in .env.local.

Next Steps

Development Workflow

# Daily workflow
podman start flyer-crawler-postgres flyer-crawler-redis
npm run dev
# ... make changes ...
npm test
git commit

For detailed setup instructions, see INSTALL.md.