openvibers/afresume README.md

README.md

main 2.5 KB · 56 lines · markdown

1# alexfrison.net
2
3Personal site, portfolio and resume for Alex Frison. Built with [Astro](https://astro.build/),
4fully static, **zero CDN dependencies** in production (fonts, icons and the one JS library are
5vendored under `public/assets/vendor/`). Deployed to GitHub Pages on every push to `main`
6(`.github/workflows/deploy.yml`), served at https://alexfrison.net via the `public/CNAME` file.
7
8## Quick start
9
10```bash
11npm install
12npm run dev # http://localhost:4321
13npm run build # outputs dist/
14npm run preview # preview the built site
15npm run vendor:fetch # re-download pinned vendor libraries (only needed after editing the list)
16npm run resume:pdf # regenerate public/Alex_Frison_Resume_Sep_2026.pdf (needs python3 + reportlab)
17```
18
19## Where the content lives
20
21Everything the site and the PDF say comes from one set of files, so they never drift:
22
23| What | Where |
24|---|---|
25| Name, pitch, contact, metrics, network tiles, "open to" | `src/data/profile.json` |
26| Roles / experience | `src/content/experience/*.json` (sorted by `order`) |
27| Skill groups | `src/content/skills/*.json` |
28| Projects and case notes | `src/content/projects/*.mdx` (frontmatter + body) |
29| Site screenshots for the network section | `public/assets/img/sites/*.webp` |
30| Portrait | `public/assets/img/me-cut1.png`, `me-cut2.png` |
31
32Edit JSON or MDX, run `npm run build`, and push. To refresh the PDF after a content change run
33`npm run resume:pdf` and commit the regenerated file (the filename is read from
34`profile.resumePdf`, so bump it there when you want a new dated version).
35
36## Structure
37
38- `src/layouts/Base.astro`: head, SEO and JSON-LD, theme boot, smooth scroll (Lenis), reveal
39 animations, custom cursor, spotlight and tilt cards, magnetic buttons.
40- `src/components/`: `Hero` (aurora canvas, kinetic name, scramble rotator), `Metrics` (count-up),
41 `Marquee`, `Now`, `Network` (bento + architecture diagram), `ProjectGrid` (filterable),
42 `Timeline`, `Skills`, `Contact`, `Nav`, `Footer`.
43- `src/pages/`: `index`, `resume`, `portfolio`, `portfolio/[slug]`, `404`.
44- `resume/build_resume.py`: reportlab PDF builder driven by the same content files.
45- `scripts/fetch-vendor.mjs`: downloads the pinned vendor files.
46
47## Deploy
48
49Push to `main`. The workflow builds with Node 20 and publishes `dist/` to GitHub Pages. The custom
50domain is configured in the repository's Pages settings and pinned by `public/CNAME`.
51
52## License
53
54Code: MIT. Vendored libraries retain their own licenses, see `public/assets/vendor/README.md`.
55Content, copy and images are © Alex Frison.
56