Portfolio
·This is a simple website to showcase some cool things I have made over the years.
I like this website, so here it is.
Architecture
The deployment architecture is straight forward: when code is pushed to the cloud, it is built and deployed to GitHub Pages. The latest version of the site is then always showcased.
Portfolio deployment architecture
Internationalization (i18n)
Astro offers a first party i18n solution, storing the selected locale in the url. Since they use a file-based approach to routing, this means that every file must be created twice.
I did not want to duplicate everything and risk messing up on styles.
However, Astro can also generate all missing pages at compile time while specifying which language it is currently targeting.
Using the available Astro.currentLocale
field, it is easy to create a custom i18n solution that only duplicates text, and nothing else!
Tech stack
- Astro, for these reasons:
- Components
- Easy archive generation
- 1st party i18n support
- Markdown support
- Scoped styles (it was either this or Tailwind, and it had been a while since I wrote CSS directly 🤷)
- Sass, because I like to nest styles together.
- TypeScript, because I can’t be trusted and it is supported by default by Astro.
That is it. I did not want to use extra dependencies, so I did not.