I'm excited to launch my new site https://briantakita.me. The Typescript/Javascript ecosystem has made important advancement over the past few years to support development from small scale to large scale websites & applications., ,This site is forked from AstroPaper theme. I made some modifications & will go through them in this post., ,This is a static site is a monorepo built with:, ,- bunjs,- astrojs,- Nano Stores,- ctx-core,- solidjs,- TailwindCSS, ,It is deployed to Vercel.
Monorepo
For simplicity & ease of distribution, most Astro Themes are built in a single repository. I broke up the project into monorepo, where the libraries & apps are broken into separate git repos. This provides structure to where the code is deployed to & how it's used while enabling code re-use for other projects.
The git repos include:
- btakita/briantakita.me-dev — monorepo with git submodules to other libraries
- btakita/briantakita.me — briantakita.me astro app
- btakita/domain--all--blog — domain library targeting the browser & server for blogs
- btakita/domain--server — domain library targeting the server
- btakita/domain--server--blog — domain logic targeting the server for blogs
- btakita/ui--all--blog — UI library targeting the browser & server for blogs
- btakita/ui--server--blog — UI library targeting the server for blogs
Tech Stack
Solidjs provides benefits over other isomorphic component frameworks (e.g. React):
- A more comprehensible API & more natural integration with the DOM API
Reactive Signals —
cleaner component state management- Smaller payload (from Introducing the SolidJS UI Library)
- Fast
- Less code needed for components
- JSX — function components facilitate composition (compared to single file components with Vue or Svelte)
Full-stack global state management with ctx-core & nanostores
ctx-core with nanostores enables libraries & apps to easily share state management[2].