Eventify is a collaborative platform designed to simplify event management. It allows users to create, manage, and join events while providing real-time collaboration and insightful analytics.
- JWT-based Register/Login system.
- User roles: Admin (event creator) and Participant.
- Create, update, and delete events.
- Add and manage tasks within events (e.g., catering, decoration).
- Live Chat: Participants can chat in real time.
- Real-time Task Updates: Task statuses update dynamically.
- Email Notifications: Event invites and task updates.
- Push Notifications: Optional for task reminders.
- View insights such as:
- Number of participants per event.
- Task completion rates.
- Monitor all events and participants.
- Assign tasks to specific participants.
| Field | Type | Description |
|---|---|---|
id |
PK | Unique identifier. |
username |
String | Username of the user. |
email |
String | Email address of the user. |
password |
String | Hashed password. |
role |
Enum | Role: Admin or Participant. |
| Field | Type | Description |
|---|---|---|
id |
PK | Unique identifier. |
title |
String | Title of the event. |
description |
Text | Description of the event. |
date |
DateTime | Date and time of the event. |
location |
String | Event location. |
created_by |
FK (User) | Admin who created the event. |
| Field | Type | Description |
|---|---|---|
id |
PK | Unique identifier. |
title |
String | Title of the task. |
description |
Text | Task details. |
status |
Enum | Status: To Do, In Progress, Done. |
assigned_to |
FK (User) | Participant assigned to task. |
event_id |
FK (Event) | Event the task belongs to. |
| Field | Type | Description |
|---|---|---|
id |
PK | Unique identifier. |
content |
Text | Message content. |
sender_id |
FK (User) | User who sent the message. |
event_id |
FK (Event) | Event the message belongs to. |
timestamp |
DateTime | Time message was sent. |
- Framework: Spring Boot.
- Database: PostgreSQL.
- ORM: Hibernate.
- WebSocket: Spring WebSocket for real-time features.
- Authentication: Spring Security with JWT.
- Email Service: Spring Mail.
- Testing: JUnit + Mockito.
- Framework: React, React Router & Vite.
- UI: Shadcn.
- State Management: Zustand.
- Containerization: Docker.
- Reverse Proxy: Caddy.
- REST API
- Build robust endpoints with validation and error handling.
- WebSockets
- Enable real-time chat and task updates with authentication.
- Database Relationships
- Manage complex relations between
User,Event, andTasktables.
- Manage complex relations between
- Testing
- Implement unit and integration tests for critical services.
- SQL Optimization
- Optimize queries for analytics and performance.
- Deployment
- Dockerize and deploy the app with a reverse proxy.
- Java 17+
- PostgreSQL
- Node.js (for frontend)
- Docker (optional for containerization)
-
Clone the repository:
git clone https://github.com/maiko26/eventify.git
-
Navigate to the backend folder:
cd eventify/backend -
Configure application properties for PostgreSQL and JWT:
spring.datasource.url=jdbc:postgresql://localhost:5432/eventify spring.datasource.username=your_db_user spring.datasource.password=your_db_password jwt.secret=your_jwt_secret jwt.expiration=3600000
-
Run the application:
./mvnw spring-boot:run
- Navigate to the frontend folder:
cd eventify/frontend - Install dependencies:
npm install
- Run the development server:
npm start
- Build and run Docker containers:
docker-compose up --build
Feel free to fork this repository and submit pull requests for improvements or new features.
This project is licensed under the MIT License. See the LICENSE file for details.