-
Notifications
You must be signed in to change notification settings - Fork 1
SRS V1
Our vision is to provide lecturers and academic staff with the tools necessary to create an interactive, collaborative learning environment that inspires curiosity and exploration. Through dynamic 3D visuals and interactive materials, ClassConnect aims to cultivate an atmosphere where learning is not just informative but also deeply engaging and enjoyable for all participants.
The primary objective of the project is to develop a comprehensive web application that provides a platform that innovative lecturers can easily incorporate into their lessons, enhancing the learning experience for students across various disciplines.
The business need for the application arises from recent advancements in virtual reality (VR), 3D rendering, and streaming technologies, along with the emergence of new VR platforms like Apple Vision and Meta Quest. As a result, there is a growing number of individuals with access to VR headsets. However, there is currently a limited number of applications that fulfill the need for educational content in this space. Therefore, the web application addresses a significant gap in the market by providing a solution that leverages these technological advancements to deliver immersive and interactive educational experiences.
The project scope involves developing ClassConnect, an immersive educational platform, focusing on the following key aspects: User enrollment and workspace management functionalities for administrators. Construction and scheduling of lessons with 3D environment integration for lecturers. Inclusion of features for 3D environment manipulation and annotation. Real-time viewing and interaction capabilities for students, along with access to learning materials.
- As an Administrator, I should be able to manage and add different organisations to the platform with ease.
- As an Administrator, I should be able to control which people I can add to the organisation and who I also remove from it. The people I should be able to add would be academic staff and students.
- As an Administrator, I should be able to control the permissions that the people I add to the organisation have.
- As an Administrator, I should be able to add and remove workspaces that will be used by the staff and the students.
- As a lecturer, I should be able to create a workspace where I can upload study material and plan lessons for the students of the courses I coordinate.
- As a lecturer, I should be able to make edits to the information regarding the documents that I upload.
- As a lecturer, I should be able to freely manipulate the 3D objects during my lessons to help the students better visualize certain topics that may seem complex or complicated.
- As a lecturer, I should be able to communicate with my students so that any questions that arise during a lesson can be promptly answered. I would like the ability to remove anybody from my class who could be disrupting the lesson I am presenting.
- As a lecturer, I should be able to record lectures to refer to for future use.
- As a lecturer, I should be able to invite other lecturers and other academic staff to the classes I present so that they could present as well.
- As a student, I should be able to join the lessons that lecturers have set out for me and be able to download the relevant material from the lectures on any device I have available.
- As a student, I should be able to communicate with the lecturer during the lessons to address any concerns or questions I have about the lecture.
- As a student, I should be able to receive notifications of any new content related to the class that I am taking and view any announcements that the lecturer has prepared.
1.1 Administrators should be able to create organisations.
1.2 Administrators should be able to add lecturers to the organisation.
1.3 Administrators should be able to create organisations.
1.4 Administrators should be able to add students to the organisation.
1.5 Administrators should be able to remove students from organisations.
1.6 Administrators should be able to remove lecturers from organisations.
1.7 Administrators should be able to enroll students into a workspace.
1.8 Administrators should be able to rename organisations.
1.9 Administrators should be able to remove organisations.
1.10 Administrators should be able to edit the details of an organisation.
2.1 Lecturers should be able to upload files into the workspace.
2.2 Lecturers should be able to schedule lessons on the workspace.
2.3 Lecturers should be able to edit the details of the documents they upload.
2.4 Lecturers should be able to upload 3D models into the workspace for lessons.
2.5 Lecturers should be able to access 3D models from the workspace.
2.6 Lecturers should be able to access 3D models from the organisation.
2.7 3D models should be able to be shared with the organisation.
2.8 Lecturers should be able to remove files from the workspace.
2.9 Students should be able to download learning material from the workspace.
2.10 Students should be able to view learning material that has been uploaded to the workspace.
2.11 Students should be able to mark documents that they would like to see appear more prominently on their page as their 'favourite'.
3.1 Students should be able to join the lessons.
3.2 Students should be able to view the 3D environment in real-time.
3.3 Students should be notified about a lesson taking place.
3.4 Students should have a sandbox to freely manipulate 3D objects in.
3.5 Lecturers should be able to set the permission of who can communicate by voice.
3.6 Lecturers should be able to set the permission of who can communicate by typing.
The system must be designed to efficiently stream 3D information to all connected devices, regardless of the number of devices participating in a lesson. This ensures that the system can scale to accommodate an increasing number of users without compromising performance.
The system should ensure that 3D models are rendered smoothly on the viewing device, with a focus on maintaining a consistent frame rate to prevent any perceived choppiness. This means that the system should be capable of real-time rendering of 3D models without dropping frames.
This architectural pattern is an excellent fit for our application due to its inherent capability for independent service development and deployment. Microservices allow each service to scale independently, which significantly enhances the scalability and performance of the application. These attributes align perfectly with our primary quality requirements, making Microservices an ideal choice for our system.
This architecture is particularly beneficial due to its ability to provide real-time updates. An Event-Driven system can handle a high volume of events, which significantly improves the performance and scalability of the application. The real-time updates and high-volume event handling capabilities of this architecture make it an ideal choice for our application.
The template design pattern is crucial for this educational platform as it accommodates the varied roles and functionalities required by different types of users, such as administrators, lecturers, and students. By defining a template structure, the pattern ensures that common operations, such as user sign-up, lesson creation, and 3D environment interactions, are standardized while allowing specific customization for each user type. For instance, administrators need functionalities to manage users and create workspaces, lecturers require tools to construct and manage lessons with 3D models, and students need capabilities to attend and interact with these lessons. The template design pattern provides a skeleton of these processes, enabling code reuse and reducing redundancy, which enhances maintainability and scalability of the system. It ensures that the platform can efficiently manage the complex interactions and varying requirements of its user base while maintaining high performance and usability across different devices and browsers.
We will construct an authentication chain inspired by frameworks like Spring Boot, loosely following the FIDO2 authentication approach. FIDO2, known for its passwordless login flow, relies on PKI to confirm a user's identity. The process begins with a user requesting a nonce value from our authentication server. The server replies with a newly generated nonce and stores it in the database. The user then signs the nonce with their private key, and the server verifies the signature against the user's identity. Upon successful verification, the server generates a token and sends it back to the user, who includes this token in subsequent requests for identification. We'll implement this using the Chain of Responsibility pattern. Initial handlers check if a nonce request was made; if so, they generate and store it, otherwise, they pass it to the next handler. Subsequent handlers verify if a sign-in nonce validation is attempted; if yes, they authenticate and respond to the user with either a fresh token or a failure message; if not, they pass it to the next handler. Further down the chain, we validate the token's authenticity; if valid, we proceed to the next handler; otherwise, we return an error to the user. Finally, assuming authentication and authorization, we process the user's request and send back the result.
This explains the different technologies used to build ClassConnect:
- SvelteKit: This is a modern and efficient framework that helps create ClassConnect's responsive and interactive design.
- Threlte: This library combines 3D features (from Three.js) with SvelteKit, allowing for the creation of 3D elements within the educational platform.
- NestJS: This is a framework for building the backend of ClassConnect using Node.js. It keeps the application well-organized and easy to maintain.
- Svelte Testing Library: This is a tool for testing the individual parts (components) of the user interface.
- NestJS Testing: This uses built-in NestJS tools to test how the application interacts with data (APIs).
- Cypress: This is a more advanced tool for testing the entire user experience from start to finish.
- Blob Storage: This efficiently stores user data and any 3D elements used in ClassConnect.
- MongoDB Atlas: This is the database that holds all of ClassConnect's information, chosen for its flexibility and ability to handle growth.
- App Service: This is what deploys the web application, ensuring it runs smoothly and can handle more users if needed.