Skip to content

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

cmd/lambda  โ”€โ”€โ”
              โ”œโ”€โ”€โ–ถ internal/handler โ”€โ”€โ–ถ internal/storage
cmd/server  โ”€โ”€โ”˜

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.