# **Malackathon Backend**

> Malackathon CyberBokeron backend repo.

![C++](https://img.shields.io/badge/C%2B%2B-17%2B-blue?style=flat-square)
![Oat++](https://img.shields.io/badge/Oat++-1.3.0-orange?style=flat-square)
![License](https://img.shields.io/badge/license-MIT-green)

## **Table of Contents**

- [Description](#description)
- [Features](#features)
- [Tech Stack](#tech-stack)
- [Installation](#installation)
- [Usage](#usage)
- [Project Structure](#project-structure)
- [Contributing](#contributing)
- [License](#license)

---

## **Description**

This project is a backend API server for Malackathon CyberBokeron, built using [C++](https://cplusplus.com/) and [Oat++](https://oatpp.io/), a lightweight and fast web framework for building REST APIs. 

## **Features**

- 🚀 High-performance backend with Oat++
- 📚 Clean API structure with REST endpoints
- 🧩 Modular design and scalability
- 🛡️ Integrated error handling and logging
- ⚙️ Easy to extend and customize

## **Tech Stack**

- **Language**: C++17 or later
- **Framework**: [Oat++](https://oatpp.io/)
- **Build System**: CMake
- **Database**: [OracleSQL] (optional)
- **Testing**: [Unit testing library]

## **Installation**

Before you begin, ensure you have the following installed:

- [CMake](https://cmake.org/download/)
- [Oat++](https://github.com/oatpp/oatpp)
- [Compiler supporting C++17](https://gcc.gnu.org/), such as GCC or Clang

### **Step-by-step Installation**

1. Clone the repository:

    ```bash
    git clone 
    ```

2. Navigate into the project directory:

    ```bash
    cd Malackathon-backend
    ```

3. Create a build directory and configure the project using CMake:

    ```bash
    mkdir build && cd build
    cmake ..
    ```

4. Build the project:

    ```bash
    make
    ```

5. (Optional) Run the tests if available:

    ```bash
    make test
    ```

## **Usage**

To start the server, run the following command in the `build` directory:

```bash
./project-executable
```

By default, the server will be accessible at `http://localhost:8000`. You can change the port and other settings in the configuration file.

### **Environment Variables**

You can configure the server using environment variables. Example:

```bash
export SERVER_PORT=8080
export DATABASE_URL=postgres://user:password@localhost:5432/dbname
```

## **API Endpoints**

- **GET /api/example** - Fetches example data.
- **POST /api/example** - Creates a new example entry.

For a detailed list of endpoints, see the API documentation (poner algo aqui).

## **Contributing**

Contributions are welcome! To contribute, follow these steps:

1. Fork the repository.
2. Create a new feature branch (`git checkout -b feature-new-feature`).
3. Commit your changes (`git commit -am 'Add new feature'`).
4. Push your branch (`git push origin feature-new-feature`).
5. Open a Pull Request.

Please ensure your code follows the project’s coding guidelines and passes all tests.

## **License**

This project is licensed under [AGPLv3](LICENSE) license.

---

