Skip to content

win-x-u-r/Event-Management-Platform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

125 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŽ“ AURAK Event Management Platform

A comprehensive platform for managing university events from submission to archival

Django React TypeScript PostgreSQL Tailwind CSS

Features β€’ Installation β€’ Usage β€’ API β€’ Contributing


πŸ“– About

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.

✨ Why EMP?

  • πŸ”„ 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

πŸ—οΈ Tech Stack

Backend

Django          - Python web framework
PostgreSQL      - Relational database
DRF             - RESTful API
JWT             - Token-based authentication

Frontend

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

✨ Features

πŸ“… Event Management

  • βœ… Comprehensive event creation forms
  • βœ… Multi-level approval workflows
  • βœ… Real-time status tracking
  • βœ… Calendar integration
  • βœ… Event categorization & tagging

πŸ’° Budget Management

  • βœ… Line-item budget requests
  • βœ… Treasurer review & approval
  • βœ… Cost tracking & reporting
  • βœ… Financial oversight tools
  • βœ… Budget analytics

πŸ“Έ Media & Documentation

  • βœ… Photo & video uploads
  • βœ… Document management
  • βœ… Secure file storage
  • βœ… Media galleries
  • βœ… Download capabilities

πŸ‘₯ Guest Registration

  • βœ… Public registration forms
  • βœ… Barcode generation
  • βœ… Attendance tracking
  • βœ… Check-in system
  • βœ… CSV export

🎯 User Roles

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

πŸš€ Installation

Prerequisites

Before you begin, ensure you have the following installed:

Backend Setup

# 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 runserver

The backend will be available at http://localhost:8000

Frontend Setup

# 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 dev

The frontend will be available at http://localhost:8080

πŸ’» Usage

Quick Start

  1. Start the Backend Server

    cd EMP
    env\Scripts\activate  # Windows
    python manage.py runserver
  2. Start the Frontend Server

    cd FrontEnd/event-form-beautifier
    npm run dev
  3. Access the Application

    • Navigate to http://localhost:8080
    • Login with your AURAK email
    • Verify OTP sent to your email
    • Start managing events!

Configuration

Backend Configuration (.env)

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-password

Frontend Configuration (src/config.ts)

export const API_BASE_URL = 'http://localhost:8000/api';
export const ENVIRONMENT = 'development';

πŸ“ Project Structure

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/

πŸ”Œ API Reference

Authentication

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

Events

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

Media

Method Endpoint Description
GET /api/media/ List media files
POST /api/media/ Upload media
DELETE /api/media/{id}/ Delete media

Budget

Method Endpoint Description
GET /api/budgets/ List budget items
POST /api/budgets/ Create budget item
PATCH /api/budgets/{id}/ Update budget status

Attendance

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

Create Event

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",
  ...
}

πŸ—„οΈ Database Schema

View Entity Relationship Diagram

Core Entities

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚    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    β”‚
                                                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ§ͺ Testing

Backend Tests

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 report

Frontend Tests

cd FrontEnd/event-form-beautifier
npm test

# With coverage
npm test -- --coverage

🚒 Deployment

Building for Production

Frontend 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:8000

Environment Variables (Production)

DEBUG=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.com

🀝 Contributing

We welcome contributions! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch
    git checkout -b feature/amazing-feature
  3. Commit your changes
    git commit -m 'Add amazing feature'
  4. Push to the branch
    git push origin feature/amazing-feature
  5. Open a Pull Request

Code Style

  • Python: Follow PEP 8 guidelines
  • TypeScript/React: Use ESLint and Prettier configurations
  • Commits: Use conventional commit messages

πŸ“„ License

This project is developed for AURAK internal use.

πŸ‘₯ Team

Internship Group 6 - AURAK Computer Science Department

πŸ™ Acknowledgments

  • American University of Ras Al Khaimh
  • Project Supervisors
  • All Contributors

πŸ“ž Support

For questions, issues, or feature requests:


⬆ Back to Top

Made with ❀️ by AURAK Students

About

A comprehensive platform for managing university events from submission to archival

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors