In a group of 6 people, we created an Internal Issues and Feedback system that would serve our whole department's cohort. This system was designed to handle deadline extensions and issue reporting.
We started by creating a document outlining our key functional and non functional requirements, along with their priority levels to help us better plan our efforts. With this, we were able to draw out a basic use case diagram alongside a risk assessment to aid our planning. All of this is in more detail in the document below.
View the detailed documentWe then wrote up a design report that included a detailed class diagram, traceability matrix, and sequence diagrams alongside explanations for all of them.
View the detailed documentThe final step before coding was for us to prepare our acceptance tests to ensure that our programme would work as intended and we could test it properly.
View the detailed documentFor this project, we decided to use React for the frontend alongside Supabase and PostgreSQL for the backend. This was to ensure scalability while still being able to write the code by the deadline. As many of our team were unfamiliar with React, I was the one to teach many of them and get them up to pace.
As our project began, it became clear that many team members were unfamiliar with the technologies we had chosen, especially React and Supabase. Seeing this gap, I stepped up to lead the project, taking responsibility for guiding the team and ensuring that everyone was equipped to contribute effectively. I organised introductory sessions to cover the basics of React. This included walking through component structure, state management, and essential concepts to get everyone up to speed.
Throughout development, I provided ongoing support by setting up code reviews and one-on-one troubleshooting sessions. For instance, when we encountered challenges integrating Supabase with our frontend, I led a hands-on debugging session, explaining how to handle asynchronous data, manage authentication, and streamline data handling. This approach not only solved our immediate issues but helped build confidence and competence within the team.
As we moved into testing, I took the lead in organising our acceptance tests and test cases, ensuring our programme would function as required. I divided testing responsibilities among the team, provided guidance on testing techniques, and facilitated feedback sessions to identify improvements. By stepping into this leadership role and empowering others, I ensured our team delivered a scalable, fully functioning system that met our department’s needs.
Alongside my leadership responsibilities, I took on the core development of the student-facing features, specifically the deadline extension and issue reporting systems. I designed and implemented these features to be intuitive and straightforward for students, ensuring they could quickly request deadline extensions and report issues without any hassle. This involved creating user-friendly interfaces and optimising the workflow to minimise the number of steps required for students to complete their submissions.
For the deadline extension feature, I coded a form submission system that allowed students to specify the assignment, reason for extension, and preferred new deadline. I implemented validation checks and error handling to ensure that only complete, accurate requests were submitted. On the backend, I set up database triggers to notify faculty of incoming requests, streamlining the approval process.
For the issue reporting system, I developed a form that students could use to categorise and describe issues, which were then stored in a centralised database accessible to both faculty and administrative staff. I designed the interface to be accessible and responsive, allowing students to report issues easily from any device. By taking ownership of these features, I ensured that the student side of the system was both efficient and user-friendly, making it a reliable tool for the entire department.
Unfortunately, I am unable to make the code for this project publicly available due to privacy. The project contains sensitive information and proprietary code that cannot be shared. Additionally, the code is hosted in a private GitHub organization repository, which restricts public access. However, I am happy to discuss the project in more detail and share my experiences and insights. Please feel free to reach out if you have any questions or would like to learn more about the project.