Personal website built with Next.js (Pages Router) and TypeScript. It renders profile content plus the latest public GitHub repositories and Medium articles, fetched at build time and deployed as a static export on GitHub Pages.
Live site: https://rodrigocastilho.com/
Requires Node.js 24.x (.nvmrc) and Yarn.
nvm use
yarn install
yarn devBefore opening a PR, run the full verification suite:
yarn lint && yarn prettier --check . && yarn typecheck && yarn buildyarn start is not supported with static export; serve out/ with a static file server to check the build.
.env.local is optional. NEXT_PUBLIC_GA_TRACKING_ID (Google Analytics measurement ID, read at build time) enables analytics and the cookie consent banner; when unset, neither renders. CI reads it from an Actions variable of the same name.
Pushes to master (or a manual dispatch) run .github/workflows/nextjs.yml: lint, Prettier check, typecheck, static build, then deploy out/ to GitHub Pages. Custom domain: public/CNAME.
Never commit to master; branch and open a pull request.
- API overview:
public/docs/api.md; OpenAPI contract:public/docs/api/openapi.json - Agent registration contract:
public/auth.md - Discovery metadata:
public/.well-known/ - GitHub Pages ignores the
Link/Varyrules inpublic/_headersand thevercel.jsonrewrites. Fetch/index.mddirectly instead of usingAccept: text/markdown.
AGENTS.md: project guide (structure, commands, conventions, CI/CD, constraints)DESIGN.md: architecture decisions and rationaleCLAUDE.md: Claude-specific setupSECURITY.md: vulnerability reporting