Source for cv.conorob.me, a static CV site built with Astro and Tailwind CSS.
Requires Node 24+ (see .nvmrc) and pnpm (version pinned via packageManager, run corepack enable once).
| Command | Action |
|---|---|
pnpm install |
Install dependencies |
pnpm dev |
Start the dev server at localhost:4321 |
pnpm build |
Build the site to ./dist/ |
pnpm preview |
Preview the production build locally |
pnpm lint |
Lint and format check with Biome |
pnpm format |
Apply Biome formatting and safe lint fixes |
pnpm typecheck |
Type-check with astro check and tsc |
pnpm check |
Run lint and typecheck (same as CI) |
All CV content lives in src/content as Markdown and YAML files, with schemas defined in src/content.config.ts. Technology badge icons use Iconify class names (e.g. icon-[logos--aws]).
The site is deployed on Railway from the Dockerfile: a Node stage builds the static site and Caddy serves dist/ on $PORT. Railway infrastructure is defined in .railway/railway.ts (see .railway/README.md).
To run the production image locally:
docker build -t cv .
docker run --rm -p 8080:8080 cv- https://github.com/srleom/astro-theme-resume: https://astro-theme-resume.vercel.app
- https://github.com/KonradSzwarc/devscard: https://devscard.netlify.app
- https://github.com/henriqgoncalvs/website: https://www.henriqgoncalvs.com
- https://github.com/coding-in-public/astro-content-collections-overview: https://youtu.be/Fcw4c3wzm7I?si=SIm2OMsDeCRtsy42
- fix error when processing images with sharp image service
- add dynamic year in footer
- add save pdf button