Moein9gh Thanos Save

its a base project based on hexagonal architecture. developed by nodejs + typescript.

Project README

Thanos

Thanos is a highly scalable and robust base project, designed and developed using Node.js, Express, 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.

Hexagonal Architecture

Table of Contents

Getting Started

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.

Prerequisites

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.

Installation

Clone the project repository:

git clone https://github.com/moein9gh/thanos.git

Navigate to the project directory:

cd thanos

Running the Application

go to scripts folder

cd ./src/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.

Project Structure

Below is an overview of the project structure:

Thanos/
│
├── .husky/                       # Husky Git hooks configuration folder
│
├── src/                          # Source code folder
│   ├── DI/                       # Dependency Injection folder
│   ├── bin/                      # Binary folder, possibly containing scripts or executables
│   ├── config/                   # Configuration files folder
│   ├── doc/                      # Documentation folder
│   ├── docker/                   # Docker-related files folder
│   ├── dto/                      # Data Transfer Objects folder
│   ├── entity/                   # Entity folder, for defining domain entities
│   ├── env/                      # Environment configuration folder
│   ├── gateway/                  # Gateway folder, for external communication and services
│   ├── interactor/               # Interactor folder, for use cases and application logic
│   ├── locales/                  # Localization folder, containing translations or localization configs
│   ├── log/                      # Logging folder, for log files and logging configuration
│   ├── migrations/               # Database migrations folder
│   ├── model/                    # Model folder, for domain models
│   ├── ports/                    # Ports folder, for defining interfaces and adapters
│   ├── protos/                   # Protocol Buffers folder, for defining gRPC services
│   ├── repository/               # Repository folder, for data access and persistence
│   ├── schema/                   # Schema folder, for defining data schemas or validation
│   ├── static/                   # Static assets folder
│   ├── store/                    # Store folder, for managing application database's
│   ├── test/                     # Test folder
│   ├── types/                    # TypeScript types folder
│   └── utils/                    # Utility functions folder
│
├── .eslintignore                 # ESLint ignore configuration file
├── .eslintrc                     # ESLint configuration file
├── .gitignore                    # Git ignore configuration file
├── .prettierrc                   # Prettier configuration file
│
├── CleanArchitecture.jpg         # Clean Architecture illustration file
├── commitlint.config.js          # Commitlint configuration file
├── docker-compose.yml            # Docker Compose configuration file
├── jest.config.ts                # Jest configuration file
├── package-lock.json             # Dependency lock file for npm
├── package.json                  # Package.json file for npm project
├── tsconfig-build.json           # TypeScript build configuration file
└── tsconfig.json                 # TypeScript configuration file

Tests

To run the test suite, execute the following command:

npm run test

Contributing

Contributions are always welcome! Feel free to submit a pull request, create an issue, or get in touch with the project maintainer moein9gh to discuss new ideas or improvements.

Open Source Agenda is not affiliated with "Moein9gh Thanos" Project. README Source: moein9gh/Thanos

Open Source Agenda Badge

Open Source Agenda Rating