|
1 | | -# Eventify - API |
| 1 | +# 🎉 Eventify API |
2 | 2 |
|
3 | | -# Eventify API |
| 3 | +**Eventify API** is a powerful, Dockerized backend built with **NestJS** for managing events, users, and registrations. |
| 4 | +It provides secure authentication, efficient database integration, and CI/CD automation — ideal for both small and enterprise-scale event platforms. |
4 | 5 |
|
5 | | -Eventify is a backend API built with **NestJS** designed for event management. It allows users to register, discover events, and participate in them. The API is fully **dockerized** for easy deployment and scalability. It uses **JWT** for authentication and integrates with a database for managing users, events, and registrations. |
| 6 | +<p align="left"> |
| 7 | + <img alt="NestJS" src="https://img.shields.io/badge/NestJS-Framework-red"> |
| 8 | + <img alt="MongoDB" src="https://img.shields.io/badge/Database-MongoDB-brightgreen"> |
| 9 | + <img alt="Docker" src="https://img.shields.io/badge/Container-Docker-blue"> |
| 10 | + <img alt="JWT" src="https://img.shields.io/badge/Auth-JWT-orange"> |
| 11 | + <img alt="CI/CD" src="https://img.shields.io/badge/CI/CD-GitHub_Actions-black"> |
| 12 | + <img alt="License" src="https://img.shields.io/badge/License-MIT-green"> |
| 13 | +</p> |
6 | 14 |
|
7 | | -This repository contains the backend logic for an event management system, providing the necessary endpoints for user authentication, event creation, and participation. It is suitable for both small and large-scale event management systems. |
| 15 | +--- |
8 | 16 |
|
9 | | -## Features |
| 17 | +## 🚀 Overview |
10 | 18 |
|
11 | | -- **User Authentication**: Users can register, log in, and securely authenticate using JWT. |
12 | | -- **Event Management**: Users can discover events, view event details, and register for events. |
13 | | -- **Dockerized API**: The backend is fully dockerized, allowing for easy containerization and deployment. |
14 | | -- **Database Integration**: The API integrates with a database to manage user and event data. |
| 19 | +Eventify provides the backbone for your event management ecosystem. |
| 20 | +It enables users to **create, discover, and register for events**, manage profiles, and authenticate securely via JWT. |
| 21 | +Built on **NestJS** and **MongoDB**, it’s fully containerized for scalability and CI/CD-ready. |
15 | 22 |
|
16 | | -## Tech Stack |
| 23 | +--- |
17 | 24 |
|
18 | | -- **NestJS**: A powerful Node.js framework for building scalable and maintainable server-side applications. |
19 | | -- **JWT Authentication**: Secure authentication using JSON Web Tokens. |
20 | | -- **Mongoose**: ODM for interacting with the database. |
21 | | -- **Docker**: Containerization of the backend for easy deployment. |
22 | | -- **MongoDB**: Used for storing data. |
| 25 | +## ✨ Features |
23 | 26 |
|
24 | | -## Setup & Installation |
| 27 | +- 🔐 **User Authentication** — Secure JWT-based login and registration. |
| 28 | +- 🗓️ **Event Management** — Create, edit, and explore events effortlessly. |
| 29 | +- 🧩 **Database Integration** — Seamless data persistence via **Mongoose**. |
| 30 | +- 🐳 **Dockerized Architecture** — Ready-to-deploy image for any environment. |
| 31 | +- ⚙️ **CI/CD Pipeline** — GitHub Actions automate testing, building, and Docker deployment. |
25 | 32 |
|
26 | | -Follow these steps to get the project up and running: |
| 33 | +--- |
27 | 34 |
|
28 | | -### Prerequisites |
| 35 | +## 🧠 Tech Stack |
29 | 36 |
|
30 | | -- Docker |
31 | | -- Node.js (if you’re not using Docker) |
32 | | -- Docker Hub account (for pushing images) |
| 37 | +| Layer | Technology | |
| 38 | +|-------|-------------| |
| 39 | +| Framework | NestJS | |
| 40 | +| Database | MongoDB (Mongoose) | |
| 41 | +| Authentication | JWT | |
| 42 | +| Containerization | Docker | |
| 43 | +| CI/CD | GitHub Actions | |
33 | 44 |
|
34 | | -### Clone the repository |
| 45 | +--- |
35 | 46 |
|
36 | | -```bash |
37 | | -git clone https://github.com/zaiidmo/eventify-api.git |
38 | | -cd eventify-api |
39 | | -``` |
| 47 | +## ⚙️ Setup & Installation |
40 | 48 |
|
41 | | -### Setup the environment variables |
| 49 | +### 1️⃣ Prerequisites |
42 | 50 |
|
43 | | -Since this application uses sensitive data (such as database credentials), it's important to configure your .env file properly. Do not commit your .env file to version control for security reasons. |
| 51 | +Ensure you have: |
| 52 | +- Docker installed |
| 53 | +- Node.js (if running locally) |
| 54 | +- A Docker Hub account (for image pushing) |
44 | 55 |
|
| 56 | +### 2️⃣ Clone Repository |
45 | 57 | ```bash |
46 | | -cp .env.exampl .env |
| 58 | +git clone https://github.com/zaiidmo/eventify-api.git |
| 59 | +cd eventify-api |
47 | 60 | ``` |
48 | 61 |
|
49 | | -### Install dependencies |
50 | | - |
51 | | -If you're not using Docker, you can install the dependencies by running: |
| 62 | +### 3️⃣ Environment Configuration |
| 63 | +Create a `.env` file using the provided example: |
52 | 64 | ```bash |
53 | | -npm install |
| 65 | +cp .env.example .env |
54 | 66 | ``` |
55 | 67 |
|
56 | | -### Run the application with docker |
| 68 | +--- |
57 | 69 |
|
58 | | -To build and run the application in Docker, use the following command: |
| 70 | +## 🧩 Installation Options |
| 71 | + |
| 72 | +### 🐳 Using Docker |
| 73 | +Build and run the image: |
59 | 74 | ```bash |
60 | 75 | docker build -t eventify-api . |
61 | 76 | ``` |
62 | | -This will build the Docker image and start the API server. The application will be available on `http://localhost:3000`. |
63 | | - |
64 | | -### Run the application without Docker |
| 77 | +Then access the API at **http://localhost:3000**. |
65 | 78 |
|
66 | | -If you're running the application directly on your local machine, you can start the server using: |
| 79 | +### 💻 Without Docker |
| 80 | +Install dependencies and run the app locally: |
67 | 81 | ```bash |
| 82 | +npm install |
68 | 83 | npm run start |
69 | | -``` |
| 84 | +``` |
70 | 85 |
|
71 | | -### Dockerizing the Application |
| 86 | +--- |
72 | 87 |
|
73 | | -This project is dockerized for easy deployment. The Dockerfile defines how to build the image, while docker-compose.yml simplifies the setup process, especially for local development. |
74 | | -To build the Docker image manually, you can run: |
| 88 | +## 🐋 Dockerizing the Application |
75 | 89 |
|
| 90 | +This project includes a **Dockerfile** for quick containerization. |
| 91 | +To build your image manually: |
76 | 92 | ```bash |
77 | 93 | docker build -t yourusername/eventify-api:latest . |
78 | 94 | ``` |
79 | | - |
80 | | -To push the Docker image to Docker Hub: |
| 95 | +Push to Docker Hub: |
81 | 96 | ```bash |
82 | 97 | docker push yourusername/eventify-api:latest |
83 | 98 | ``` |
84 | | -### API Documentation |
85 | 99 |
|
| 100 | +--- |
86 | 101 |
|
87 | | -### Running Tests |
| 102 | +## 🧪 Running Tests |
88 | 103 |
|
| 104 | +Run all test suites: |
89 | 105 | ```bash |
90 | | -npm test |
| 106 | +npm test |
| 107 | +``` |
| 108 | +Tests include unit, integration, and e2e coverage for controllers and services. |
| 109 | + |
| 110 | +--- |
| 111 | + |
| 112 | +## 🔄 CI/CD with GitHub Actions |
| 113 | + |
| 114 | +Eventify’s CI/CD pipeline automates testing and Docker image publishing. |
| 115 | +The workflow performs the following steps: |
| 116 | +1. Lint and build the application |
| 117 | +2. Run automated tests |
| 118 | +3. Build the Docker image |
| 119 | +4. Push the image to Docker Hub upon success |
| 120 | + |
| 121 | +You can visualize or edit this under `.github/workflows/ci.yml`. |
| 122 | + |
| 123 | +--- |
| 124 | + |
| 125 | +## 📘 API Documentation |
| 126 | + |
| 127 | +Full API reference is generated automatically (Swagger integration recommended). |
| 128 | +Once deployed, access docs via: |
91 | 129 | ``` |
| 130 | +http://localhost:3000/api/docs |
| 131 | +``` |
| 132 | + |
| 133 | +--- |
92 | 134 |
|
93 | | -### CI/CD with Github Actions |
| 135 | +## 🤝 Contributing |
94 | 136 |
|
95 | | -This project uses GitHub Actions for continuous integration and deployment. The action is configured to: |
96 | | -1. Build the project and run tests |
97 | | -2. Dockerize the application |
98 | | -3. Push the Docker image to Docker Hub if all tests pass. |
| 137 | +Contributions are always welcome! |
| 138 | +To contribute: |
| 139 | +1. Fork the repo |
| 140 | +2. Create a branch (`git checkout -b feature-name`) |
| 141 | +3. Commit (`git commit -am "Add feature"`) |
| 142 | +4. Push and open a Pull Request |
99 | 143 |
|
100 | | -### Contributing |
101 | | -Feel free to fork this repository, submit issues, or create pull requests. Contributions are welcome! |
| 144 | +Refer to [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines. |
| 145 | + |
| 146 | +--- |
102 | 147 |
|
103 | | -### How to contribute: |
| 148 | +## 🧩 Roadmap |
104 | 149 |
|
105 | | -1. Fork the repository |
106 | | -2. Create a new branch (`git checkout -b feature-name`) |
107 | | -3. Commit your changes (`git commit -am 'Add new feature'`) |
108 | | -4. Push to the branch (`git push origin feature-name`) |
109 | | -5. Create a new Pull Request |
| 150 | +- [ ] Add event categories & filters |
| 151 | +- [ ] Integrate payment gateway for premium events |
| 152 | +- [ ] Deploy production pipeline on AWS ECS |
| 153 | +- [ ] Add Swagger docs auto-generation |
| 154 | + |
| 155 | +--- |
| 156 | + |
| 157 | +## 🛡️ Security |
| 158 | + |
| 159 | +Report any security issues responsibly via email: **vlphadev@gmail.com** |
| 160 | +See [SECURITY.md](SECURITY.md) for details. |
| 161 | + |
| 162 | +--- |
| 163 | + |
| 164 | +## 🪪 License |
| 165 | + |
| 166 | +Licensed under the **MIT License** — see [LICENSE](LICENSE). |
| 167 | + |
| 168 | +--- |
110 | 169 |
|
111 | | -## License |
| 170 | +## 💬 Contact & Community |
112 | 171 |
|
113 | | -This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. |
| 172 | +Maintained by **[Zaiid Moumni](https://zaiid.moumni.uk)** |
| 173 | +📧 Contact: **vlphadev@gmail.com** |
| 174 | +Join discussions and feature ideas in Issues & PRs. |
114 | 175 |
|
115 | 176 | --- |
116 | 177 |
|
117 | | -Thank you for using **Eventify API**. We hope this backend will help you build amazing event management applications! |
| 178 | +_“Built with ❤️ using NestJS — scalable, modular, and open.”_ |
0 commit comments