Initial commit of template
This commit is contained in:
59
README.md
Normal file
59
README.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# Backend Todo App Template
|
||||
|
||||
Backend-only Bun + Express template intended to be snapshotted directly and mounted at `/mnt/backend`.
|
||||
|
||||
## What it provides
|
||||
|
||||
- `GET /health`
|
||||
- `GET /todos`
|
||||
- `POST /todos`
|
||||
- `GET /todos/:id`
|
||||
- `PUT /todos/:id`
|
||||
- `DELETE /todos/:id`
|
||||
- `POST /todos/:id/attachment/presign`
|
||||
- `POST /todos/:id/attachment/complete`
|
||||
|
||||
Todos are stored in Turso/libSQL through the HTTP pipeline API. Attachments use Tigris or any S3-compatible endpoint through presigned `PUT` URLs.
|
||||
|
||||
## Runtime contract
|
||||
|
||||
- app root is this folder
|
||||
- start command: `bun run dev`
|
||||
- listens on `PORT`, default `8080`
|
||||
- compatible with a direct snapshot mounted to `/mnt/backend`
|
||||
|
||||
## Setup
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
bun install
|
||||
bun run dev
|
||||
```
|
||||
|
||||
## Required env
|
||||
|
||||
`.env` and `.env.example` contain the full key set expected by the app:
|
||||
|
||||
- `PORT`
|
||||
- `NODE_ENV`
|
||||
- `API_PREFIX`
|
||||
- `CORS_ORIGIN`
|
||||
- `LOG_LEVEL`
|
||||
- `PROJECT_ID`
|
||||
- `DATABASE_URL`
|
||||
- `DATABASE_AUTH_TOKEN`
|
||||
- `S3_ENDPOINT`
|
||||
- `S3_BUCKET`
|
||||
- `S3_PREFIX`
|
||||
- `S3_ACCESS_KEY_ID`
|
||||
- `S3_SECRET_ACCESS_KEY`
|
||||
- `S3_SESSION_TOKEN`
|
||||
|
||||
## Attachment flow
|
||||
|
||||
1. Create a todo with `POST /todos`.
|
||||
2. Request a presigned upload target with `POST /todos/:id/attachment/presign`.
|
||||
3. Upload the file directly to the returned `url` using the returned `method` and `headers`.
|
||||
4. Finalize the attachment metadata with `POST /todos/:id/attachment/complete`.
|
||||
|
||||
Deleting a todo only removes the database record in v1. It does not delete the object from storage.
|
||||
Reference in New Issue
Block a user