# eVibes

![LOGO](core/docs/images/evibes-big.png)

eVibes — your store without the extra baggage.
Everything works out of the box: storefront, product catalog, cart, and orders.
Minimal complexity, maximum flexibility — install, adjust to your needs, and start selling.

## Table of Contents

- [Features](#features)
- [Getting Started](#getting-started)
    - [Prerequisites](#prerequisites)
    - [Installation](#installation)
- [Configuration](#configuration)
    - [Dockerfile](#Dockerfile)
    - [nginx](#nginx)
    - [.env](#env)
- [Usage](#usage)
- [Contact](#contact)

## Features

- **Modular Architecture**: Extend and customize the backend to fit your needs.
- **Dockerized Deployment**: Quick setup and deployment using Docker and Docker Compose.
- **Asynchronous Task Processing**: Integrated Celery workers and beat scheduler for background tasks.
- **GraphQL and REST APIs**: Supports both GraphQL and RESTful API endpoints.
- **Internationalization**: Multilingual support using modeltranslate.
- **Advanced Caching**: Utilizes Redis for caching and task queuing.
- **Security**: Implements JWT authentication and rate limiting.

## Getting Started

### Prerequisites

- Docker and Docker Compose are installed on your machine.

### Installation

1. Clone the repository:

   ```bash
   git clone https://gitlab.com/wiseless.xyz/eVibes.git
   cd eVibes
   ```

2. Choose the storefront. By default, `main` branch has no storefront included. 
Skip this step if you're OK with that and plan to only use API or develop your own storefront.

   ```bash
   git checkout storefront-<options: nuxt, next, sk, qwik >
   ```

3. Generate your .env file. Check and confirm the contents afterward.

    - Windows
      ```powershell
      scripts\Windows\generate-environment-file.ps1
      ```
    - Unix
      ```bash
      scripts/Unix/generate-environment-file.sh
      ```

4. Install all the dependencies.

    - Windows
      ```powershell
      scripts\Windows\install.ps1
      ```
    - Unix
      ```bash
      scripts/Unix/install.sh
      ```

5. Spin it up.

    - Windows
      ```powershell
      scripts\Windows\run.ps1
      ```
    - Unix
      ```bash
      scripts/Unix/run.sh
      ```

6. Bring to production.

   Include `nginx` file to your nginx configuration, you really want to install and
   run [Certbot](https://certbot.eff.org/) afterward!

## Configuration

### Dockerfile

Remember to change the
`RUN sed -i 's|https://deb.debian.org/debian|https://ftp.<locale>.debian.org/debian|g' /etc/apt/sources.list.d/debian.sources`
before running installment scripts

### nginx

Please comment-out SSL-related lines, then apply necessary configurations, run `certbot --cert-only --nginx`,
decomment previously commented lines and enjoy eVibes over HTTPS!

### .env

After .env file generation, you may want to edit some of its values, such as macroservices` API keys, database password,
redis password, etc.

## Usage

- Add the necessary subdomains to DNS-settings of your domain, those are:

1. @.your-domain.com
2. www.your-domain.com
3. api.your-domain.com
4. b2b.your-domain.com
5. prometheus.your-domain.com

- Add these lines to your hosts-file to use django-hosts functionality on localhost(*DEVELOPMENT ONLY*):

```hosts
127.0.0.1 api.localhost
127.0.0.1 b2b.localhost
```

Once the services are up and running, you can access the application at
`http://api.your-domain.com`(http://api.localhost:8000).

- **Django Admin**: `http://api.your-domain.com/` (will redirect to admin)
- **API Docs**:
    - REST API: `http://api.localhost:8000/docs/swagger` or `http://api.localhost:8000/docs/redoc`
    - GraphQL API: `http://api.localhost:8000/graphql/`

## Uninstall eVibes

You are not planning to do that, aren't you?

- Windows
  ```powershell
  scripts\Windows\uninstall.ps1
  ```
- Unix
  ```bash
  scripts/Unix/uninstall.sh
  ```

## Contact

- **Author**: Egor "fureunoir" Gorbunov
    - Email: contact@fureunoir.com
    - Telegram: [@fureunoir](https://t.me/fureunoir)

![FAVICON](core/docs/images/evibes.png)