Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/beerush-id/honor
Your REST API Copilot, Live in the Edge
https://github.com/beerush-id/honor
copilot hono javascript rest-api serverless-framework typescript
Last synced: 2 months ago
JSON representation
Your REST API Copilot, Live in the Edge
- Host: GitHub
- URL: https://github.com/beerush-id/honor
- Owner: beerush-id
- Created: 2024-04-29T17:29:46.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-06-17T06:42:47.000Z (7 months ago)
- Last Synced: 2024-11-07T03:09:08.709Z (3 months ago)
- Topics: copilot, hono, javascript, rest-api, serverless-framework, typescript
- Language: TypeScript
- Homepage:
- Size: 80.1 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# @beerush/honor
Honor is a REST API framework built on top of Hono.
> This project is still in early development.
## đ Getting Started
To start using Honor quickly, you can clone the starter package:
```bash
git clone [email protected]:beerush-id/honor-starter.git
```Install dependencies:
```bash
bun install
```or
```bass
npm install
```or
```bash
yarn install
```To run:
```bash
bun dev
```## âŠī¸ Features
- File based routing inspired by SvelteKit.
- Handle REST routing by exporting config.
- Handle routing by exporting a function.
- REST API, Documentation, and Client routing.
- Middleware support.## đ Documentation
### CRUD Routing
Creating a REST API is easy with Honor. You can create a REST API by exporting a config object.
```typescript
// src/routes/posts/+server.ts
import type { Endpoint } from '@beerush/honor/supabase';
import { z } from '@beerush/honor';const schema = z.object({
id: z.string().uuid(),
title: z.string(),
content: z.string(),
});export default ({
name: 'post',
table: 'Posts',
schema,
}) satisfies Endpoint;
```After creating the config object, you can access the REST API at:
- `GET /api/posts`
- `POST /api/posts`
- `GET /api/posts/:id`
- `PUT /api/posts/:id`
- `PATCH /api/posts/:id`
- `DELETE /api/posts/:id`### Single Routing.
You can also create a custom routing by exporting a function as default.
```typescript
// src/routes/+server.ts
import type { ReadHandler } from '@beerush/honor';export default (async () => {
return {
status: 'Ok',
};
}) satisfies ReadHandler;```
To handle non GET request, you can use the `method` property.
```typescript
// src/routes/+server.ts
import type { WriteHandler } from '@beerush/honor';export const POST = (async (c) => {
return {
id: crypto.randomUUID(),
...c.body,
};
}) satisfies WriteHandler;```
After creating the above functions, you can access the custom API at:
- `GET /api`
- `POST /api`### Documentations.
By default, Honor will generate a documentation for your API. You can access the documentation at `/docs`.
To add documentation details for your API, you can add `+server.mdx` file.
```mdx
// src/routes/+server.mdx
# My API Documentation
```### Client Routing
You can also create a client routing by exporting a function as default using JSX, or simply MDX.
```tsx
// src/routes/+page.tsx
export default () => (
Hello, World! < /h1>
< /div>
);
``````mdx
// src/routes/+page.mdx
# Hello, World!
```### Client Layout
You can also create a client layout by exporting a function as default using JSX.
```tsx
// src/routes/+layout.tsx
export default ({ children }) => (
My Blog
{ children }
);
```Visit the page at `/`, you will see the content of the page.
## đ Credits
- This project was created using `bun init` in bun v1.1.4. [Bun](https://bun.sh) is a fast all-in-one JavaScript
runtime.
- This project is built on top of [Hono](https://hono.dev).
- Inspired by [SvelteKit](https://kit.svelte.dev).