Convene is a Event Management Platform designed to facilitate the creation, discovery, and management of events. It provides a robust backend API supporting features like ticketing, payments, real-time notifications, and personalized event recommendations using ML.NET.
- Backend API (Render):[ [https://convene-backend-7whb.onrender.com/swagger]
- Frontend Client (Netlify): https://curious-buttercream-1ddd3a.netlify.app/
- Super Admin Email:admin@convene.com Password:Admin@123
- Organizer Email:organizer@gmail.com Password:123456
- User Management:
- Role-based authentication (Admin, Organizer, Attendee) via JWT.
- Secure password hashing.
- Event Management:
- Create, update, and manage events.
- Categorization and tagging.
- Support for multiple ticket types and pricing rules.
- Dynamic Pricing for Tickets
- EarlyBird
- lastDayBefore
- Demandbased
- Booking & Ticketing:
- Seamless booking flow.
- QR code generation for tickets.
- Ticket scanning and validation (Gatekeeper role).
- Payments:
- Integrated with Chapa for payment processing.
- Background payment verification jobs.
- Recommendation System:
- Hybrid recommendation engine using ML.NET (Matrix Factorization) and rule-based scoring.
- Personalized event suggestions based on user interactions.
- Real-time Notifications:
- SignalR integration for instant updates to users.
- Email notifications via SMTP.
- Telegram bot integration.
- Monitoring & Logging:
- Structured logging with Serilog.
- Health checks and performance monitoring.
- Framework: ASP.NET Core 8.0
- Database: PostgreSQL (Entity Framework Core)
- Caching: Redis
- Machine Learning: ML.NET
- Real-time: SignalR
- Payment Gateway: Chapa
- Cloud Storage: Cloudinary (for images)
- Containerization: Docker
Before you begin, ensure you have the following installed:
The application relies on appsettings.json or appsetting.template.json for configuration. You may need to update the ConnectionStrings and API keys.
- Clone the repository
- Navigate to the API project:
cd Convene.API - Update
appsettings.jsonorappsetting.template.json(or use User Secrets/Environment Variables): #locationConvene-Backend/Convene.Api/appsetting.jsonorappsetting.template.json{ "ConnectionStrings": { "DefaultConnection": "Host=localhost;Port=5432;Database=ConveneDb;Username=postgres;Password=your_password", "Redis": "localhost:6379" }, "Jwt": { "Secret": "YourSuperSecretKeyHere..." }, "Chapa": { "SecretKey": "your_chapa_secret_key" }, "CloudinarySettings": { "CloudName": "your_cloud_name", "ApiKey": "your_api_key", "ApiSecret": "your_api_secret" } }
- Restore dependencies:
dotnet restore
- Apply database migrations:
Note: The application also attempts to apply migrations automatically on startup.
dotnet ef database update --project ../Convene.Infrastructure --startup-project . - Run the application:
The API will be available at
dotnet run
http://localhost:5000(or the port configured inlaunchSettings.json).
- Build the Docker image:
docker build -t convene-api . - Run the container:
docker run -p 5000:8080 -e ConnectionStrings__DefaultConnection="Host=host.docker.internal;..." convene-api
To run the unit and integration tests:
dotnet testOnce the application is running, you can access the Swagger UI to explore the API endpoints:
- Swagger UI:
http://localhost:5000/swagger/index.html