Go

Folder Structure

πŸ“ infrastructure
β”‚   πŸ“ config
β”‚   β”‚   πŸ“„ .env.example
β”‚   β”‚   πŸ“„ config.go
β”‚   πŸ“ database
β”‚       πŸ“„ database.go
πŸ“ internal
β”‚   πŸ“ domain
β”‚   β”‚   πŸ“„ [...].domain.go
β”‚   πŸ“ dto
β”‚   β”‚   πŸ“„ [...].request.go
β”‚   β”‚   πŸ“„ [...].response.go
β”‚   πŸ“ handler
β”‚   β”‚   πŸ“„ [...].handler.go
β”‚   πŸ“ microservice
β”‚   β”‚   πŸ“„ [...].microservice.go
β”‚   πŸ“ model
β”‚   β”‚   πŸ“„ [...].model.go
β”‚   πŸ“ repository
β”‚   β”‚   πŸ“„ [...].repository.go
β”‚   πŸ“ usecase
β”‚       πŸ“„ [...].usecase.go
πŸ“ migrations
β”‚   πŸ“„ [...].down.sql
β”‚   πŸ“„ [...].up.sql
πŸ“ routers
β”‚   πŸ“„ init.routes.go
β”‚   πŸ“„ [...].routes.go
πŸ“ shared
β”‚   πŸ“ constants
β”‚   β”‚   πŸ“„ [...].constants.go
β”‚   πŸ“ enums
β”‚   β”‚   πŸ“„ [...].enums.go
β”‚   πŸ“ errors
β”‚   β”‚   πŸ“„ [...].errors.go
β”‚   πŸ“ middlewares
β”‚   β”‚   πŸ“„ [...].middleware.go
β”‚   πŸ“ response
β”‚   β”‚   πŸ“„ [...].response.go
β”‚   πŸ“ utils
β”‚       πŸ“„ [...].utils.go
πŸ“ third-party
β”‚   πŸ“„ [...].thirdparty.go
πŸ“„ main.go
πŸ“„ go.mod
πŸ“„ go.sum
πŸ“„ .gitignore
πŸ“„ README.md
πŸ“„ Makefile

Folder Descriptions

infrastructure/

Manages external system integrations and configurations

  • config/ – Application configuration management (env parsing, server ports)
  • database/ – Database connection and management (init, pooling)

internal/

Core application logic (business-critical code, protected from external imports).

  • domain/
    • Pure business logic and domain rules.
    • Core business entities and domain rules
  • dto/ (Data transfer Objects)
    • Define contracts for data exchange between layers.
    • Request and response structures for API communication.
  • handler/
    • HTTP request/response handling and routing
    • Controllers that process incoming HTTP requests
  • microservice/
    • Call other services under the same network
    • Service orchestration and inter-service communication
  • model/
    • Database model definitions and ORM mappings
    • Data structures that map to database tables
  • repository/
    • Data access layer implementing domain repository interfaces
    • Abstract data storage operations
  • usecase/
    • Implement business use cases and application workflows
    • Application-specific business logic coordination
  • migrations/
    • Database schema version control and evolution
    • SQL migration files for database changes
  • routers/
    • HTTP routing configuration and middleware setup
    • Route definitions and middleware chain configuration
  • shared/
Cross-cutting concerns and utilities.
- :icon{class="size-5" name="i-ph:folder-simple"} **constants/**
    - Application-wide constant values, enum definitions, and configuration keys
    - e.g., HTTP status codes, error codes, default values, system limits
- :icon{class="size-5" name="i-ph:folder-simple"} **enums/**
    - Type-safe enumeration definitions
    - e.g., String conversion methods, validation functions, JSON marshaling
- :icon{class="size-5" name="i-ph:folder-simple"} **errors/**
    - Custom error types
    - e.g., Custom error types with error codes, Error wrapping and unwrapping utilities, Structured error responses
- :icon{class="size-5" name="i-ph:folder-simple"} **middlewares/**
    - Individual middleware functions
    - e.g., Authentication middleware, Authorization middleware, CORS middleware
    - e.g., Custom error types with error codes, Error wrapping and unwrapping utilities, Structured error responses
- :icon{class="size-5" name="i-ph:folder-simple"} **response/**
    - Success response formatters
    - e.g., Standardized API response structures, Error response formatting
- :icon{class="size-5" name="i-ph:folder-simple"} **utils/**
    - Utility functions
    - e.g., Date/time helpers, String manipulation utilities, Validation functions
  • third-party/

External service integrations and third-party API clients - e.g., Payment gateways, External APIs, and webhooks

main.go

Application entry point and initialization

go.mod

Dependency verification and integrity

go.sum

Version control exclusions

.gitignore

Version control exclusions

README.md

Project documentation and setup instructions

Makefile

Build automation and development tools