Skip to content

bskimball/astro-fastify-starter

Repository files navigation

*** Latest ***

I have updated to Astro v5 and React 19. I have removed Next ui and react-hook-form. I switched to using react actions api for forms.

Astro Fastify Starter

This is an example repo of having astro and fastify in the same app. This example is based on the fastify example in the node adapter section. The main difference is this uses TypeScript. It also has an example of using the trpc fastify adapter, so you have end-to-end type safety.

Blog Post

Auth

Auth was set up for Lucia but has been changed to the guide at Lucia-next. It's currently using username/password auth and storing to a session. That information is available to astro as well as fastify and trpc.

ORM

Data access is done using Drizzle, and the example is set up for an SQLite database.

🚀 Project Structure

Inside your Astro project, you'll see the following folders and files:

/
├── public/
│   └── favicon.svg
├── src/
│   ├── api/
│   │   └── server.ts
│   │   └── dev.ts
│   ├── components/
│   │   └── Card.astro
│   ├── layouts/
│   │   └── Layout.astro
│   |── pages/
│   |   └── index.astro
|   |-- middleware.ts
|   |-- schema.ts
|   |-- session.ts
└── run-server.mjs
└── package.json

🧞 Commands

All commands are run from the root of the project, from a terminal:

Command Action
npm install Installs dependencies
npm run dev Starts local dev server at localhost:4321
npm run build Build your production site to ./dist/
npm run start Start your production build
npm run astro ... Run CLI commands like astro add, astro check
npm run generate Generate schema
npm run migrate Run migrations
npm run studio Run Drizzle-kit Studio