Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/syhner/elysia-kickstart

ElysiaJS boilerplate with HTMX, Tailwind, Auth.js, Drizzle, CI. Deploy in one click to Railway or Vercel Edge Functions
https://github.com/syhner/elysia-kickstart

authjs boilerplate bun docker drizzle elysiajs github-actions htmx tailwindcss turso vercel-edge-functions

Last synced: 2 months ago
JSON representation

ElysiaJS boilerplate with HTMX, Tailwind, Auth.js, Drizzle, CI. Deploy in one click to Railway or Vercel Edge Functions

Awesome Lists containing this project

README

        

## elysia-kickstart

Feature packed ElysiaJS boilerplate. Edge ready. Deploy with one click.

Taken inspiration from https://github.com/ethanniser/the-beth-stack.

## 📚 Features

### Core

- 🏗️ [**TypeScript**](https://www.typescriptlang.org/) - Configured to maximize type safety
- 🐉 [**ElysiaJS**](https://elysiajs.com/) - Fast and Bun friendly server framework
- 📐 [**HTMX**](https://www.typescriptlang.org/) - High power tools for HTML
- 💽 [**Drizzle**](https://orm.drizzle.team/) - ORM with maximal type safety
- 🔒 [**Auth.js**](https://authjs.dev) - Flexible and secure authentication
- 🔗 integrates with Drizzle to store auth data

### Development

- 📏 [**ESLint**](https://eslint.org/) - Consistent code standards
- ✨ [**Prettier**](https://prettier.io/) - Consistent code styling
- 🎨 [**Tailwind CSS**](https://tailwindcss.com/) - Utility-first CSS framework
- 💻 [**VS Code configurations**](https://code.visualstudio.com/) - Configurations for extensions

### Deployment

- 🐳 [**Docker**](https://www.docker.com/) - (local and production) Docker-compose and Dockerfiles for running anywhere
- 🔄 [**GitHub Actions**](https://github.com/features/actions) - Robust CI/CD

## 🌱 Getting started

🚀 **Option 1: Clone and deploy**

- To Railway (deployed with Docker)

[![Deploy on Railway](https://railway.app/button.svg)](https://railway.app/template/UguE-M?referralCode=Q9UMnd)

- To Vercel Edge Functions (see the [Railway template](https://railway.app/template/UguE-M?referralCode=Q9UMnd) for required environment variables, as well as `RUNTIME=edge`)

[![Vercel](https://vercel.com/button)](https://vercel.com/new/clone?s=https%3A%2F%2Fgithub.com%2FSyhner%2Felysia-kickstart)

📋 **Option 2: Clone and run locally**

1. [Fork this repository](https://github.com/syhner/elysia-kickstart/fork) (uncheck 'Copy the `main` branch only` if you are interested in other branches / feature sets)
2. Clone your new repository
3. Install dependencies and run the development server

- with [bun](https://bun.sh/docs/installation)

```sh
bun install
bun run dev
```

- or with [Docker](https://docs.docker.com/get-docker/)

```sh
docker-compose --file docker/dev/docker-compose.yml up
```

## ⚙️ Configuration

### [Docker](https://www.docker.com/)

- [`.dockerignore`](.dockerignore)
- [`docker/`](docker/) - Dockerfile and docker-compose.yml for development and production

### [Drizzle](https://orm.drizzle.team/)

- [`src/db/`](src/db/)
- [`src/lib/db.ts`](src/lib/db.ts)
- [`drizzle.config.ts`](drizzle.config.ts)

### [ESLint](https://eslint.org/)

- [`.eslintrc.json`](.eslintrc.json)

### [GitHub Actions](https://github.com/features/actions)

- [`.github/workflows/ci.yml`](.github/workflows/ci.yml) - type-checking and linting (hence these errors are ignored in [`next.config.mjs`](next.config.mjs))

### [HTMX](https://htmx.org/)

- [`public/[email protected]`](public/[email protected])
- [`types/htmx.d.ts`](types/htmx.d.ts) - typed HTMX attributes for intellisense and autocompletion

### [NextAuth](https://next-auth.js.org/)

- [`src/app/api/auth/index.ts`](src/app/api/auth/index.ts)
- [`src/app/components/auth.tsx`](src/app/components/auth.tsx)
- [`src/db/schemas/auth.ts`](src/db/schemas/auth.ts) — store auth data (users, accounts, sessions, verification tokens) in database
- [`src/hooks/isAuthenticated.ts`](src/hooks/isAuthenticated.ts)
- [`src/lib/auth.ts`](src/lib/auth.ts)

### [Prettier](https://prettier.io/)

- [`.eslintrc.json`](.eslintrc.json)
- [`.prettierignore`](.prettierignore)
- [`.prettierrc.json`](.prettierrc.json)

### [Tailwind CSS](https://tailwindcss.com/)

- [`src/styles/globals.css`](src/styles/globals.css)
- [`tailwind.config.js`](tailwind.config.js)

### [TypeScript](https://www.typescriptlang.org/)

- [`tsconfig.json`](tsconfig.json) - configured for maximum type-safety
- [`types/reset.d.ts`](types/reset.d.ts) - using [ts-reset](https://github.com/total-typescript/ts-reset) to increase type-safety

### [Vercel Edge Functions](https://vercel.com/features/edge-functions)

- [`api/index.tsx`](api/index.tsx)
- [`scripts/transform-paths.ts`](scripts/transform-paths.ts) - transforms all relative imports to absolute imports inside the src/ directory
- [`vercel.json`](vercel.json)

### [VS Code](https://code.visualstudio.com/)

- [`.vscode/extensions.json`](.vscode/extensions.json) - recommended workspace extensions