# Google Reviews Scraper Pro - Claude Code Instructions ## Quick Start ### Run with NUC Database (Recommended) The PostgreSQL database is hosted on the NUC server. Only the API runs locally. ```bash # Use NUC database config cp .env.nuc .env # Start API only (connects to NUC database) docker compose -f docker-compose.production.yml -f docker-compose.nuc.yml up -d # View logs docker compose -f docker-compose.production.yml logs -f api ``` ### Run Fully Local (Legacy) Runs both PostgreSQL and API locally. ```bash # Use local database config cp .env.example .env # Edit .env with your settings # Start all services docker compose -f docker-compose.production.yml up -d ``` ## NUC Database Connection | Property | Value | |----------|-------| | Host | 192.168.1.3 | | Port | 5437 | | Database | scraper | | User | scraper | | Password | scraper_nuc_2026 | | Coolify UUID | g4s8w4csk8s8ocswg48kkogo | ```bash # Direct connection psql postgresql://scraper:scraper_nuc_2026@192.168.1.3:5437/scraper # Via SSH tunnel (if needed) ssh -L 5437:localhost:5437 nuc ``` ## Service URLs | Service | URL | |---------|-----| | API | http://localhost:8001 | | API Docs | http://localhost:8001/docs | | VNC (browser debugging) | http://localhost:6080 | | VNC (client) | vnc://localhost:5900 | ## Common Commands ```bash # Start services docker compose -f docker-compose.production.yml -f docker-compose.nuc.yml up -d # Stop services docker compose -f docker-compose.production.yml -f docker-compose.nuc.yml down # View API logs docker logs -f scraper-api # Rebuild API after code changes docker compose -f docker-compose.production.yml -f docker-compose.nuc.yml up -d --build api # Run a scrape job (example) curl -X POST http://localhost:8001/api/jobs \ -H "Content-Type: application/json" \ -d '{"url": "https://www.google.com/maps/place/..."}' # Check job status curl http://localhost:8001/api/jobs/{job_id} ``` ## Database Management ```bash # Connect to NUC database docker run --rm -it postgres:15-alpine psql postgresql://scraper:scraper_nuc_2026@192.168.1.3:5437/scraper # Backup database ssh nuc "docker exec postgres-g4s8w4csk8s8ocswg48kkogo pg_dump -U scraper scraper" > backup.sql # Restore database cat backup.sql | ssh nuc "docker exec -i postgres-g4s8w4csk8s8ocswg48kkogo psql -U scraper scraper" ``` ## Project Structure ``` ├── api/ # FastAPI backend ├── packages/ │ ├── pipeline-core/ # Shared pipeline utilities │ └── reviewiq-pipeline/ # Review analysis pipeline ├── web/ # Next.js frontend (optional) ├── db/init/ # Database initialization scripts ├── docker-compose.production.yml # Main compose file ├── docker-compose.nuc.yml # NUC database override ├── .env.nuc # NUC environment config └── Dockerfile # API container build ``` ## Troubleshooting ### API can't connect to NUC database ```bash # Check NUC is reachable nc -zv 192.168.1.3 5437 # Check database is running ssh nuc "docker ps | grep postgres-g4s8w4csk8s8ocswg48kkogo" # Restart database on NUC ssh nuc "docker restart postgres-g4s8w4csk8s8ocswg48kkogo" ``` ### Chrome/Scraping issues ```bash # Check VNC for visual debugging open http://localhost:6080 # Increase shared memory if crashes # Edit docker-compose: shm_size: 4gb ``` ## Environment Variables | Variable | Description | Default | |----------|-------------|---------| | DATABASE_URL | PostgreSQL connection string | (required) | | API_BASE_URL | Public API URL | http://localhost:8001 | | MAX_CONCURRENT_JOBS | Parallel scrape jobs | 5 | | OPENAI_API_KEY | For ReviewIQ analysis | (optional) | | ANTHROPIC_API_KEY | For ReviewIQ analysis | (optional) |