← PORTFOLIO
Stelo — event listing web app

STELO

(EVENT LISTING WEB APP)

2025

GITHUB

A ROLE-GATED EVENT MANAGEMENT PLATFORM FOR CAMPUS COMMUNITIES — COMMITTEES PUBLISH EVENTS, STUDENTS REGISTER AND ATTEND, ADMINS GOVERN THE PIPELINE. FULL LIFECYCLE: DRAFT → APPROVAL → LIVE → QR CHECK-IN.

INDEPENDENTLY ARCHITECTED END-TO-END — SCHEMA DESIGN, API CONTRACT, AUTH STRATEGY, STORAGE LAYER, AND FRONTEND ROUTING ALL FROM SCRATCH. NO STARTER TEMPLATE OR TUTORIAL FOLLOWED.

ARCHITECTURE:

FRONTEND
NEXT.JS 15 APP ROUTER · REACT 19 · TYPESCRIPT · NEXTAUTH.JS · TAILWIND V4 · SHADCN/UI
BACKEND
DJANGO 5 · DRF · SIMPLEJWT · CUSTOM USER MODEL · ROLE RBAC
DATABASE
POSTGRESQL 15 · DJANGO ORM · UUID TOKENS · UNIQUE_TOGETHER CONSTRAINTS
STORAGE
BACKBLAZE B2 SDK · SIGNED URLS (TTL) · SEPARATE BUCKETS PER ASSET TYPE
AUTH FLOW
JWT ISSUED BY DJANGO · STORED IN NEXTAUTH SESSION · BEARER ON EVERY API CALL
INFRA
DOCKER COMPOSE · HEALTH-CHECK STARTUP ORDER · DECOUPLED SERVICES

FEATURES:

MULTI-ROLE RBAC

4 ROLES — ADMIN, COMMITTEE, MPSTME USER, USER — ENFORCED AT BOTH NEXT.JS MIDDLEWARE AND DRF PERMISSION CLASS LAYERS. NO CLIENT-ONLY TRUST.

EVENT APPROVAL PIPELINE

EVENTS ENTER A PENDING STATE AFTER CREATION. ADMINS REVIEW AND APPROVE VIA A DEDICATED DASHBOARD BEFORE ANYTHING GOES LIVE.

QR ATTENDANCE SYSTEM

EACH REGISTRATION GETS A UNIQUE UUID TOKEN. COMMITTEES SCAN VIA LIVE CAMERA FEED; BACKEND VALIDATES, TIMESTAMPS CHECK-IN, AND REJECTS DUPLICATE SCANS.

REAL-TIME ANNOUNCEMENTS

COMMITTEES PUSH EVENT-SCOPED ANNOUNCEMENTS. PER-USER READ TRACKING VIA A JUNCTION TABLE DRIVES UNREAD BADGE COUNTS IN THE DASHBOARD.

CLOUD MEDIA STORAGE

HAND-WRITTEN B2 SDK WRAPPER HANDLES UPLOADS, TTL-SIGNED URL GENERATION, AND DELETION — NO DIRECT BUCKET EXPOSURE TO CLIENTS.

WEBGL LANDING PAGE

SHADERGRADIENT (GLSL), THREE.JS, REACT THREE FIBER, FRAMER MOTION, AND GSAP — VISUAL HEAVY LIFTING WITHOUT COMPROMISING THE TECHNICAL CORE.

STACK:

NEXT.JS 15 * DJANGO REST FRAMEWORK * POSTGRESQL * BACKBLAZE B2 * DOCKER

TYPESCRIPT * PYTHON * REACT 19 * NEXTAUTH.JS * THREE.JS * FRAMER MOTION * GSAP

***