Rashik.
●  Case study

Smart Waste ManagementPHP/MySQL waste service platform

A subscription-gated waste service platform — user and admin roles, a 9-table relational schema, and the full workflow from pickup request to leaderboard, built for CSE327 at NSU.

Academic project
Year2024
RoleCoursework project · full-stack
StackPHP · MySQL · MariaDB · Bootstrap
StatusAcademic project
●  The problem

What it had to solve.

The brief for CSE327 was to design and build a small but complete service web application end-to-end — schema, server, and UI. The interesting design question was where to put the boundary between user features and admin operations: how to keep the same data model honest across both surfaces, gate subscription-gated features behind an active plan, and keep the schema simple enough to reason about without losing the relational integrity that the workflows actually need.
●  The system

How the pieces fit together.

A procedural PHP monolith on Apache, fronted by Bootstrap-rendered HTML and backed by a 9-table MySQL schema. Two parallel surfaces — a player-facing user app and an admin console — share the same models. Feature gating runs at the request boundary based on subscription state.

●  Module tour

The surfaces users and admins actually touched.

01Module

User workflows

Subscription, waste reporting, sorting guidance, special pickups, notifications, feedback, and a points leaderboard — gated behind an active subscription.

  • Three subscription tiers (Basic / Standard / Premium) with expiry checks
  • Self-reported waste dumps generate points at 10× weight (kg)
  • Special pickup requests for bulk or hazardous items
  • Sorting guide for the four waste categories
smart waste · user app
Waste ReportSubmit
Sorting Guide4 categories
Special PickupRequest
LeaderboardPoints
02Module

Admin operations

A separate admin login fronts management views over the same tables — schedule collections, dispatch notifications, review feedback, and audit the leaderboard.

  • Schedule waste collection by waste type, date, and location
  • Send location-targeted notifications to all matching users
  • Pickup queue management with status updates
  • Feedback review with delete actions
smart waste · admin · queues
Admin console
Admin
Pickup queue3 pending
Notifications5 sent
Feedback2 new
ScheduleWeekly
03Module

Relational schema

Nine tables covering accounts, subscriptions, waste types, collections, dumps, notifications, pickups, feedback, and leaderboard — with foreign keys + cascade rules that match the workflows.

  • Users + Admin as separate authentication surfaces
  • Subscription ledger with start/end dates and amount
  • Notifications targeted by user + waste type + collection date
  • Append-only waste_dumps feeding leaderboard projections
smart waste · schema · 9 tables
MySQL · relational schema
01users
02admin
03subscription
04waste_types
05waste_collection
06waste_dumps
07notifications
08special_pickups
09feedback
●  Engineering decisions

Choices that shaped the build.

01 / 04

Subscription gate at the boundary, not inside features

Each user feature checks subscription state at entry rather than every feature reimplementing access logic. Expired subscriptions get a renewal page; missing subscriptions get a purchase page; active subscriptions reach the feature. One place to read, one place to change.

02 / 04

Same models, two surfaces

The user app and the admin console read and write against the same nine tables. No duplicate model — admin sees the same pickup request the user submitted; the leaderboard is projected from the same waste_dumps the user wrote into.

03 / 04

Points as a projection, not a stored balance

The leaderboard query sums weight × 10 on read rather than maintaining a separately incremented points balance. Slower on huge datasets, but completely auditable and immune to drift between the source rows and the displayed total.

04 / 04

Notifications as targeted database records

Admin dispatches a notification by location + waste type; the system writes one row per matching user. There's no real-time push — the user sees the notification next time they visit the page. Simpler than implementing a transport, accurate for the academic scope.

Engineering decisions
●  What I learned

The honest part.

Building both surfaces against the same relational schema taught me that 'user app' and 'admin console' are mostly conventions for how data is read and written — not separate systems. The instinct to gate features at the edge rather than scatter access logic through every handler showed up here first; it's the same shape I'd use again, just better-named, on a larger service.
●  Current status

Where this lives now.

Completed as a CSE327 coursework project at NSU in Summer 2024. Runs locally on XAMPP/Apache; not deployed. Code archived; not actively developed.