# Installation Guide This guide covers setting up a local development environment for Flyer Crawler. ## Prerequisites - Node.js 20.x or later - Access to a PostgreSQL database (local or remote) - Redis instance (for session management) - Google Gemini API key - Google Maps API key (for geocoding) ## Quick Start If you already have PostgreSQL and Redis configured: ```bash # Install dependencies npm install # Run in development mode npm run dev ``` --- ## Development Environment with Podman (Recommended for Windows) This approach uses Podman with an Ubuntu container for a consistent development environment. ### Step 1: Install Prerequisites on Windows 1. **Install WSL 2**: Podman on Windows relies on the Windows Subsystem for Linux. ```powershell wsl --install ``` Run this in an administrator PowerShell. 2. **Install Podman Desktop**: Download and install [Podman Desktop for Windows](https://podman-desktop.io/). ### Step 2: Set Up Podman 1. **Initialize Podman**: Launch Podman Desktop. It will automatically set up its WSL 2 machine. 2. **Start Podman**: Ensure the Podman machine is running from the Podman Desktop interface. ### Step 3: Set Up the Ubuntu Container 1. **Pull Ubuntu Image**: ```bash podman pull ubuntu:latest ``` 2. **Create a Podman Volume** (persists node_modules between container restarts): ```bash podman volume create node_modules_cache ``` 3. **Run the Ubuntu Container**: Open a terminal in your project's root directory and run: ```bash podman run -it -p 3001:3001 -p 5173:5173 --name flyer-dev \ -v "$(pwd):/app" \ -v "node_modules_cache:/app/node_modules" \ ubuntu:latest ``` | Flag | Purpose | | ------------------------------------------- | ------------------------------------------------ | | `-p 3001:3001` | Forwards the backend server port | | `-p 5173:5173` | Forwards the Vite frontend server port | | `--name flyer-dev` | Names the container for easy reference | | `-v "...:/app"` | Mounts your project directory into the container | | `-v "node_modules_cache:/app/node_modules"` | Mounts the named volume for node_modules | ### Step 4: Configure the Ubuntu Environment You are now inside the Ubuntu container's shell. 1. **Update Package Lists**: ```bash apt-get update ``` 2. **Install Dependencies**: ```bash apt-get install -y curl git curl -sL https://deb.nodesource.com/setup_20.x | bash - apt-get install -y nodejs ``` 3. **Navigate to Project Directory**: ```bash cd /app ``` 4. **Install Project Dependencies**: ```bash npm install ``` ### Step 5: Run the Development Server ```bash npm run dev ``` ### Step 6: Access the Application - **Frontend**: http://localhost:5173 - **Backend API**: http://localhost:3001 ### Managing the Container | Action | Command | | --------------------- | -------------------------------- | | Stop the container | Press `Ctrl+C`, then type `exit` | | Restart the container | `podman start -a -i flyer-dev` | | Remove the container | `podman rm flyer-dev` | --- ## Environment Variables This project is configured to run in a CI/CD environment and does not use `.env` files. All configuration must be provided as environment variables. For local development, you can export these in your shell or use your IDE's environment configuration: | Variable | Description | | --------------------------- | ------------------------------------- | | `DB_HOST` | PostgreSQL server hostname | | `DB_USER` | PostgreSQL username | | `DB_PASSWORD` | PostgreSQL password | | `DB_DATABASE_PROD` | Production database name | | `JWT_SECRET` | Secret string for signing auth tokens | | `VITE_GOOGLE_GENAI_API_KEY` | Google Gemini API key | | `GOOGLE_MAPS_API_KEY` | Google Maps Geocoding API key | | `REDIS_PASSWORD_PROD` | Production Redis password | | `REDIS_PASSWORD_TEST` | Test Redis password | --- ## Seeding Development Users To create initial test accounts (`admin@example.com` and `user@example.com`): ```bash npm run seed ``` After running, you may need to restart your IDE's TypeScript server to pick up any generated types. --- ## Next Steps - [Database Setup](DATABASE.md) - Set up PostgreSQL with required extensions - [Authentication Setup](AUTHENTICATION.md) - Configure OAuth providers - [Deployment Guide](DEPLOYMENT.md) - Deploy to production