Directory Architecture
Follows golang-standards/project-layout.
.
โโโ build/
โ โโโ package/
โ โโโ build.sh # Lambda binary build script
โโโ cmd/
โ โโโ lambda/
โ โ โโโ main.go # Lambda entry point
โ โโโ server/
โ โโโ main.go # Local development HTTP server (:8080)
โโโ deployments/
โ โโโ Dockerfile # Lambda container image build definition
โโโ docs/ # Documentation submodule
โโโ internal/
โ โโโ handler/
โ โ โโโ upload.go # Request parsing, validation, S3 save call
โ โโโ storage/
โ โโโ s3.go # S3 PutObject wrapper
โโโ api/ # swaggo-generated files (auto-generated, do not edit)
โโโ go.mod
โโโ go.sum
โโโ Makefile
Directory Roles
| Directory | Role |
|---|---|
build/package/ |
Cross-compilation script for Lambda |
cmd/lambda/ |
Lambda entry point. Assembles dependencies only; contains no business logic |
cmd/server/ |
Local development entry point. Starts Echo directly on :8080 |
deployments/ |
Dockerfile for Lambda container image |
docs/ |
Project documentation (submodule) |
internal/handler/ |
Parses upload requests, validates input, and generates responses |
internal/storage/ |
Abstracts S3 operations (used from handler via Storer interface) |
api/ |
OpenAPI spec and Swagger UI assets generated by swaggo (auto-generated, do not edit) |
Dependency Graph
internal/handler accesses internal/storage through the Storer interface. The implementation is injected in the cmd layer, and can be swapped for a mock in tests.