- Update deployment scripts to use Docker with static files baked in - Remove host volume mount in favor of self-contained Docker image - Add verification script to ensure correct content is deployed - Update documentation to reflect new deployment architecture - Ensure build process produces correct output without manual copying Closes ELF-268 Co-Authored-By: Paperclip <noreply@paperclip.ing> |
||
|---|---|---|
| .. | ||
| blog | ||
| brand | ||
| .dockerignore | ||
| docker-compose.yml | ||
| Dockerfile | ||
| index.html | ||
| main.js | ||
| README.md | ||
| style.css | ||
Hatch Static Site
This directory contains the static site for hatch.surf.
Structure
site/
├── index.html # Landing page
├── style.css # Global styles
├── blog/
│ ├── index.html # Blog index
│ └── why-we-are-building-hatch/
│ └── index.html # Blog post
└── brand/
├── og/
│ └── default.png # Open Graph image
└── favicon/
├── favicon.ico
└── favicon-*.png # Various sizes
Deployment
The site is deployed via Docker to the hatch.surf server. Static files are baked into the Docker image — no host directory mounting required.
Docker Deployment
The GitHub Actions workflow (deploy-site.yml) automatically:
- Builds a Docker image with static files baked in
- Pushes the image to the server
- Restarts the container
Manual Deployment
# From repo root
./scripts/deploy-site.sh
# Dry run
./scripts/deploy-site.sh --dry-run
DNS Configuration
To point hatch.surf to your server:
- Add A record pointing to your server IP
- Enable HTTPS via Caddy or Let's Encrypt
Architecture
The deployment uses:
- Docker image: nginx:alpine with static files baked in
- No host mounts: Image is self-contained, no
/var/wwwdependency - Caddy: Optional reverse proxy for TLS termination
- Port 3000: Internal port, proxied by Caddy on 80/443
Local Development
To preview the site locally:
cd site
python3 -m http.server 8000
# Open http://localhost:8000
Or with Node.js:
npx serve site
Docker
To run the site in Docker:
cd site
# Build and run with docker compose
docker compose up -d
# Or build and run with docker
docker build -t hatch-homepage .
docker run -d -p 3000:80 hatch-homepage
The site will be available at http://localhost:3000
To stop the container:
docker compose down
# Or
docker stop $(docker ps -q --filter ancestor=hatch-homepage)
SEO Checklist
- H1 = title
- Meta description ≤ 160 chars
- Primary keyword in first 200 words
- OG image set
- Internal link to repo
- Canonical URL set
- Semantic HTML
- Mobile responsive
- Fast loading (static HTML/CSS)
Adding New Posts
- Create a new directory under
blog/ - Create an
index.htmlfile with the post content - Update
blog/index.htmlto include the new post - Follow the same HTML structure as existing posts