hatch-surf/site/README.md
Riley Zhang c006d03075 feat(site): integrate landing page redesign source code into repository
- 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>
2026-06-25 03:41:14 +02:00

116 lines
2.5 KiB
Markdown

# Hatch Static Site
This directory contains the static site for [hatch.surf](https://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:
1. Builds a Docker image with static files baked in
2. Pushes the image to the server
3. Restarts the container
### Manual Deployment
```bash
# From repo root
./scripts/deploy-site.sh
# Dry run
./scripts/deploy-site.sh --dry-run
```
### DNS Configuration
To point `hatch.surf` to your server:
1. Add A record pointing to your server IP
2. 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/www` dependency
- **Caddy**: Optional reverse proxy for TLS termination
- **Port 3000**: Internal port, proxied by Caddy on 80/443
## Local Development
To preview the site locally:
```bash
cd site
python3 -m http.server 8000
# Open http://localhost:8000
```
Or with Node.js:
```bash
npx serve site
```
### Docker
To run the site in Docker:
```bash
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:
```bash
docker compose down
# Or
docker stop $(docker ps -q --filter ancestor=hatch-homepage)
```
## SEO Checklist
- [x] H1 = title
- [x] Meta description ≤ 160 chars
- [x] Primary keyword in first 200 words
- [x] OG image set
- [x] Internal link to repo
- [x] Canonical URL set
- [x] Semantic HTML
- [x] Mobile responsive
- [x] Fast loading (static HTML/CSS)
## Adding New Posts
1. Create a new directory under `blog/`
2. Create an `index.html` file with the post content
3. Update `blog/index.html` to include the new post
4. Follow the same HTML structure as existing posts