mirror of
https://github.com/andwati/andwati.com.git
synced 2026-11-04 08:42:16 +00:00
Replace Astro/Strapi site with Next.js static export
- Fresh structure: Next.js App Router + Tailwind v4 at the repo root, exported as static files (output: export) and served by static-web-server - Remove the Strapi CMS, Astro app, Pagefind search, comments, old scripts, Lighthouse config and compose files; content in content/ is now plain markdown with YAML frontmatter - Pages: About, Writing, Reading (3D bookshelf) and Portfolio, styled after adammaj.com - SEO: metadata and canonicals, JSON-LD, generated OG images, sitemap, robots, RSS and JSON feeds, llms.txt - Umami via PUBLIC_UMAMI_SCRIPT_URL / PUBLIC_UMAMI_WEBSITE_ID (build args) - Dockerfile builds the export and serves it with sws.toml (security headers, clean URLs, .well-known, OG image content type, immutable asset caching) - Prettier and cspell for content with a husky/lint-staged pre-commit hook - Old redirect list dropped to start from a clean slate
This commit is contained in:
@@ -1 +1,49 @@
|
||||
# andwati.com
|
||||
|
||||
Personal site: about, writing, reading and portfolio. Next.js (App Router) with Tailwind CSS v4, exported as static files and served by [static-web-server](https://static-web-server.net/).
|
||||
|
||||
## Develop
|
||||
|
||||
```sh
|
||||
pnpm install
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
## Content
|
||||
|
||||
Everything lives in `content/` as markdown with YAML frontmatter:
|
||||
|
||||
- `content/about.md` is the home page
|
||||
- `content/writing/*.md` are posts (`title`, `description`, `date`, `tags`)
|
||||
- `content/reading/*.md` are books and papers
|
||||
- `content/portfolio/*.md` are projects
|
||||
|
||||
Covers go in `public/covers/<slug>.jpg`. Math (`$...$`), code fences, callouts and YouTube embeds are supported.
|
||||
|
||||
## Checks
|
||||
|
||||
```sh
|
||||
pnpm check # Biome (code) + Prettier and cspell (content)
|
||||
pnpm format:content # format markdown
|
||||
```
|
||||
|
||||
A pre-commit hook runs these on staged files. Add project words to `.cspell/words.txt`.
|
||||
|
||||
## Analytics
|
||||
|
||||
Umami is loaded when both variables are set **at build time**:
|
||||
|
||||
```
|
||||
PUBLIC_UMAMI_SCRIPT_URL=https://analytics.andwati.com/script.js
|
||||
PUBLIC_UMAMI_WEBSITE_ID=...
|
||||
```
|
||||
|
||||
## Deploy
|
||||
|
||||
```sh
|
||||
docker build -t andwati-site \
|
||||
--build-arg PUBLIC_UMAMI_SCRIPT_URL=... \
|
||||
--build-arg PUBLIC_UMAMI_WEBSITE_ID=... .
|
||||
```
|
||||
|
||||
The image builds the static export (`out/`) and serves it with `sws.toml` (security headers, clean URLs, `.well-known`). In Dokploy, pass the two Umami variables as build args.
|
||||
|
||||
Reference in New Issue
Block a user