Introduce the `WARPBOX_DATA_DIR` environment variable to define where runtime data is stored. This directory will house uploaded files, the bbolt metadata database, and application logs. Changes include: - Added `WARPBOX_DATA_DIR` to configuration, defaulting to `./data`. - Implemented a custom logging package that writes JSONL logs to the data directory. - Updated `.gitignore` and `.env.example` to support the new data directory. - Documented the runtime data structure in `README.md`. - Updated the frontend upload script to handle form submission and display results.
53 lines
2.0 KiB
Markdown
53 lines
2.0 KiB
Markdown
# Warpbox.dev
|
|
|
|
This repository contains the Go backend base for `warpbox.dev`, a self-hosted transfer-first file sharing application.
|
|
|
|
## Run
|
|
|
|
```bash
|
|
./scripts/run/dev.sh
|
|
```
|
|
|
|
The default server listens on `:8080`.
|
|
|
|
Upload size limits are configured in megabytes through `WARPBOX_MAX_UPLOAD_SIZE_MB`.
|
|
Fractions are supported, so `0.5Mb` is 512 KiB and `1.5Mb` is 1536 KiB.
|
|
|
|
Runtime data is configured with `WARPBOX_DATA_DIR` and defaults to `./data` in the dev environment.
|
|
The dev script resolves that path from the repository root.
|
|
|
|
For one-off Go commands, run them from the backend module:
|
|
|
|
```bash
|
|
cd backend
|
|
go run ./cmd/warpbox
|
|
```
|
|
|
|
## Layout
|
|
|
|
- `backend/cmd/warpbox` - main application entry point.
|
|
- `backend/libs/config` - environment-backed configuration.
|
|
- `backend/libs/httpserver` - server construction and route composition.
|
|
- `backend/libs/handlers` - HTTP handlers for pages, API, health, static files.
|
|
- `backend/libs/middleware` - request logging, recovery, security headers, gzip, request IDs.
|
|
- `backend/libs/services` - business logic boundaries, starting with upload limits.
|
|
- `backend/libs/helpers` - small reusable helpers.
|
|
- `backend/libs/web` - Go template renderer.
|
|
- `backend/templates` - server-rendered Go templates.
|
|
- `backend/static/css`, `backend/static/js`, `backend/static/img`, `backend/static/fonts` - public assets served from `/static/`.
|
|
- `scripts/run/dev.sh` - local development runner.
|
|
- `scripts/env/dev.env.example` - tracked development environment template.
|
|
- `scripts/env/dev.env` - local development environment, ignored by git.
|
|
|
|
## Runtime Data
|
|
|
|
Warpbox keeps local runtime data under the configured data directory:
|
|
|
|
- `data/files/{box_id}/{file_id}.ext` - uploaded file contents.
|
|
- `data/db/warpbox.bbolt` - bbolt metadata database for boxes and file records.
|
|
- `data/logs/{YYYY-MM-DD}.log` - JSONL logs, one event per line.
|
|
|
|
## Static Asset Policy
|
|
|
|
The static handler sets long-lived immutable caching for images, video, audio, and fonts, shorter caching for CSS/JS, and gzip compression for compressible responses.
|