Thanos-go is a highly scalable and robust base project, designed and developed using Golang, Echo, Hexagonal Architecture, and SOLID principles. It comes with pre-configured support for WebSocket, gRPC, and GraphQL to provide seamless communication and data management in modern applications.
- Getting Started
- Prerequisites
- Installation
- Running the Application
- Project Structure
- Tests
- Contributing
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See Installation for notes on how to deploy the project on a live system.
Before you can run the project, you need to have the following software installed on your system:
- Docker
You can download and install Docker from the official Docker website.
Clone the project repository:
git clone https://github.com/moein9gh/thanos-go.git
Navigate to the project directory:
cd thanos-go
go to scripts folder
cd ./docker/scripts
Then run run.sh file to run in development mode
./run.sh
run log.sh file to see logs
./log.sh
run down.sh file to makes containers down
./down.sh
- Please make sure that .sh files in scripts folder have right permissions for execution.
Below is an overview of the project structure:
├──Thanos-go/
│ ├── adapter/ # Dependency Injection folder
│ ├── build/ # Binary folder, possibly containing scripts or executables
│ ├── build_info/ # Binary folder, possibly containing scripts or executables
│ ├── cmd/ # Documentation folder
│ ├── config/ # Documentation folder
│ ├── contract/ # Docker-related files folder
│ ├── delivery/ # Docker-related files folder
│ ├── deployment/ # Data Transfer Objects folder
│ ├── docker/ # Entity folder, for defining domain entities
│ ├── docs/ # Environment configuration folder
│ ├── e/ # Gateway folder, for external communication and services
│ ├── interactor/ # Interactor folder, for use cases and application logic
│ ├── log/ # Localization folder, containing translations or localization configs
│ ├── logs/ # Logging folder, for log files and logging configuration
│ ├── model/ # Model folder, for domain models
│ ├── param/ # Ports folder, for defining interfaces and adapters
│ ├── pkg/ # Protocol Buffers folder, for defining gRPC services
│ ├── service/ # Repository folder, for data access and persistence
│ ├── storage/ # Schema folder, for defining data schemas or validation
│ ├── store/ # Store folder, for managing application database's
│ ├── vendor/ # Test folder
│ └── wsutil/ # Utility functions folder
│
├── .pre-commit-config.yml # ESLint ignore configuration file
├── .commitlint.config.js # ESLint configuration file
├── go.mod # Git ignore configuration file
├── main.go # Prettier configuration file
│
├── Makefile # Package.json file for npm project
└── README.md # TypeScript configuration file
To run the test suite, execute the following command:
go test
Contributions are always welcome! Feel free to submit a PR, create an issue, or get in touch with the project maintainer moein9gh to discuss new ideas or improvements.