JavaScript
Competition Web App
About this Project
A full-stack web app for hosting coding competitions with role-based access for participants, judges, and admins — a University of the West of Scotland project.
Key Features
- Role-Based Access Control: Distinct user roles (USER, JUDGE, ADMIN) each with different permissions and views.
- User Authentication: Secure registration and login using JWT for session management and
bcryptjsfor password hashing. - Competition Management: Administrators can create, update, and manage competition details.
- Submission System: Authenticated users can submit entries to active competitions.
- Rating and Judging: Judges access a dedicated portal to view and rate all submissions.
- Dynamic Frontend: A responsive UI built with Next.js and Material-UI.
Technical Highlights
The backend is a GraphQL API powered by Node.js and Express.js, with MongoDB (via Mongoose) as the data store. The frontend uses Apollo Client for data fetching and the React Context API for global state. The entire stack — frontend, backend, and a MongoDB instance — is containerised with Docker Compose, and the app is configured for deployment on Heroku.
Outcome
A university coursework project exploring secure multi-user application design with real-world technologies. Key learnings included designing a GraphQL schema from scratch, implementing JWT-based role separation, and orchestrating a multi-service stack with Docker Compose.