Features β’ Installation β’ Usage β’ API β’ Contributing
The Event Management Platform (EMP) streamlines the entire event lifecycle at the American University of Ras Al Khaimh (AURAK). From initial event submission and multi-level approval workflows to post-event media archiving and attendance tracking, EMP handles it all.
- π Streamlined Workflows: Multi-level approval system with role-based access
- π Real-time Tracking: Monitor event status, budgets, and attendance in real-time
- π± Modern UI: Beautiful, responsive interface built with React and shadcn/ui
- π Secure: Email-based OTP authentication with planned SSO integration
- π Analytics: Comprehensive reporting and data export capabilities
Django - Python web framework
PostgreSQL - Relational database
DRF - RESTful API
JWT - Token-based authentication
React 18 - UI library
TypeScript - Type-safe JavaScript
Vite - Fast build tool
shadcn/ui - Component library
Tailwind CSS - Utility-first CSS
React Router v6 - Client-side routing
Zod - Schema validation
|
|
|
|
| Role | Capabilities |
|---|---|
| Event Creator | Submit events, track status, share registration links |
| Department Admin | Review & approve departmental events, view analytics |
| Ultimate Admin | Full system access, manage all events & users |
| Treasurer | Review budgets, approve expenses, financial oversight |
| Event Host | Upload media, manage documentation, post-event updates |
Before you begin, ensure you have the following installed:
# Clone the repository
git clone https://github.com/win-x-u-r/Event-Management-Platform.git
cd Event-Management-Platform
# Navigate to backend directory
cd EMP
# Create and activate virtual environment
python -m venv env
# Windows
env\Scripts\activate
# macOS/Linux
source env/bin/activate
# Install dependencies
pip install -r requirements.txt
# Configure database in EMP/settings.py
# Create database in PostgreSQL first
# Run migrations
python manage.py migrate
# Create superuser
python manage.py createsuperuser
# Start development server
python manage.py runserverThe backend will be available at http://localhost:8000
# Navigate to frontend directory
cd FrontEnd/event-form-beautifier
# Install dependencies
npm install
# Configure API endpoint in src/config.ts
# Update with your backend URL
# Start development server
npm run devThe frontend will be available at http://localhost:8080
-
Start the Backend Server
cd EMP env\Scripts\activate # Windows python manage.py runserver
-
Start the Frontend Server
cd FrontEnd/event-form-beautifier npm run dev -
Access the Application
- Navigate to
http://localhost:8080 - Login with your AURAK email
- Verify OTP sent to your email
- Start managing events!
- Navigate to
DEBUG=True
SECRET_KEY=your-secret-key-here
DATABASE_URL=postgresql://user:password@localhost/dbname
ALLOWED_HOSTS=localhost,127.0.0.1
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_HOST_USER=your-email@aurak.ac.ae
EMAIL_HOST_PASSWORD=your-app-passwordexport const API_BASE_URL = 'http://localhost:8000/api';
export const ENVIRONMENT = 'development';Internship/
βββ π EMP/ # Django Backend
β βββ manage.py
β βββ requirements.txt
β βββ π EMP/ # Main Django app
β β βββ settings.py
β β βββ urls.py
β β βββ wsgi.py
β βββ π events/ # Events module
β β βββ models.py
β β βββ views.py
β β βββ serializers.py
β β βββ urls.py
β βββ π authentication/ # Auth module
β βββ π attendance/ # Attendance tracking
β βββ π budget/ # Budget management
β βββ π media/ # Media handling
β βββ π users/ # User management
β
βββ π FrontEnd/
β βββ π event-form-beautifier/ # React Frontend
β βββ π src/
β β βββ π components/ # React components
β β β βββ π ui/ # shadcn/ui components
β β β βββ EventRequestForm.tsx
β β β βββ EventViewModal.tsx
β β βββ π pages/ # Route pages
β β β βββ Login.tsx
β β β βββ UserDashboard.tsx
β β β βββ AdminDashboard.tsx
β β β βββ TreasurerDashboard.tsx
β β βββ π contexts/ # React contexts
β β βββ π services/ # API services
β β βββ π utils/ # Utilities
β βββ package.json
β βββ vite.config.ts
β
βββ π Database/ # SQL scripts
β βββ CREATE_TABLES.sql
β βββ INSERT_DATA.sql
β βββ QUEREY.sql
β
βββ π Documentation/ # Project docs
βββ API Documentation/
βββ ERM Diagram/
βββ Requirements/
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/auth/send-otp/ |
Send OTP to email |
POST |
/api/auth/verify-otp/ |
Verify OTP and login |
GET |
/api/auth/me/ |
Get current user |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/events/ |
List all events |
POST |
/api/events/ |
Create new event |
GET |
/api/events/{id}/ |
Get event details |
PATCH |
/api/events/{id}/ |
Update event |
DELETE |
/api/events/{id}/ |
Delete event |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/media/ |
List media files |
POST |
/api/media/ |
Upload media |
DELETE |
/api/media/{id}/ |
Delete media |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/budgets/ |
List budget items |
POST |
/api/budgets/ |
Create budget item |
PATCH |
/api/budgets/{id}/ |
Update budget status |
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/attendance/register/ |
Register guest |
GET |
/api/attendance/{event_id}/ |
Get attendance list |
GET |
/api/attendance/{event_id}/export/ |
Export as CSV |
π Request/Response Examples
Request:
POST /api/events/
{
"name": "Tech Workshop 2025",
"description": "Annual technology workshop",
"start_date": "2025-03-15",
"end_date": "2025-03-15",
"venue": "Engineering Building",
"category": "Workshop",
"expected_attendees": 50
}Response:
{
"id": 1,
"name": "Tech Workshop 2025",
"status": "pending",
"created_at": "2025-01-22T10:00:00Z",
...
}View Entity Relationship Diagram
βββββββββββββββ βββββββββββββββ βββββββββββββββ
β User β β Event β β Budget β
βββββββββββββββ€ βββββββββββββββ€ βββββββββββββββ€
β id ββββββ β id ββββββ¬βββββ id β
β email β β β name β β β item_name β
β name β ββββββ creator_id β β β quantity β
β department β β start_date β β β cost β
β role β β end_date β β β status β
βββββββββββββββ β status β β βββββββββββββββ
β venue β β
βββββββββββββββ β βββββββββββββββ
ββββββ Media β
βββββββββββββββ€
β id β
β file β
β type β
β event_id β
βββββββββββββββ
cd EMP
python manage.py test
# Run specific app tests
python manage.py test events
# With coverage
pip install coverage
coverage run --source='.' manage.py test
coverage reportcd FrontEnd/event-form-beautifier
npm test
# With coverage
npm test -- --coverageFrontend Build:
cd FrontEnd/event-form-beautifier
npm run build
# Output: dist/Backend Setup:
# Install production dependencies
pip install gunicorn
# Collect static files
python manage.py collectstatic
# Run with Gunicorn
gunicorn EMP.wsgi:application --bind 0.0.0.0:8000DEBUG=False
SECRET_KEY=strong-production-secret-key
DATABASE_URL=postgresql://user:pass@host:5432/dbname
ALLOWED_HOSTS=yourdomain.com,www.yourdomain.com
CORS_ALLOWED_ORIGINS=https://yourdomain.comWe welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Commit your changes
git commit -m 'Add amazing feature' - Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
- Python: Follow PEP 8 guidelines
- TypeScript/React: Use ESLint and Prettier configurations
- Commits: Use conventional commit messages
This project is developed for AURAK internal use.
Internship Group 6 - AURAK Computer Science Department
- American University of Ras Al Khaimh
- Project Supervisors
- All Contributors
For questions, issues, or feature requests:
- π§ Email: 2023005883@aurak.ac.ae
- π Issues: GitHub Issues
- π Documentation: See
/Documentationfolder
Made with β€οΈ by AURAK Students