.
├── cmd
│ ├── server # Entry point for the API server
│ │ └── main.go # Main file to start the Gin server
│ ├── cli # Entry point for command line tools (CLI)
│ └── cronjob # Entry point for cron jobs or scheduled tasks
├── internal # Core business logic, protected from external usage
│ ├── controllers # Contains controllers for handling HTTP requests
│ ├── initialize # Initializes configuration or services when the app starts
│ ├── middlewares # Middlewares for request handling (logging, auth, etc.)
│ ├── models # Data models (structs) representing database tables
│ ├── repositories # Data access layer (repository pattern)
│ ├── po # The Persistent Object (PO) folder holds objects representing database records for data storage and retrieval.
│ ├── routers # Defines API routes and their handlers
│ └── services # Business logic and data processing services
├── Makefile # Manages build, run, test tasks using Makefile
├── migrations # Contains database migration files (e.g., SQL scripts)
├── pkg # Libraries reusable across multiple projects
│ ├── logger # Configures and handles logging
│ ├── setting # Reads and processes configuration settings
│ └── utils # General utility functions, reusable across the app
├── response # Contains standardized responses for APIs (JSON, errors, etc.)
├── scripts # Shell scripts for automation tasks (deployment, setup, etc.)
├── tests # Contains unit and integration tests
├── third_party # Integrations with third-party services or libraries
├── configs # Directory for configuration files (YAML, JSON, TOML, etc.)
├── docker-compose.yml # Docker Compose configuration for launching services
├── docs # Project documentation (e.g., API specs, technical docs)
├── global # Global variables (use sparingly)
├── .gitignore # Specifies files and directories for Git to ignore.
├── go.mod # Go module file for managing dependencies
├── go.sum # Go module lock file (stores dependency versions)
└── README.md # Project documentation and usage instructions