Skip to content

MuhammadAhmadHamim/charter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

36 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Charter banner

Oracle APEX SQL Pages Roles Status



"A charter is the founding document of any official organization." Charter is the platform that keeps everything after it running.



β—ˆ What This Is

A fully database-driven Campus Club and Event Management Suite built as the Database Systems semester project. Charter centralizes every operation a university club touches β€” memberships, events, attendance, budgets, feedback, sponsorships, venues β€” into a single Oracle SQL backend and Oracle APEX frontend, with role-based access control separating what each user can see and do.

16 tables. 17 APEX pages. 8 analytical queries. 4 roles. One system.


β—ˆ The Problem It Solves

University clubs operate across spreadsheets, WhatsApp groups, and verbal agreements. There is no single source of truth for who attended what, how much budget remains, which venues are available, or how engaged members actually are.

Charter fixes that β€” a centralized analytical platform where admins, presidents, faculty advisors, and members each interact with exactly the data their role requires.


β—ˆ Feature Set

πŸ” Role Based Access Control

Four roles. Four different views of the same system. Custom authentication backed by the CHARTER_USERS table β€” not Oracle APEX default accounts. Login credentials verified against the database, roles assigned via session state after authentication.

Role Access Level
Admin Full access β€” all pages, all CRUD
President Events, Workshops, Competitions, Meetups, Attendance, Memberships β€” view Registrations, edit existing ones
Member Registration and Feedback only - view Registrations & Feedback, create new ones
Advisor Analytics and Budget β€” read only
πŸ›οΈ Club and Member Management

Create and manage clubs with assigned faculty advisors. Track members by degree, semester, and status. Memberships are club-specific β€” a member's role (President, Secretary, etc.) is tied to a specific club, not their global account.

πŸ“… Event Management β€” Workshop, Competition, Meetup

Events are modeled using Total Disjoint Specialization β€” every event must be exactly one of Workshop, Competition, or Meetup, each with its own subclass-specific fields. Like an abstract class in Java β€” you cannot instantiate a bare Event.

Subclass-filtered dropdowns ensure Workshop pages only show Workshop-type events. Same for Competitions and Meetups.

βœ… Registration and Attendance Pipeline

Members register for events with status defaulting to Waitlisted. Presidents and Admins confirm or cancel registrations. Attendance is tracked per confirmed registration. Only members with Attended = YES are eligible to submit feedback β€” enforced at the database level, not just the UI. Button level authorization separates who can create vs edit at every stage of the pipeline.

⭐ Feedback System

Feedback is linked to Attendance, not Member. You cannot review an event you did not attend. Verified attendance is the gate β€” keeping the rating system honest.

πŸ’° Budget Tracking

Per-club, per-semester budgets with a virtual column for remaining balance β€” auto-computed as TotalAmount - AmountSpent directly in the schema. No manual updates, no sync issues.

🏒 Venue Management

Venues tracked with availability control. Only available venues appear in the Event form dropdown β€” unavailable venues are filtered at the query level, not the application level.

πŸ“Š Analytics Dashboard

8 analytical charts and reports. 4 live stat cards with real-time data. Visible to Admin and Advisor roles.

  • Context Aware Read Only Fields β€” record identity fields locked after creation, operational fields remain editable
  • Transparent Subclass Relations β€” Event IDs displayed directly in subclass forms, filtered by EventType

β—ˆ Database Architecture

Schema β€” 16 Tables

# Table Role
1 FacultyAdvisor Club oversight
2 Club Core club entity
3 Member Registered students
4 Role Club roles and permissions
5 Membership Resolves Member ↔ Club M:N
6 Venue Event locations with availability
7 Sponsor Event sponsors
8 Event Superclass β€” core of the system
9 Workshop Subclass of Event
10 Competition Subclass of Event
11 Meetup Subclass of Event
12 Registration Resolves Member ↔ Event M:N
13 Attendance Tracks event attendance
14 Budget Per club per semester
15 Feedback Verified attendee reviews
16 Charter_Users Application user accounts

Key Design Decisions

-- Total Disjoint Specialization on Event
-- Every event MUST be a Workshop, Competition, or Meetup
-- Cannot insert a bare Event row β€” like abstract class in Java
CONSTRAINT event_type CHECK (EventType IN ('Workshop','Competition','Meetup'))

-- Virtual column β€” Budget Remaining auto-computed, never stale
BudgetRemaining AS (TotalAmount - AmountSpent)

-- Feedback gate β€” only verified attendees can review
-- Feedback.AttendanceID β†’ Attendance.AttendanceID
-- WHERE Attendance.Attended = 'YES'

-- Venue filter β€” only available venues in Event form dropdown
WHERE Venue.IsAvailable = 'YES'

-- Button level authorization β€” granular control per operation
-- Member can create registrations but not edit existing ones
-- President can edit registrations but not create new ones
-- Advisor can view budget but cannot create or modify records
-- Only Admin can delete any record system wide

-- Read Only fields on edit β€” context aware
-- Fields that define record identity are locked after creation
-- Member, Club locked in Membership β€” role change via update
-- EventType, Club locked in Event β€” venue and sponsor flexible
-- Registration reference locked in Attendance and Feedback
-- Club, Semester locked in Budget β€” amounts remain editable

-- Subclass transparency β€” numeric Event IDs in subclass forms
-- Makes PK-FK relationship explicit at UI level
-- Filtered by EventType β€” Workshop IDs only in Workshop form

Database Diagrams

πŸ“ Enhanced Entity Relationship Diagram

EERD

πŸ—ΊοΈ Relational Model

Relational Model


β—ˆ Analytical Queries

# Query What It Reveals
1 Most Attended Events Events ranked by verified attendance count
2 Top Rated Events Events ranked by average feedback score
3 Club Budget Utilization Spending percentage per club per semester
4 Most Active Members Members ranked by total registrations
5 Sponsor Contribution Ranking Sponsors ranked by total amount contributed
6 Monthly Event Count Event volume trend over time
7 Venue Utilization Venues ranked by events hosted
8 Member Retention Membership growth tracked over time

β—ˆ Project Structure

charter/
β”‚
β”œβ”€β”€ docs/
β”‚   β”œβ”€β”€ EERD.png                           ←  entity relationship diagram
β”‚   └── Relational_Model.png               ←  relational model
β”‚
β”œβ”€β”€ sql/
β”‚   β”œβ”€β”€ 01_create_tables.sql               ←  full schema creation
β”‚   β”œβ”€β”€ 02_insert_data.sql                 ←  sample data
β”‚   β”œβ”€β”€ 03_auth_setup.sql                  ←  Charter_Users setup
β”‚   └── analytical_queries/
β”‚       β”œβ”€β”€ 01_most_attended_events.sql
β”‚       β”œβ”€β”€ 02_top_rated_events.sql
β”‚       β”œβ”€β”€ 03_club_budget_utilization.sql
β”‚       β”œβ”€β”€ 04_most_active_members.sql
β”‚       β”œβ”€β”€ 05_sponsor_contribution_ranking.sql
β”‚       β”œβ”€β”€ 06_monthly_event_count.sql
β”‚       β”œβ”€β”€ 07_venue_utilization.sql
β”‚       └── 08_member_retention.sql
β”‚
β”œβ”€β”€ apex/
β”‚   └── charter_app.sql                    ←  full APEX application export
β”‚
└── README.md

🎨 Design System

Element Value
Primary Color #1B2A4A Deep Navy
Accent Color #F0A500 Gold
Background #F8F9FA Off White
Card Background #FFFFFF Pure White
Text #2D2D2D Dark Charcoal
Theme Oracle APEX Universal Theme
Icons Font Awesome
Chart Colors Navy + Gold diagonal alternating

β—ˆ Setup

Prerequisites

Oracle Database Β· Oracle APEX Workspace

# Step 1 - Clone
git clone https://github.com/MuhammadAhmadHamim/charter.git
-- Step 2 β€” Create the schema
-- SQL Workshop β†’ SQL Scripts β†’ Run
01_create_tables.sql

-- Step 3 β€” Load sample data
02_insert_data.sql

-- Step 4 β€” Configure authentication
03_auth_setup.sql
-- Step 5 β€” Import the APEX application
App Builder β†’ Import β†’ charter_app.sql

Login Credentials

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Username   β”‚   Password    β”‚   Role    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚   admin      β”‚   admin123    β”‚   Admin   β”‚
β”‚   president  β”‚ president123  β”‚ President β”‚
β”‚   member     β”‚   member123   β”‚   Member  β”‚
β”‚   advisor    β”‚   advisor123  β”‚  Advisor  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“š Course Information

  • Course β€” Database Systems (DBS)
  • Semester β€” 3
  • Institution β€” COMSATS University Islamabad, Wah Cantt Campus
  • Instructor β€” Amjad Usman

β—ˆ Skills This Project Demonstrates


β—ˆ A Note on This Project

Every design decision in Charter has a reason. The Total Disjoint Specialization on Event is not an accident β€” it enforces at the schema level what would otherwise require application-level validation. The Feedback-to-Attendance link is not just good design β€” it makes gaming the review system structurally impossible. The virtual column on Budget is not a shortcut β€” it eliminates an entire category of sync bugs before they can exist.

Good database design is not about tables. It's about making wrong states unrepresentable.


footer

Designed at the schema level. Enforced at every level below it.

Usman

About

Charter is a campus club & event management suite built with Oracle SQL and Oracle APEX. Features role-based access control, event subclass hierarchy, attendance pipeline, budget tracking, sponsor management and 8 analytical charts across 17 pages.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors