diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..8a87a51 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,63 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +This is a static website project ("Puercito Fiction" / "Hola") deployed using nginx in a Docker container. The site is automatically deployed to a VM via Gitea Actions when changes are pushed to the main branch. + +## Architecture + +- **Static Site**: HTML/CSS files located in `site/` directory +- **Web Server**: nginx Alpine container serving static files +- **Deployment**: Docker Compose orchestration with automated CI/CD via Gitea Actions +- **nginx Configuration**: Custom config in `nginx.conf` with gzip compression, security headers, static asset caching, and SPA fallback routing + +## Development Commands + +### Local Development + +```bash +# Build and run the Docker container locally +docker-compose up -d --build + +# View logs +docker-compose logs -f + +# Stop the container +docker-compose down + +# Access the site +# http://localhost:8080 +``` + +### Testing Changes + +After making changes to files in `site/`, rebuild and restart: +```bash +docker-compose down && docker-compose up -d --build +``` + +### Deployment + +Deployment is automatic on push to main branch via `.gitea/workflows/deploy.yml`. The workflow: +1. Checks out code on VM +2. Pulls latest changes +3. Rebuilds and restarts containers via `docker-compose` + +Manual deployment requires SSH access to the VM with credentials stored in Gitea secrets. + +## File Structure + +- `site/` - Static website files (HTML, CSS) +- `nginx.conf` - nginx server configuration +- `Dockerfile` - Container image definition (nginx:alpine base) +- `docker-compose.yml` - Container orchestration config +- `.gitea/workflows/deploy.yml` - CI/CD pipeline configuration + +## Important Notes + +- The site runs on port 8080 locally (mapped from container port 80) +- nginx config includes SPA fallback routing (`try_files $uri $uri/ /index.html`) +- Static assets are cached for 1 year with immutable cache control +- Health checks monitor nginx availability every 30 seconds \ No newline at end of file