Skip to content

TheSmartMonkey/create-hono-cloudflare-workers-rest-api

Repository files navigation

create-hono-cloudflare-workers-rest-api

🚀 Welcome to HonoJS REST API Template 🚀

Features

🛠️ Minimal Setup, Maximum Power

⚙️ Middleware Magic

🔐 JWT token Authentication

📚 Swagger UI and openapi documentation (with auto generate code for the frontend)

✅ Route validation with zod

🧪 Testing with jest

🦋 Beautiful code with eslint and prettier

Getting Started

Create a new project

npx degit https://github.com/TheSmartMonkey/create-hono-cloudflare-workers-rest-api backend

Create a wrangler.toml based on wrangler.default.toml

Install dependancies

bun i

Start coding 🧑‍💻

bun start

Deploy to cloudflare 🚀

bun run deploy

Swagger UI 📚 : http://127.0.0.1:8787/public/api

You can add the JWT token in the Authorize button in the top right corner

Exemple token with secret 1234 :

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJmYWtlVXNlcklkIiwiZW1haWwiOiJmYWtlRW1haWwiLCJpYXQiOjE3NDAyMjUwODh9.PcHnkcIxknYZbaR7G4R0KaYAWAKeaHJ5cZYIUIPSYRA

Encode a JWT token: JWT Encoder/Decoder

Generate openapi spec

Edit openapitools.json config to specify the code generation (typescript-angular, typescript-node, etc)

Then run this command to generate the code

bun run genapi

You should have the generated code in dist/api

Testing

Test you code 🧪

bun run test

Run Specific Tests

Run unit tests 🧪 Test individual components or functions

bun run unit

Run integration tests 🧪 Test your code with external dependencies like databases, APIs, etc

bun run integration

Grouping Tests

Tests are grouped using Jest's @group annotation:

/**
 * @group unit
 */
/**
 * @group integration
 */

This helps in organizing and running specific groups of tests

More Commands

Fix you code to make it Beautiful 🦋

bun run fix

For more commands:

bun run

Happy coding! 🎉

About

Lightweight Honojs rest api template for side project or micro Saas on cloudflare workers

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •