3636 <img src="https://img.shields.io/github/actions/workflow/status/techfusionid/elysia-production-template/ci.yml?label=CI&logo=github&style=flat" alt="CI">
3737 </a >
3838 <img src =" https://img.shields.io/badge/OpenAPI-documented-6BA539?logo=openapi&style=flat " alt =" OpenAPI " >
39+ <a href="https://github.com/techfusionid/elysia-production-template/generate">
40+ <img src =" https://img.shields.io/badge/use%20this-template-2ea44f?style=flat-square " />
41+ </a >
3942</p >
4043
4144## Features
5558
5659## Why use this starter?
5760
58- ** Elysia.js is fast.** It's currently the fastest framework in the Bun ecosystem, with [ benchmarks showing performance] ( https://elysiajs.com/at-glance.html#performance ) that can match Golang and Rust frameworks.
61+ ** Elysia.js is fast.** It's currently one of the fastest frameworks in the Bun ecosystem, with [ benchmarks showing performance] ( https://elysiajs.com/at-glance.html#performance ) that can match Golang and Rust frameworks (based on TechEmpower Benchmarks) .
5962
6063** The problem?** Setting up Authentication, ORM, Docker, and logging from scratch for a production-ready app takes hours.
6164
@@ -68,9 +71,21 @@ This boilerplate provides a **simple, ready-to-use, production-grade foundation*
6871- Keep full control over configuration while avoiding boilerplate fatigue
6972- Use modern, type-safe tooling without framework lock-in
7073
74+ ---
75+
7176## Quick Start
7277
73- ** Clone the repo:**
78+ ### 1. Use This Template (Recommended)
79+
80+ Click the green ** "Use this template"** button at the top of this repo — or use the direct link:
81+
82+ 👉 [ ** Create from template** ] ( https://github.com/techfusionid/elysia-production-template/generate )
83+
84+ > Creates a clean repo without git history.
85+
86+ ### 2. Clone the repository (Alternative)
87+
88+ If you prefer cloning manually:
7489
7590``` bash
7691git clone https://github.com/techfusionid/elysia-production-template.git
@@ -96,7 +111,7 @@ bun run dev
96111** Or with Docker:**
97112
98113``` bash
99- docker- compose up
114+ docker compose up
100115```
101116
102117Your app is now running:
123138
124139tests/ # Integration tests
125140```
141+
126142> 📌 ** Note**
127143> The ` posts ` module and its API endpoints are provided as example CRUD implementations.
128144> You can safely modify or remove them if not needed.
@@ -131,19 +147,19 @@ tests/ # Integration tests
131147
132148Key environment variables (see ` .env.example ` for full list):
133149
134- | Variable | Description | Required |
135- | ---------------------------- | ------------------------------------------------------------- | --------------------- |
136- | ` NODE_ENV ` | Runtime environment (` development ` , ` production ` , ` test ` ) | No (default: ` development ` ) |
137- | ` HOST ` | Server bind address | No (default: ` 0.0.0.0 ` ) |
138- | ` PORT ` | Server port | No (default: ` 3000 ` ) |
139- | ` DATABASE_URL ` | PostgreSQL connection string | Yes |
140- | ` BETTER_AUTH_SECRET ` | Auth secret key (generate: ` openssl rand -base64 32 ` ) | Yes |
141- | ` BETTER_AUTH_URL ` | Base URL for auth callbacks | Yes |
142- | ` ENABLE_AUTH ` | Enable/disable auth module | No (default: ` true ` ) |
143- | ` REQUIRE_EMAIL_VERIFICATION ` | Require email verification before login | No (default: ` false ` ) |
144- | ` ENABLE_RATE_LIMITER ` | Enable/disable rate limiting | No (default: ` true ` ) |
145- | ` LOG_LEVEL ` | Log level: ` fatal ` , ` error ` , ` warn ` , ` info ` , ` debug ` , ` trace ` | No (default: ` info ` ) |
146- | ` CORS_ORIGIN ` | Allowed origins (comma-separated) | No (default: ` http://localhost:3000,http://localhost:5173 ` ) |
150+ | Variable | Description | Required |
151+ | ---------------------------- | ------------------------------------------------------------- | ----------------------------------------------------------- |
152+ | ` NODE_ENV ` | Runtime environment (` development ` , ` production ` , ` test ` ) | No (default: ` development ` ) |
153+ | ` HOST ` | Server bind address | No (default: ` 0.0.0.0 ` ) |
154+ | ` PORT ` | Server port | No (default: ` 3000 ` ) |
155+ | ` DATABASE_URL ` | PostgreSQL connection string | Yes |
156+ | ` BETTER_AUTH_SECRET ` | Auth secret key (generate: ` openssl rand -base64 32 ` ) | Yes |
157+ | ` BETTER_AUTH_URL ` | Base URL for auth callbacks | Yes |
158+ | ` ENABLE_AUTH ` | Enable/disable auth module | No (default: ` true ` ) |
159+ | ` REQUIRE_EMAIL_VERIFICATION ` | Require email verification before login | No (default: ` false ` ) |
160+ | ` ENABLE_RATE_LIMITER ` | Enable/disable rate limiting | No (default: ` true ` ) |
161+ | ` LOG_LEVEL ` | Log level: ` fatal ` , ` error ` , ` warn ` , ` info ` , ` debug ` , ` trace ` | No (default: ` info ` ) |
162+ | ` CORS_ORIGIN ` | Allowed origins (comma-separated) | No (default: ` http://localhost:3000,http://localhost:5173 ` ) |
147163
148164> ` NODE_ENV ` is used to adjust logging visual, testing, and runtime behavior.
149165
@@ -164,13 +180,15 @@ Log verbosity can be controlled using the `LOG_LEVEL` environment variable.
164180bun run dev # Start dev server with hot reload
165181```
166182
183+ ---
184+
167185** 🐳 Local Development with Docker PostgreSQL**
168186
169187For local development, it's recommended to run PostgreSQL via Docker
170188while keeping the API running locally with Bun.
171189
172190``` bash
173- docker- compose up -d postgres
191+ docker compose up -d postgres
174192```
175193
176194** Production:**
@@ -185,17 +203,19 @@ bun run start # Start production server
185203** Docker Compose**
186204
187205Run API + PostgreSQL fully inside Docker:
206+
188207``` bash
189- docker- compose up
190- docker- compose up --build
191- docker- compose down
208+ docker compose up
209+ docker compose up --build
210+ docker compose down
192211```
193212
194213View compose logs:
214+
195215``` bash
196- docker- compose logs -f
197- docker- compose logs -f api
198- docker- compose logs -f postgres
216+ docker compose logs -f
217+ docker compose logs -f api
218+ docker compose logs -f postgres
199219```
200220
201221** Database & Migration (Drizzle):**
@@ -374,7 +394,6 @@ app.use(yourModule);
374394
375395---
376396
377-
378397## Deployment
379398
380399This template is container-ready and works well with most Docker-based platforms.
@@ -388,7 +407,7 @@ This project aims to stay **simple, production-focused, and easy to extend**, so
388407
389408---
390409
391- ## How to contribute
410+ ### How to contribute
392411
3934121 . Fork this repository
3944132 . Create a new branch from ` main `
@@ -426,8 +445,6 @@ Yes. Includes rate limiting, structured logging, error handling, health checks,
426445- Ensure HTTPS is handled by a reverse proxy or your hosting platform (nginx, Caddy, or managed TLS)
427446</details >
428447
429-
430448## License
431449
432450[ MIT] ( LICENSE )
433-
0 commit comments