Files
warpbox-dev/README.md
Daniel Legt 9b8ef16474 feat: initialize warpbox.dev project structure and backend
Initialize the repository with the core Go backend architecture and a frontend mockup for warpbox.dev, a self-hosted file-sharing application.

- Set up Go backend modules for configuration, HTTP server, middleware, handlers, and templates.
- Add local development scripts, environment templates, and basic project configuration.
- Include a React-based frontend mockup under the docs directory.
2026-05-25 15:36:49 +03:00

1.6 KiB

Warpbox.dev

This repository contains the Go backend base for warpbox.dev, a self-hosted transfer-first file sharing application.

Run

./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.

For one-off Go commands, run them from the backend module:

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.

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. Upload storage is intentionally only a placeholder at this stage.