Personal one-page portfolio for Sebastian Rojas. Built with Astro 5 (static output), vanilla JS, and hand-crafted CSS. No frameworks. Deployed to GitHub Pages.
- Runtime: Node 22
- Framework: Astro 5 (output: static)
- Language: TypeScript (strict) for data; vanilla JS for interactivity
- CSS: plain CSS (no Tailwind, no preprocessors)
- Tests: Vitest (unit) + Playwright (e2e)
| Action | Command |
|---|---|
| Install | npm install |
| Dev | npm run dev |
| Build | npm run build |
| Preview | npm run preview |
| Test (unit) | npm test |
| Test (e2e) | npm run test:e2e |
| Lint | npm run check |
Deployed at https://sreddx.github.io/Rojas-web/.
astro.config.mjs:
site: 'https://sreddx.github.io',
base: '/Rojas-web/',GitHub Actions workflow in .github/workflows/deploy.yml handles CI/CD on push to main.
To deploy:
- Create repository
Sreddx/Rojas-webon GitHub. - Push the
mainbranch. - In repository Settings, go to Pages and set source to "GitHub Actions".
- Push to
mainor trigger "Deploy to GitHub Pages" manually from the Actions tab.
If deploying from a repository named Sreddx.github.io (the GitHub user pages repo), the site is served from the root. Change astro.config.mjs to:
site: 'https://sreddx.github.io',
base: '/',The script tags in src/layouts/Layout.astro use import.meta.env.BASE_URL and will update automatically when base changes. No other hardcoded paths need updating.
npm install
npm run dev # http://localhost:4321/Rojas-web/
npm run build
npm run preview # http://localhost:4321/Rojas-web/