This is a boilerplate for building web applications with Remix, Astro and Hono.
- Server side tech stack:
- Hono (for server)
- TypeScript
- Postgres
- DrizzleORM (to operate Postgres)
- Redis
- BullMQ (via Redis)
- Dashboard (via bull-board)
- Minio
- Auth (via Lucia)
- Stripe
- Emails (via Resend / Nodemailer)
- Magic Link / OTP
- Client side tech stack:
- TailwindCSS
- shadcn/ui
- react-router v7 (aka Remix v3, for app)
- Astro (for static content)
- Landing Page
- Hero
- Features
- Pricing
- Blog
- Docs (via Starlight)
- Landing Page
- Build system
- Vite
- BiomeJS (for linting and formatting)
- tsup (for server code bundling)
Hono has a lot of modern features that make it better than plain express (which I used to use) for building backend for any application (web, native app, API SaaS):
- Runtime agnostic
- Zod validator middleware
- Hono client (no need for tRPC)
- Request Streaming
- OpenAPI documentation generation
BullMQ is a Redis-backed task queue and it provides a lot of important functionalities for building a scalable application at the start. At the age of AI, it is increasingly common to run long-running tasks in the background (LLM request chains), handle rate-limiting, running I/O intensive tasks in JS via horizontal scaling, and even interop with Python code. BullMQ unlocks all the possibilities.
Remix (React-router v7) is used as SSR frontend for the web-app. Having a server-side rendered application frontend is safer and easier to manage states. At the time of writing, React-router v7 just released and does not have strong static generation library / framework available even if the feature is provided, so Astro is added alongside of the project to handle static content. Landing page, blog and documentations are all handled by Astro.