Files
highland_games_website/README.md
T
Mathew 1d2c48cb93
Deploy / deploy (push) Successful in 1m3s
Renomme le jeu en Emberwild + déploiement Gitea Actions
- Jeu « Project One » → « Emberwild » (slug `emberwild`) dans lib/games.ts
  et toutes les références (accueil, devblog, README)
- Photo d'équipe (CEO/dev) câblée sur /image/teams/CEO_Dev.jpg
- CI/CD porté de GitHub Actions vers Gitea Actions
  (.gitea/workflows/deploy.yml) : build + déploiement auto au push sur master
- deploy.sh : déploiement manuel de secours

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 20:48:41 +02:00

91 lines
3.1 KiB
Markdown

# Highland Games Studio — Website
Marketing and devblog site for Highland Games Studio. _Where summits become worlds._
Built with **Next.js 16** (App Router), **React 19**, **Tailwind CSS 4** and **Framer Motion**.
Devblog posts are authored in MDX and rendered with `next-mdx-remote`.
## Getting started
```bash
npm install
npm run dev
```
Open [http://localhost:3000](http://localhost:3000).
## Scripts
| Command | Description |
| ------------------ | ---------------------------------------- |
| `npm run dev` | Start the dev server |
| `npm run build` | Production build |
| `npm run start` | Serve the production build |
| `npm run lint` | Run ESLint |
To regenerate the favicon from the studio logo (requires `sharp`):
```bash
node scripts/build-favicon.mjs
```
## Project structure
```text
app/ Routes, layouts, server actions, metadata (sitemap/robots/feed/OG)
app/components/ Shared UI (Navbar, Footer, forms, social links)
content/devblog/ Devblog posts as .mdx (frontmatter: title, date, excerpt, tags, game)
lib/ Data + helpers (games registry, devblog loader, site URL)
public/ Static assets (studio logos, hero video)
scripts/ One-off build scripts (favicon generation)
```
## Configuration
Copy `.env.example` to `.env.local` and fill in the values.
- **Site URL** — set `NEXT_PUBLIC_SITE_URL` per environment (used by metadata, sitemap,
robots, RSS and JSON-LD). Defaults to `https://highlandgamesstudio.com` — see `lib/site.ts`.
- **Contact form (Resend)** — the contact form sends email via [Resend](https://resend.com).
Set `RESEND_API_KEY`, `CONTACT_TO_EMAIL` (who receives messages) and `CONTACT_FROM_EMAIL`
(sender, must be on a domain verified in Resend). Without these, the form returns a
friendly error instead of sending. See `app/actions/contact.ts`.
## Adding a devblog post
Create a file in `content/devblog/`, e.g. `2026-06-01-my-post.mdx`:
```mdx
---
title: "My post title"
date: "2026-06-01"
excerpt: "One-line summary for listings and SEO."
author: "Highland Games Studio"
tags: ["devlog"]
game: "emberwild"
---
Your MDX content here.
```
## Deployment
Pushes to `master` deploy to the Hetzner server via the Gitea Actions workflow
(`.gitea/workflows/deploy.yml`), which SSHes in, pulls, builds, and restarts the
PM2 process (`highland`, in `/var/www/highland`).
Requires these **repo secrets** (Gitea → repo → Settings → Actions → Secrets):
`SSH_HOST`, `SSH_USER`, `SSH_PORT`, `SSH_PRIVATE_KEY`.
Server-side prerequisites (one-time):
- A registered Gitea `act_runner` with the `ubuntu-latest` label.
- `/var/www/highland` is a clone of this repo whose `origin` can pull the **private**
Gitea repo non-interactively (deploy key or token in the remote URL).
- Node + `pm2` installed, with the app running as the `highland` process.
## Known TODOs
- Wire the newsletter form to a real email provider (contact form now uses Resend).
- Replace placeholder content (game, team members, social links).