Personal website and blog built with Astro 5, Tailwind CSS 4, and Markdown/MDX content.
- A static multilingual personal site (
en,ja,ko) — each locale served at/{locale}/ - A language-selection landing page at
/ - A blog powered by Astro Content Collections
- A GitHub Pages deployment target via GitHub Actions
- Not a backend service
- Not a user-authenticated web application
- Not a database-backed system
Prerequisites: Node.js LTS and npm.
git clone https://github.com/bachboy0/bachboy0.github.io.git
cd bachboy0.github.io
npm install
npm run devOpen http://localhost:4321.
Prerequisites: Docker (and optionally VS Code Dev Containers).
docker compose upThen run npm run dev in the container workspace if not already running.
No required .env file is currently documented for core site functionality.
| Variable | Example | Scope | Notes |
|---|---|---|---|
HOST |
0.0.0.0 |
Dockerfile | Container host binding |
PORT |
4321 |
Dockerfile | Astro port |
NODE_ENV |
development |
compose | Development container mode |
SSH_AUTH_SOCK |
/ssh-agent |
compose | SSH agent forwarding path |
Safe .env guidance:
- Do not commit
.env*files with secrets. - Use placeholder values in documentation only.
- Rotate any accidentally exposed credentials immediately.
ASSUMPTION: if future features require API keys, add .env.example with non-secret placeholders.
| Task | Command | Notes |
|---|---|---|
| Install dependencies | npm install |
Uses package-lock.json |
| Start development server | npm run dev |
Serves on port 4321 |
| Build production output | npm run build |
Outputs to dist/ |
| Preview production build | npm run preview |
Local preview server |
| Run Astro CLI | npm run astro -- <args> |
Example: npm run astro -- check |
There are currently no dedicated test, lint, or format npm scripts in package.json.
Documented and evidenced workflow:
- Pushes to
maintrigger deployment workflow (.github/workflows/deploy.yml).
Suggested workflow (ASSUMPTION):
- Create a feature branch.
- Commit small, focused changes.
- Open a pull request.
- Merge to
mainafter review.
- Deployment target: GitHub Pages
- Build/deploy workflow:
.github/workflows/deploy.yml - Trigger: push to
mainor manual workflow dispatch
For architecture details, see ARCHITECTURE.md.
-
Dev server not reachable from host
- Confirm port
4321is free and forwarded. - Verify
server.host: trueinastro.config.mjs.
- Confirm port
-
CSP warnings in local dev tools
- Astro dev tooling may inject inline styles/scripts.
- Check production behavior with
npm run build && npm run preview.
-
Blog route slug looks unexpected
- Route slug comes from
post.idwith locale suffix stripped insrc/pages/{en,ja,ko}/blog/[...slug].astro. - Review locale suffix handling (
post.id.replace(/${locale}$/, '')) in each locale route file. - See ADR-0005 for the locales-all-prefixed routing policy.
- Route slug comes from
-
Build fails on content schema
- Validate frontmatter fields against
src/content.config.ts. - Ensure
langis one ofen,ja,ko.
- Validate frontmatter fields against
-
Container starts but site not serving
- Confirm
npm run devis running in container shell. docker compose upalone may not start Astro dev server automatically.
- Confirm
- Keep changes scoped and documented.
- For docs/security/architecture changes, update relevant markdown files in the same PR.
- Verify local build before opening a PR:
npm run build
npm run previewMIT License. See LICENSE.