Skip to content

Sawangg/blog

Repository files navigation

Leo Mercier's blog

My personal blog built to host my articles. Here is a list of the features:

  • Minimal dependencies, build output is less than 1MB
  • Custom-built auth system, with oauth providers
  • Edge network compatible, working with all popular runtimes
  • Lighthouse 100% on all metrics on all pages
  • A+ on security, with headers, strict CSP & security.txt
  • SEO optimization with robots.txt & sitemap
  • Perfect accessibility with light and dark modes, with client page transitions
  • No vendor lock-in, self-hostable with 100% of the features by changing the deploy commands and the adapter (e.g. @astro/node)

Tech stack

astro react tailwindcss DrizzleORM postgresql

Development

bun biome typescript

TODO

  • CI/CD Actions (test, deployment to staging)
  • Add headers links and summary on the left of the page
  • Add analytics
  • Remove React to use web components
  • Add SRI

Known Issues

  • If you're hosting on Cloudflare, you need to disable Speed Brain. This features isn't compatible with a strict CSP and prefetching is already done inside Astro.
  • CSP nonce is currently generated in the middleware which defeats the purpose of a strong CSP. There is no alternatives currently in Astro.
  • Some environment variables should have their access restricted to secret instead of public in astro.config.ts. Currently, I can't make secrets work using Cloudflare. This is not critical (if you share the build output with someone, they could potentially extract your secrets).
  • Currently BiomeJS partialy supports Astro files. The component script is linted/formatted but not the template part. See the documentation

References

The custom authentification was heavely inspired by the great Lucia Auth project

About

My personal blog using AstroJS, React and my own UI

Resources

License

Stars

Watchers

Forks