Thoth Tech – Company Handover Report 2024 TRIMESTER 2
Table of Contents
3.1 Company Board
3.2 Product Mentors
3.3 Student Leaders
3.4 Leadership Responsibilties
5.1 Project Overview
5.2 User Manual
5.3 Completed Deliverables
5.4 Roadmap
5.5 Open Issues
5.6 Lessons Learned
5.7 Product Development Life Cycle5.7.1 New Tasks
5.7.2 Definition of Done
5.7.3 Task Review
5.7.4 Testing
5.7.5 Branching Strategy
5.8 Product Architecture
5.8.1 Tech Stack
5.9 Source Code
5.10 Login Credentials
6.1 Project Overview
6.2 User Manual
6.3 Completed Deliverables
6.4 Roadmap
6.5 Open Issues
6.6 Product Development Life Cycle6.6.1 New Tasks
6.6.2 Definition of Done
6.6.3 Task Review
6.6.4 Testing
6.6.5 Branching Strategy
6.7 Product Architecture
6.8 Source Code
Executive Summary
Thoth Tech is an education-focused technology company located in Melbourne, Australia. Thoth Tech’s mission is to build, operate, and deploy tools that enhance education outcomes by empowering students, connecting them with tutors, and facilitating personalised learning experiences.
We value excellence and collaboration. We strive to deliver all our products in exceptional quality, making sure it is sustainable in the long run. We continuously meet this goal while empowering our people through established frameworks and a safe and supportive learning environment.
In Trimester 2, 2024, Thoth Tech ran its two main products: OnTrack, and SplashKit. This report will outline the company structure, projects, and accomplishments for this trimester.
Showcase Video
This video summarises the accomplishments made at Thoth Tech for Trimester 2, 2024: Thoth Tech Company Showcase Video
Leadership Team
Company Board
- Andrew Cain - Director, Product Owner (OnTrack & SplashKit)
Product Mentors
- Satika Jayawardena (OnTrack)
- Nebula Alam (OnTrack)
- Tien Pham (SplashKit)
- Olivia McKeon (SplashKit)
- Sean Boettger (SplashKit)
Student Leads
- Jake Mansfield – Senior Leader (OnTrack)
- Jack Carroll – Senior Leader (OnTrack)
- Atharv Bhandare – Junior Leader (OnTrack)
- Bruce Wang – Senior Leader (OnTrack)
- Ivan Justin – Junior Leader (OnTrack)
- Eliya Geerlings – Junior Leader (OnTrack)
- Jonathan Tynan – Senior Leader (SplashKit)
- Oscar Harris – Senior Leader (SplashKit)
- Hayley Hughes – Senior Leader (SplashKit)
- Shaun Ratcliff – Junior Leader (SplashKit)
- Brianna Laird – Junior Leader (SplashKit)
Leadership Responsibilities
The following are the key responsibilities of the company student leadership team throughout the trimester:
-
Company presentation in the first junior lecture – Introduce the company, its projects, and required skill sets for potential junior students
- Student leads must prepare and organise a PowerPoint presentation representing each of their projects during Week 0
-
Host first company-wide meeting and onboard students – Provide a more specific overview of company and project goals, meeting schedules, and expectations for the trimester
- Team building sessions may also be organised to build rapport across teams
-
Weekly company leadership team meeting – Report on project progress and concerns to company stakeholders
- Date and time to be decided by members in the first week according to availability
-
Complete company tasks: progress, handover, and showcase reports and videos
- These reports must be submitted by 1 senior and 1 junior on behalf of the company and appropriate communications must be made on Teams
All past company reports, showcase videos, and relevant assets can be found here: Company Documents & Videos & Thoth Tech Documentation Website
Company Structure

Project 1: OnTrack
Project Overview
OnTrack, also known as Doubtfire, is an innovative Learning Management System (LMS) tailored for skill-based course delivery. This platform facilitates the connection between tutors and students, primarily at Deakin University and other global institutions. The overarching goal of OnTrack is to enhance the educational experience by providing a structured, efficient, and interactive learning environment. This system aims to improve student engagement, learning outcomes, and the overall teaching and learning process, benefiting both students and educational staff.
User Manual
Tutorial videos on setting up your local development environment:
-
T3 2023 Setup demo by Satika Jayawardena
-
T2 2023 Setup demo by Daniel Maddern
-
T1 2024 Common setup error solutions by Satika Jayawardena
Contributing Guides:
Completed Deliverables
This trimester, the following key deliverables were completed:
-
Bug Fixes and Urgent Enhancements
- Chat Markdown Rendering Bug: Successfully fixed an issue where markdown was not rendering properly in chat, enhancing the user experience for students and staff.
- Documentation Enhancements: Completed and merged documentation updates for both general and specific API pages. This includes contributions from team members on various entities such as requirement sets and course entities, directly supporting the goal of comprehensive documentation for OnTrack’s evolving features.
-
Frontend Enhancements and Component Migrations: Several components have been successfully migrated to Angular 17 and TypeScript, including the comments-modal, group set manager, and unit-ilo-edit-modal. Additionally, enhancements were made to PDF handling and user interface elements like the grade-task-modal and grade-icon components, contributing to the ongoing frontend migration and user interface improvement objectives.
- Ongoing Frontend Migration: The migration of legacy CoffeeScript components to TypeScript/Angular continues, with files such as timeout.coffee and grade-task-modal.coffee currently under peer review. This aligns with our aim to complete at least 10% of the existing frontend migration backlog this trimester.
- Overlay Component Creation: Developed a new overlay component to provide additional information about units to users, enhancing the user interface and experience. This feature is currently under review.
-
CourseFlow:
- CourseMap Base Page Development: Developed the base page for CourseMap, laying the groundwork for further enhancements and integrations planned for the CourseFlow component.
- Backend Requirements Implementation: Completed backend requirements for several critical entities, including the requirement set, course, and course map unit entities. These efforts are part of the overarching aim to enhance CourseFlow functionality and ensure robust backend support for new and existing features.
- CourseFlow Enhancements: Several enhancements are under review, including adding authentication to endpoints and integrating new UI elements. These efforts are part of the continued development of the CourseFlow API and its related functionalities.
-
JPLAG - jplag software plagiarism has been implemented as a containerised batch process. Frontend and backend additions have been made to allow plagiarism report downloads.
-
Dev Container Image Downsizing - LaTex and MariaDB have been moved into their own containers; reducing rebuild time of the main container significantly
-
Nginx - an nginx container has been created to utilise reverse proxying, allowing localhost:4200 and localhost:3000 to be accessed at localhost/ and localhost/api
-
Ongoing and Pending Tasks:
- Group Set Manager Migration: The migration of the group set manager component to the latest framework is in progress.
- Unit Group Set Editor Migration: The migration of the unit-group-set-editor.coffee file continues to move forward, aligning with our frontend migration goals.
- Tasks in Peer Review: Detailed documentation and API operations for units and task definitions, along with the migration of several legacy components, are currently under peer review. This work supports the ongoing documentation efforts and frontend migration initiatives.
List Of All Complete Deliverables
| Name | Task Name | Task Attachment |
|---|---|---|
| Amos Saji | Migration: group set manager | https://github.com/thoth-tech/documentation/pull/549 https://github.com/thoth-tech/doubtfire-web/pull/244 |
| Amrith Jayadeep | Migration: group set selector | https://github.com/thoth-tech/documentation/pull/544/commits/6789b275af1deb663877b8953f229c5277582e59 https://github.com/thoth-tech/doubtfire-web/pull/239 |
| Anirudh Nellippilli Joshi | Documentation: grade-task-modal component review | https://github.com/thoth-tech/documentation/pull/525 |
| Anirudh Nellippilli Joshi | migrate file-uploader.coffee | https://github.com/thoth-tech/documentation/pull/535/files https://github.com/thoth-tech/doubtfire-web/pull/246/commits/28a77cd0821ce9b66a43c47741cda35c39132fd2 |
| Anirudh Nellippilli Joshi | Migration: group set selector | https://github.com/thoth-tech/documentation/pull/544/commits/6789b275af1deb663877b8953f229c5277582e59 https://github.com/thoth-tech/doubtfire-web/pull/239 |
| Anirudh Nellippilli Joshi | Migration: group set manager | https://github.com/thoth-tech/documentation/pull/549 https://github.com/thoth-tech/doubtfire-web/pull/244 |
| Anirudh Nellippilli Joshi | Migration: csv-result-modal.coffee | https://github.com/thoth-tech/documentation/pull/524#issue-2441710229 https://github.com/thoth-tech/doubtfire-web/pull/248/commits/b0c23fa084e074feec9cfd4618d2e2ff9412f2c7 |
| Anirudh Nellippilli Joshi | Onboarding Juniors Guidence | https://github.com/thoth-tech/documentation/pull/551 |
| Atharv Sandip Bhandare | Migration: comments-modal | https://github.com/doubtfire-lms/doubtfire-web/pull/869 https://github.com/thoth-tech/documentation/pull/519 https://github.com/thoth-tech/doubtfire-web/pull/218 |
| Atharv Sandip Bhandare | Write documentation for JPLAG | https://github.com/thoth-tech/documentation/pull/528 https://www.github.com/JackSCarroll/documentation/blob/JplagDocs/docs/OnTrack/JPlag/Jplag-Feasibility-Document.md |
| Atharv Sandip Bhandare | Migration: Component task-ilo-alignment-modal.coffee | |
| Atharv Sandip Bhandare | Add user UI does not allow user creation | https://github.com/thoth-tech/documentation/pull/556 https://github.com/thoth-tech/doubtfire-web/pull/254 |
| Atharv Sandip Bhandare | Migration: unit-staff-editor.coffee | https://github.com/thoth-tech/documentation/pull/543 https://github.com/thoth-tech/doubtfire-web/pull/235 |
| Atharv Sandip Bhandare | JPLAG UI documentation | https://github.com/thoth-tech/documentation/pull/555 |
| Bruce Wang | Migration: comments-modal | https://github.com/doubtfire-lms/doubtfire-web/pull/869 https://github.com/thoth-tech/documentation/pull/519 https://github.com/thoth-tech/doubtfire-web/pull/218 |
| Bruce Wang | Documentation: grade-task-modal component review | https://github.com/thoth-tech/documentation/pull/525 |
| Bruce Wang | migrate file-uploader.coffee | https://github.com/thoth-tech/documentation/pull/535/files https://github.com/thoth-tech/doubtfire-web/pull/246/commits/28a77cd0821ce9b66a43c47741cda35c39132fd2 |
| Bruce Wang | Migration: grade-icon.coffee | https://github.com/thoth-tech/doubtfire-web/pull/231 |
| Bruce Wang | Migrate analytics.coffee | https://github.com/thoth-tech/doubtfire-web/pull/256 |
| Bruce Wang | Migrate viewer.coffee | https://github.com/thoth-tech/doubtfire-web/pull/251 |
| Bruce Wang | Migration: timeout.coffee | https://github.com/doubtfire-lms/doubtfire-web/pull/868/commits/6a965ef9927837bd3e9e77d27b035473cd974215 https://github.com/thoth-tech/doubtfire-web/pull/230 |
| Bruce Wang | Migration: unauthorised.coffee | https://github.com/thoth-tech/doubtfire-web/pull/257 |
| Bruce Wang | Migration: unit-staff-editor.coffee | https://github.com/thoth-tech/documentation/pull/543 https://github.com/thoth-tech/doubtfire-web/pull/235 |
| Bruce Wang | Migration: csv-result-modal.coffee | https://github.com/thoth-tech/documentation/pull/524#issue-2441710229 https://github.com/thoth-tech/doubtfire-web/pull/248/commits/b0c23fa084e074feec9cfd4618d2e2ff9412f2c7 |
| Bruce Wang | Onboarding Juniors Guidence | https://github.com/thoth-tech/documentation/pull/551 |
| Eliya Geerlings | Migration: comments-modal | https://github.com/doubtfire-lms/doubtfire-web/pull/869 https://github.com/thoth-tech/documentation/pull/519 https://github.com/thoth-tech/doubtfire-web/pull/218 |
| Eliya Geerlings | Autoload PDFs on page 2 when viewing student submissions | https://github.com/thoth-tech/doubtfire-web/pull/232 |
| Eliya Geerlings | Fix jupyter notebook latex rake test | https://github.com/doubtfire-lms/doubtfire-api/pull/444 |
| Eliya Geerlings | Fix up existing confirmation-modal migration | https://github.com/doubtfire-lms/doubtfire-web/pull/870 |
| Eliya Geerlings | Latex docker downsizing: Creation of feasibility document | https://github.com/thoth-tech/documentation/pull/534 |
| Eliya Geerlings | Latex docker downsizing: Implementation | https://github.com/thoth-tech/doubtfire-api/pull/38 https://github.com/thoth-tech/doubtfire-deploy/pull/13 |
| Eliya Geerlings | Persistent PDF zoom levels when selecting between different task submissions | https://github.com/thoth-tech/doubtfire-web/pull/228 |
| Eliya Geerlings | Migration: unit-staff-editor.coffee | https://github.com/thoth-tech/documentation/pull/543 https://github.com/thoth-tech/doubtfire-web/pull/235 |
| Ivan Justin | Latex docker downsizing: Creation of feasibility document | https://github.com/thoth-tech/documentation/pull/534 |
| Ivan Justin | Chat markdown not rendering properly bug | https://github.com/thoth-tech/doubtfire-web/pull/250 |
| Ivan Justin | Migration: Unit-ilo-edit-modal.coffee | https://github.com/thoth-tech/documentation/pull/526 https://github.com/thoth-tech/doubtfire-web/pull/226 |
| Jack Shinners Carroll | Write documentation for JPLAG | https://github.com/thoth-tech/documentation/pull/528 https://www.github.com/JackSCarroll/documentation/blob/JplagDocs/docs/OnTrack/JPlag/Jplag-Feasibility-Document.md |
| Jack Shinners Carroll | Documentation: grade-task-modal component review | https://github.com/thoth-tech/documentation/pull/525 |
| Jack Shinners Carroll | Latex docker downsizing: Creation of feasibility document | https://github.com/thoth-tech/documentation/pull/534 |
| Jack Shinners Carroll | Latex docker downsizing: Implementation | https://github.com/thoth-tech/doubtfire-api/pull/38 https://github.com/thoth-tech/doubtfire-deploy/pull/13 |
| Jack Shinners Carroll | Migrate analytics.coffee | https://github.com/thoth-tech/doubtfire-web/pull/256 |
| Jack Shinners Carroll | Migration: unit-staff-editor.coffee | https://github.com/thoth-tech/documentation/pull/543 https://github.com/thoth-tech/doubtfire-web/pull/235 |
| Jack Shinners Carroll | Add JPLAG frontend | https://github.com/doubtfire-lms/doubtfire-web/pull/873 |
| Jack Shinners Carroll | Alter JPLAG api code | https://github.com/doubtfire-lms/doubtfire-api/pull/447 |
| Jack Shinners Carroll | Create JPLAG Container | https://github.com/doubtfire-lms/doubtfire-deploy/pull/28 |
| Jack Shinners Carroll | JPLAG UI documentation | https://github.com/thoth-tech/documentation/pull/555 |
| Jake Mansfield | Document the below API pages in detail within the website - set 5 | https://github.com/thoth-tech/doubtfire-astro/pull/9 |
| Jake Mansfield | Implement the backend requirements for the course entity. | https://github.com/thoth-tech/doubtfire-api/pull/34 |
| Jake Mansfield | Implement the backend requirements for the course map entity. | https://github.com/thoth-tech/doubtfire-api/pull/35 |
| Jake Mansfield | Implement the backend requirements for the course map unit entity. | https://github.com/thoth-tech/doubtfire-api/pull/35 |
| Jake Mansfield | Implement the backend requirements for the requirement set entity. | https://github.com/thoth-tech/doubtfire-api/pull/37 |
| Jake Mansfield | Implement the backend requirements for the specialization entity. | |
| Jake Mansfield | Add detailed operations for units API (task_definitions -tii_group_attachments ) on Ontrack documentation website | https://github.com/thoth-tech/doubtfire-astro/pull/12 |
| Jake Mansfield | Add Authentication to the Courseflow endpoints | |
| Jake Mansfield | Add button to Courseflow main component | https://github.com/thoth-tech/doubtfire-web/pull/227 |
| Jake Mansfield | Created coursemap base page | https://github.com/thoth-tech/doubtfire-web/pull/233 |
| Jake Mansfield | Add detailed operations for units API (task_definitions) on Ontrack documentation website | https://github.com/thoth-tech/doubtfire-astro/pull/12 |
| Jake Mansfield | Add detailed operations for units API (group set - group ID) on Ontrack documentation website | https://github.com/thoth-tech/doubtfire-astro/pull/10 |
| Jake Mansfield | Add detailed operations for units API (group set - group csv) on Ontrack documentation website | https://github.com/thoth-tech/doubtfire-astro/pull/10 |
| Jake Mansfield | Add detailed operations for units API (task_definitions - task_assessment_resources ) on Ontrack documentation website | https://github.com/thoth-tech/doubtfire-astro/pull/13 |
| Jake Mansfield | Document the operations units API - Tutorial Streams | https://github.com/thoth-tech/doubtfire-astro/pull/10 |
| Jake Mansfield | Ensure Unit Definition model satisfies all requirements (Phase 2) | |
| Jake Mansfield | Create appropriate testing files for the Unit Definition entity (Phase 1) | https://github.com/thoth-tech/doubtfire-api/pull/42 |
| Jake Mansfield | Create dummy data for a specific course for the front end to use (Phase 3) | https://github.com/thoth-tech/doubtfire-api/pull/43 |
| Jake Mansfield | Implement the backend requirements for the Unit Definition entity (phase 1) | https://github.com/thoth-tech/doubtfire-api/pull/42 |
| Jake Mansfield | Make a Plan for Courseflow for T2 | |
| Jake Mansfield | Migrate analytics.coffee | https://github.com/thoth-tech/doubtfire-web/pull/256 |
| Jake Mansfield | Migrate the existing Unit table to be compatible with Unit Definition (Phase 4) | https://github.com/thoth-tech/doubtfire-api/pull/41 |
| Jake Mansfield | Migration: timeout.coffee | https://github.com/doubtfire-lms/doubtfire-web/pull/868/commits/6a965ef9927837bd3e9e77d27b035473cd974215 https://github.com/thoth-tech/doubtfire-web/pull/230 |
| Jake Mansfield | Courseflow Documentation Requirement Analysis | https://github.com/thoth-tech/doubtfire-astro/pull/14 |
| Jake Mansfield | Onboarding Juniors Guidence | https://github.com/thoth-tech/documentation/pull/551 |
| Minu Nediyapalackal Sunil | Document the below API pages in detail within the website - set 5 | https://github.com/thoth-tech/doubtfire-astro/pull/9 |
| Minu Nediyapalackal Sunil | Add detailed operations for units API (task_definitions -tii_group_attachments ) on Ontrack documentation website | https://github.com/thoth-tech/doubtfire-astro/pull/12 |
| Minu Nediyapalackal Sunil | Add detailed operations for units API (task_definitions) on Ontrack documentation website | https://github.com/thoth-tech/doubtfire-astro/pull/12 |
| Minu Nediyapalackal Sunil | Create diagram of coursemap page | https://github.com/thoth-tech/doubtfire-astro/pull/11 |
| Minu Nediyapalackal Sunil | Add detailed operations for units API (group set - group ID) on Ontrack documentation website | https://github.com/thoth-tech/doubtfire-astro/pull/10 |
| Minu Nediyapalackal Sunil | Add detailed operations for units API (group set - group csv) on Ontrack documentation website | https://github.com/thoth-tech/doubtfire-astro/pull/10 |
| Minu Nediyapalackal Sunil | Add detailed operations for units API (task_definitions - task_assessment_resources ) on Ontrack documentation website | https://github.com/thoth-tech/doubtfire-astro/pull/13 |
| Minu Nediyapalackal Sunil | Document the operations units API - Tutorial Streams | https://github.com/thoth-tech/doubtfire-astro/pull/10 |
| Minu Nediyapalackal Sunil | Pull the API docs from last trimester into the new folder structure | https://github.com/thoth-tech/doubtfire-astro/pull/15 |
| Minu Nediyapalackal Sunil | Courseflow Documentation Requirement Analysis | https://github.com/thoth-tech/doubtfire-astro/pull/14 |
| Muhammad Danial | Migration: Component task-ilo-alignment-modal.coffee | |
| Sam Rolfe | Implement the backend requirements for the course entity. | https://github.com/thoth-tech/doubtfire-api/pull/34 |
| Sam Rolfe | Implement the backend requirements for the course map entity. | https://github.com/thoth-tech/doubtfire-api/pull/35 |
| Sam Rolfe | Implement the backend requirements for the course map unit entity. | https://github.com/thoth-tech/doubtfire-api/pull/35 |
| Sam Rolfe | Implement the backend requirements for the requirement set entity. | https://github.com/thoth-tech/doubtfire-api/pull/37 |
| Sam Rolfe | Implement the backend requirements for the specialization entity. | |
| Sam Rolfe | Add Authentication to the Courseflow endpoints | |
| Sam Rolfe | Add button to Courseflow main component | https://github.com/thoth-tech/doubtfire-web/pull/227 |
| Sam Rolfe | Created coursemap base page | https://github.com/thoth-tech/doubtfire-web/pull/233 |
| Sam Rolfe | Create a list of tasks for CourseMap FE | |
| Sam Rolfe | Create diagram of coursemap page | https://github.com/thoth-tech/doubtfire-astro/pull/11 |
| Sam Rolfe | Ensure Unit Definition model satisfies all requirements (Phase 2) | |
| Sam Rolfe | Migration: grade-icon.coffee | https://github.com/thoth-tech/doubtfire-web/pull/231 |
| Sam Rolfe | Add ability to add elective units to the unit pool (phase 2) | https://github.com/thoth-tech/doubtfire-web/pull/236 |
| Sam Rolfe | Create appropriate testing files for the Unit Definition entity (Phase 1) | https://github.com/thoth-tech/doubtfire-api/pull/42 |
| Sam Rolfe | Create dummy data for a specific course for the front end to use (Phase 3) | https://github.com/thoth-tech/doubtfire-api/pull/43 |
| Sam Rolfe | Create services and models for courseflow back end components. | https://github.com/thoth-tech/doubtfire-web/pull/252 |
| Sam Rolfe | Implement the backend requirements for the Unit Definition entity (phase 1) | https://github.com/thoth-tech/doubtfire-api/pull/42 |
| Sam Rolfe | Migrate the existing Unit table to be compatible with Unit Definition (Phase 4) | https://github.com/thoth-tech/doubtfire-api/pull/41 |
| Sam Rolfe | Populate remaining units container with relevant units from course (phase 2) | https://github.com/thoth-tech/doubtfire-web/pull/253 |
| Sam Rolfe | Courseflow Documentation Requirement Analysis | https://github.com/thoth-tech/doubtfire-astro/pull/14 |
| Shen Tian | Add button to Courseflow main component | https://github.com/thoth-tech/doubtfire-web/pull/227 |
| Shen Tian | Created coursemap base page | https://github.com/thoth-tech/doubtfire-web/pull/233 |
| Shen Tian | Create services and models for courseflow back end components. | https://github.com/thoth-tech/doubtfire-web/pull/252 |
| Shen Tian | Migrate analytics.coffee | https://github.com/thoth-tech/doubtfire-web/pull/256 |
| Shen Tian | Migration: timeout.coffee | https://github.com/doubtfire-lms/doubtfire-web/pull/868/commits/6a965ef9927837bd3e9e77d27b035473cd974215 https://github.com/thoth-tech/doubtfire-web/pull/230 |
| Shen Tian | Populate remaining units container with relevant units from course (phase 2) | https://github.com/thoth-tech/doubtfire-web/pull/253 |
| Shyama Chandrashekaran Pillai | Document the below API pages in detail within the website - set 5 | https://github.com/thoth-tech/doubtfire-astro/pull/9 |
| Shyama Chandrashekaran Pillai | Add detailed operations for units API (task_definitions -tii_group_attachments ) on Ontrack documentation website | https://github.com/thoth-tech/doubtfire-astro/pull/12 |
| Shyama Chandrashekaran Pillai | Add detailed operations for units API (task_definitions) on Ontrack documentation website | https://github.com/thoth-tech/doubtfire-astro/pull/12 |
| Shyama Chandrashekaran Pillai | Add detailed operations for units API (group set - group ID) on Ontrack documentation website | https://github.com/thoth-tech/doubtfire-astro/pull/10 |
| Shyama Chandrashekaran Pillai | Add detailed operations for units API (group set - group csv) on Ontrack documentation website | https://github.com/thoth-tech/doubtfire-astro/pull/10 |
| Shyama Chandrashekaran Pillai | Add detailed operations for units API (task_definitions - task_assessment_resources ) on Ontrack documentation website | https://github.com/thoth-tech/doubtfire-astro/pull/13 |
| Shyama Chandrashekaran Pillai | Document the operations units API - Tutorial Streams | https://github.com/thoth-tech/doubtfire-astro/pull/10 |
| Shyama Chandrashekaran Pillai | Pull the API docs from last trimester into the new folder structure | https://github.com/thoth-tech/doubtfire-astro/pull/15 |
| Thuy Tien Hoa | migrate file-uploader.coffee | https://github.com/thoth-tech/documentation/pull/535/files https://github.com/thoth-tech/doubtfire-web/pull/246/commits/28a77cd0821ce9b66a43c47741cda35c39132fd2 |
| Thuy Tien Hoa | Migration: Component task-ilo-alignment-modal.coffee | |
| Thuy Tien Hoa | Migration: grade-icon.coffee | https://github.com/thoth-tech/doubtfire-web/pull/231 |
| Thuy Tien Hoa | Add ability to add elective units to the unit pool (phase 2) | https://github.com/thoth-tech/doubtfire-web/pull/236 |
| Thuy Tien Hoa | Migrate viewer.coffee | https://github.com/thoth-tech/doubtfire-web/pull/251 |
Roadmap
The following are areas of OnTrack students may choose to work on in Trimester 3, 2024:
- Frontend Migrations – Angular.js and CoffeeScript to Angular and TypeScript
- Urgent Enhancements, Improvements, and Bugs
- Documentation Website – Enhance and add missing endpoint documentation
- Peer reviews for previous pull requests and contributions
- Features in development:
- Tutor Feedback Enhancement – feedback_api will require further development to support “criterion” or options
- CourseFlow – remaining backend entities and frontend
- Incorporate Multiple Organizations on Single OnTrack Server
- Authentication Module
- Tutor Times
- Incorporate Content in OnTrack
- Staff Grant Extensions
- Panopto Video Integration
Open Issues
These are some of the common challenges we have faced in Trimester 2, 2024 and may continue to face in the future:
-
Knowledge gap in using Git and GitHub – Team members are required to upskill in Git before starting on their assigned tasks as this is the primary tool used within the team to manage code and contributions. The Git and GitHub training website and demo videos attached in this document are some of the great resources available in capstone for this purpose.
-
Unsatisfactory pull request reviews – Reviews must not be made through generational AI tools or just indicate how many commits have been made and what has changed. Instead, it must evaluate the syntax, logic, and output of the code. Please refer to section Task Review for more details and this past review for an example of a correct pull request review.
Lessons Learned
This trimester, the traditional weekly Help Hub sessions, typically held on Thursdays and led by senior team members, experienced a noticeable decrease in attendance.
To adapt, student leads focused on driving engagement and addressing queries through the OnTrack public Teams channel, encouraging team members to share their experiences and solutions.
While this approach has been effective for accommodating team members’ diverse schedules, we recommend exploring new ways to host Help Hub sessions alongside asynchronous Teams posts. Offering multiple formats for assistance could provide additional opportunities for leadership development.
Future student leads may consider using polls or forms to determine the most suitable time for sessions based on team availability. Additionally, offering a variety of session formats could help not only resolve existing problems but also guide team members in making contributions to specific areas.
Product Development Life Cycle
We continue to use Agile methodologies to deliver updates and new features for OnTrack.
Our approach includes 2-week sprints focused on completing tasks, and weekly stand-up meetings to assess progress, share updates, discuss roadblocks, and assign new tasks via Teams Planner cards.
New Tasks
New tasks are assigned by the project mentor during the weekly stand-up meetings. Once you are assigned a task, be sure to assign yourself to the corresponding Teams Planner card and attach your draft or completed pull request when you begin work.
If you have an idea for a new feature or enhancement, schedule a meeting with the project mentor to discuss it. Upon approval, create a new card or backlog column in Teams Planner to track the task. If the feature is large, start researching the benefits and challenges, and create a Spike document, which can be committed to the documentation repository. Spike templates are available in the documentation repository.
Definition of Done
A task is considered complete once it has been fully tested, functions as expected, and is documented in a well-organized pull request.
The task must also undergo peer review and be approved by your mentor. Ensure that the corresponding Teams Planner card is updated, and keep in communication with your reviewer and mentor until your contribution is merged into the upstream doubtfire-lms repository.
Task Review
Each pull request requires a mandatory peer review before a mentor review. After creating the pull request, contact a teammate to review it.
Tag them as the reviewer in both the Teams Planner card and the GitHub pull request. As a reviewer, ensure that you test the code by pulling the changes locally and reviewing the syntax, logic, and output.
If any changes are needed, update the contribution and notify the reviewer. Once the updates are made, the pull request will be automatically updated.
After the peer review is complete, notify the mentor for their review. Once approved, you can submit the pull request to the upstream repository for the final review.
Testing
For frontend changes, test the functionality in the browser or run specification tests as needed. For backend changes, use browser interactions or tools like Postman to test functionality. Additionally, GitHub CI Actions will run tests automatically when changes are pushed.
In the pull request template, include detailed instructions on how others can test your changes. Always provide before-and-after screenshots to show the outcome of your modifications.
Branching Strategy
When starting a new contribution, fork all three thoth-tech repositories (deploy, web, and API) to your GitHub profile.
Create a new branch from the development branch of the relevant repository. For example, for frontend migrations, you would create a branch from the doubtfire-web development branch.
Follow the Branch Prefixes and Commit Message Format in the Contributing Guide when naming branches and creating commits.
Product Architecture
OnTrack is built using four main components:
- Frontend Client: Responsible for user interactions.
- Backend API: Handles requests and serves data.
- Database: Stores application data.
- Deployment Infrastructure: Ensures that OnTrack is properly deployed and maintained
Tech Stack
- Frontend: Currently being migrated from AngularJS and CoffeeScript to Angular 17 and TypeScript. The stack also includes HTML, SCSS, and Tailwind CSS.
- Backend: Built on Ruby on Rails with the Grape Framework. It uses MariaDB as the database engine. Docker is used for deployment and local development.
Source Code
The following are the relevant GitHub repositories to this project:
- Deployment - https://github.com/thoth-tech/doubtfire-deploy
- Frontend - https://github.com/thoth-tech/doubtfire-web
- Backend - https://github.com/thoth-tech/doubtfire-api
- OnTrack Documentation Website - https://github.com/thoth-tech/doubtfire-astro
- Documentation (OnTrack feature documentation, frontend migration component reviews, etc.) - https://github.com/thoth-tech/documentation/tree/main/docs/OnTrack
- Templates (Spikes, component reviews) - https://github.com/thoth-tech/documentation/tree/main/docs/Templates
- CourseFlow documentation - https://github.com/thoth-tech/ThothTech-Documentation-Website/tree/main/src/content/docs/products/courseflow Note: Any pull requests must first be made to the thoth-tech forks of the repositories, not the upstream doubtfire-lms ones.
Login Credentials
Refer to the Working with Dev Containers section of the Contributing Guide for authentication credentials for locally deployed OnTrack.
Showcase Video
The videos in this folder summarise our accomplishments this trimester in OnTrack:
Project 2: SplashKit
Project Overview
SplashKit is a user-friendly programming framework designed for creating 2D games, primarily to help students learn introductory programming through game development. The framework is mainly written in C++, but it supports multiple languages, including C#, Python, Pascal, and JavaScript.
Projects
Arcade Machines
The university has acquired four arcade machines equipped with Raspberry Pi 3B+ units, designed to showcase games developed with SplashKit. The short-term goal is to prepare these platforms for students to display their SplashKit creations. The medium-term goal is to streamline the process for first-year students to easily upload and test their games.
Game Development
The Game Development team is dedicated to creating and enhancing games that run on the arcade machines. Their mission is to demonstrate SplashKit’s capabilities and inspire students by showcasing what can be achieved with the framework.
SplashKit Website
Powered by the Starlight framework, the revamped SplashKit website aims to offer an enriched and user-friendly experience for developers and learners. It will host existing tutorials and guides, providing a central hub for exploring and learning about SplashKit.
SplashKit Tutorials
The SplashKit Website will feature tutorials aimed at helping students learn and explore SplashKit’s functionality. The focus is on developing smaller, high-quality tutorials across C++, C#, and Python, rather than extensive series.
SplashKit Expansion
The Expansion team is responsible for maintaining and enhancing the SplashKit core. This includes bug fixes, feature improvements, and refining installation and usage workflows through package creation and addressing installation issues.
SplashKit Online
SplashKit Online is developing a web-based IDE that allows students to write and run code directly in their browsers. Initially launched as a prototype in 2023, the 2024 goal is to mature this tool into a comprehensive product, including C# support and an embeddable version for the SplashKit website.
User Manual
Arcade Machines
SplashKit Website
SplashKit Tutorials
SplashKit Expansion
Game Development
SplashKit Online
Completed Deliverables
This trimester, the following deliverables were completed:
Arcade Machine
- Arcade Machine Improvements
- Developed a test menu for the arcade machine
- Added additional controls to the arcade menu
- Defined the process for uploading games to the arcade machine
- Fixed broken links in Arcade Build documentation
- Developed Game Packaging tool, flipper
SplashKit Expansion
- General Improvements
- Fixed bugs relating to vectors, random number generation, moving sprites and replacing text.
- Renamed ‘label’ parameter to fix Pascal support
- Investigate and identified missing functionality from SwinGame
- Tested Python compatibility
- Implemented insertion of XML comments into SplashKit.cs during translation process
- New Features
- Completed development of Remote GPIO Control methods
- Created Circle-Triangle Collision detection methods
- Created base64 image decoding function
- Created SplashKit Splashscreen function
- Added unit tests for networking, utility functions, bitmaps, sound effects, and music.
SplashKit Website
- Website Improvements
- Begun development of an ‘Onboarding Hub’
- Resolved issues with SplashKit.io dev Container
- Fixed the guides index page and updated broken links
- Improved Troubleshooting section
- Added game showcase page and improved website styling
- Reviewed, updated and validated key policies and FAQs
- Fixed API table formatting
- Updated tab logo
- Improved site styling
SplashKit Tutorials
- New Tutorials
- Developed 2D Vectors tutorial series covering topics such as vector magnitude, collisions and gravity
- Tutorial Updates
- Created documentation detailing tutorial review process
- Developed Onboarding process for the tutorial team
- Added Object-Oriented Programming concepts to SplashKit tutorials
- Added C# Code Blocks to Tutorials
- “Introduction to JSON”, “Writing JSON Data”, “Reading JSON Data”, guides
- “Styling User Interfaces” guide
- “Understanding Double Buffering” guide
- Add Python Code Blocks to Tutorials
- “Using Mouse Inputs” guide
- Created various usage examples
fill_triangle,fill_circle,create_sprite,draw_sprite,clear_screenand more
- Completed various tutorial reviews
- “Getting started with servers” guide
- “How to make a RESTful API call” guide
- “SplashKit Camera” guide
- “Using Mouse Inputs” guide
SplashKit Online
- Automated installation of pre-built files
- Interface Improvements
- Fixed scrollbar jumping to top when switching code files
- Implemented message to prompt user for action to enable audio
- Added Interface Minification option
Game Development
- Game Development Improvements
- Developed Onboarding guide for the Game Development team
- Addressed issue that compiled .exe files are platform-specific.
- Fixed gameplay issues in Below the Surface and Venture Adventure
- Created programming plan for the Bee Game project, outlining core mechanics and class structures
List Of All Complete Deliverables
Roadmap
Arcade Machine
- Consolidate documentation in one place or repository
- Add additional modes to the Arcade Machine software
- Kiosk Mode: Show only published games, ideal for events
- Normal Mode: Display both published and test games
- Implement Voting System: Integrate a voting system to give significance to the star ranking currently available on the machines
- Correct the C# compatibility for ARM, as .NET currently does not run correctly in the emulated PI environment used for C++ games
- Implement versioning for compiled games to manage updates effectively
- Continue development of flipper Game Packaging Tool
SplashKit.io Website
- SplashKit.io Improvements
- Improve API Reference
- Continue to add usage examples for SplashKit API
- Integrate live demo’s to provide interactive examples
- Add mechanism for the user to globally switch between programming languages in the API reference
- Produce concise videos to support the documentation
- Enhance documentation with more interactive and user-friendly documentation elements
- Contributor Resources
- Develop resources to support community contributions
- Including detailed guides, best practices and an interactive forum
- Improve API Reference
- Thoth Tech Documentation Website
- Improve Onboarding Hub
- Continue to expand and refine the Onboarding hub
- Create relevant guides, checklists and tutorials for all stages of the project documentation and development lifecycle
- Develop detailed Onboarding paths to guide new students
- Implement a comprehensive upskilling section, containing curated learning materials
- Improve Onboarding Hub
SplashKit Tutorials
- Continue Reviewing Current Tutorials:
- Compile and Run Tutorial Code: Ensure all example code works correctly, fixing any issues (e.g., SplashKit Camera). Ensure they all use top level statements for C#, and include C++ and python code.
- Proof-read Content: Verify that the wording is clear and comprehensible.
- Add Python Code Tabs: Include Python code examples in any tutorials currently missing them.
- Expand and Update Tutorials:
- Plan and develop new tutorials to cover the full range of SplashKit functionality.
- Develop a wide range of tutorials that cover all aspects of game development using SplashKit, including advanced game mechanics, AI, physics, and more
- Continuously update existing tutorials to reflect changes in SplashKit.
- Develop advanced tutorials to cover more complex topics and advanced functionalities of SplashKit.
- Interactive Tutorial Platform
- Develop an interactive platform where users can follow tutorials and write code directly within their browser, with real-time feedback and code execution
- Create Introductory Level Games:
- Write short, introductory-level games using procedural C++/C#, with accompanying tutorials aimed at SIT102 level beginner skills.
- Link to content on Programmers Guide to promote the use of pre-existing material.
- Create SplashKit Online IDE Tutorial:
- Develop a tutorial series on creating a game using the SplashKit Online IDE.
- Community Engagement and Feedback:
- Establish a system for receiving and incorporating feedback from the community to continuously improve tutorials.
- Encourage contributions from the community and maintain a high standard for tutorial submissions.
SplashKit Expansion
- Finish development of dev containers for SplashKit Core. See here for more details.
- Deployment Packages:
- Brew Package: Finalise and fix existing Brew packages to ensure smooth installation and usage.
- Test and Fix SplashKit Functionality:
- Identify and resolve bugs in SplashKit functionality
- Investigate bug regarding drawing text to second window. See Issue #177 for more information.
- Investigate and implement Pascal compilation fix. See
Issue #151 and relevant Planner card
for more information.
- Fix handling of negative enums in SplashKit Translator (this should be done; see Planner card for status)
- Port SwinGame Functions to SplashKit:
- Review and port missing functions from SwinGames into SplashKit.
- Investigate MinGW Compatibility
- There have been issues with using SplashKit in MinGW, this needs to be investigated.
- Improve Raspberry Pi Functionality:
- Improve GPIO Error Handling (this should be done; see Planner card for status)
- Implement support for the Raspberry Pi 5, as current support only extends to Raspberry Pi 4B+.
- Further Integration Testing
- Conduct detailed testing and bug fixing of SplashKit functionality.
- Ensure both procedural and OOP versions of each function are thoroughly tested and reliable.
- Comprehensive Testing and Bug Fixing:
- Develop a comprehensive automated test suite to regularly test SplashKit functionality and
quickly identify and resolve new bugs. This ensures the framework remains stable and reliable as
new features are added and updates are made.
- Implement unit tests for functions without them
- Add tests for translator targets C#, Python and Pascal.
- Alternatively, investigate the difficulty of creating a translator module to automatically translate the existing C++ tests into the translator target languages
- Develop a comprehensive automated test suite to regularly test SplashKit functionality and
quickly identify and resolve new bugs. This ensures the framework remains stable and reliable as
new features are added and updates are made.
SplashKit Online
- Embed Lite Version into SplashKit Website:
- Develop and implement a “lite” version of SplashKit Online for embedding in the SplashKit website to demonstrate code snippets and showcase functionalities.
- Focus on interface changes to integrate seamlessly with the website.
- Improve loading times and caching to ensure smooth performance.
- Improve Project Management
- Project Handling: Add functionality for users to create, load, save, and delete projects within the browser, managing multiple projects with unique names.
- Version Control: Integrate version control to track changes and revert to previous states as needed.
- Export Project Builds: Enable exporting project builds as executables for C++ projects or single HTML files for JavaScript projects for better portability and sharing.
- Improve SplashKit Online Interface:
- Code Editing and REPL Functionality: Implement auto-complete for variable parameters, add breakpoints, and create variable watch windows to improve coding and debugging.
- Extended Language Support:
- C# Support: Continue to explore and add support for C# to broaden language options.
- Python Support: Investigate and add support for Python to accommodate additional user needs.
- Advanced Project Features:
- Integrated Code Snippets: Develop functionality for users to save and reuse code snippets within their projects.
- Collaborative Features: Consider implementing collaborative features for simultaneous project work among multiple users.
Game Development
- Establish Standardised Implementation Patterns:
- Enforce decoupling of data/functionality and decoupling of state/render patterns.
- Develop a prescribed implementation pattern to ensure consistency and quality across projects.
- Develop a “10 Minute Game”:
- Collaboratively plan and execute the development of a simple game (e.g., idle game, tower defence, survivor.io-like).
- Ensure core game mechanics are implemented in the first sprint.
- Focus the latter half of the trimester on improving visual representation, adding “juice,” and implementing variations of core game elements (e.g., enemies, powerups, weapons).
- This approach ensures that core functionality is completed within a single trimester, with additional features developed against a standardised interface that integrates with the core game types.
- Iterate on Prescribed Patterns:
- Adjust and refine the implementation pattern based on student feedback and experiences.
- Generate Development Artifacts:
- Create documentation covering the implementation of discrete game systems (e.g., terrain generation systems using IDW/random walk/noise, 2D light marching, threaded state update and render patterns).
- Improve Documentation:
- Existing games often lack adequate documentation. Good documentation can significantly increase onboarding speed for new contributors.
- For completed games, create UML diagrams, overviews of gameplay mechanics, and guides for creating levels in each game’s format.
- Address the discoverability of existing documentation and resources. Update README files to reflect the current focus of work and ensure existing documentation is easy to find.
- Complete Core Functionality of Incomplete Games:
- Focus on finishing significant core functionalities in games that are currently incomplete (e.g., Sky Surge, Single Combat).
- Extend Gameplay and Functionality of Completed Games:
- Enhance and expand the gameplay and features of games that are already completed, ensuring they continue to engage and challenge players.
Open Issues
The SplashKit team has faced several challenges over Trimester 2, 2024. These are detailed below:
- Lack of Communication Between Project Groups
- While individual communication channels, threads, and chats exist for each project, there is a notable absence of overarching organisation. The lack of regular meetings between teams or with the entire company has led to confusion, poor coordination, and duplicated efforts. In some cases, tasks were reassigned or duplicated by different team members without clear communication, causing disruptions in workflow. This decentralised communication structure has hindered collaboration across projects and created barriers to progress.
- Insufficient Onboarding Information and Lack of Codebase Exploration
- A recurring issue was the lack of exploration of the existing codebase by team members, both in terms of finished and unfinished work. As a result, students often replicated previous efforts instead of building on them, such as recreating Git contribution guides or developer environment setup guides unnecessarily. This issue stems from insufficient documentation practices and a lack of familiarity with existing resources, causing inefficiencies and wasted effort.
- Team Members Performing Duplicate Work
- The combination of communication gaps and poor documentation has directly led to duplicated work. Without a clear mechanism to track or share ongoing progress across teams, individuals have inadvertently recreated work completed by others. This redundancy has slowed down development and caused unnecessary strain on resources.
A possible solution to these issues would be the implementation of regular cross-team meetings and company-wide updates. These would provide a clearer understanding of each team’s progress, facilitate better collaboration, and reduce duplicated efforts. Additionally, enhancing overall documentation and establishing more robust processes for tracking work across projects would help ensure that past work is utilised effectively moving forward.
Product Development Life Cycle
New Tasks
In SplashKit it is up to individuals to assign themselves to cards – generally speaking, it is fine to assign oneself to any card unless otherwise noted. New cards are created by discussing the problem with mentors, either during stand-ups or directly – if approved, the mentor will create the card and you can assign yourself to it.
Definition of Done
A task is only considered fully done once it has been completed, submitted as a pull request, and reviewed by two other students who approve it (see below). Once a mentor reviews it, it may be considered fully complete, or potentially moved back to doing if unsatisfactory.
Task Review
Two mandatory peer reviews must be completed before the mentor review. Once the pull request is made, contact a teammate for a review and upon agreement, tag this teammate under the Teams Planner card and GitHub pull request as the reviewer. Make sure to review and test the code syntax, logic, and output through pulling the changes unto your local machine if you are the reviewer. If the reviewer requests any changes, update the contribution, and notify the reviewer. Once the changes are committed and pushed, it will automatically update the pull request; thus, there is no need to make another pull request. Watch this tutorial video by Satika Jayawardena from the OnTrack team on creating and reviewing someone else’s pull request.
Once the peer review is complete and your contribution was deemed correct by your teammate, the pull request may be moved into the Mentor Review column – in time, a mentor will review the work, and if it is deemed satisfactory it will be considered complete and moved into the current sprint’s Complete column.
Testing
Testing strategies depend on the project – please see each project’s onboarding information for more details.
Branching Strategy
Refer to the Branch Prefixes and Commit Message Format sections of the Git Contributions Guide for guidelines on creating Git branches and commits for contributions.
Product Architecture
SplashKit.io Website
The SplashKit.io website is the primary portal for developers and learners, offering a modern, responsive interface built with Starlight (Astro), React, SolidJS, Tailwind CSS, Node.js, and Docker. It provides users with access to API documentation, installation guides, and tutorials, making it essential for anyone looking to learn or expand their knowledge of SplashKit. This website supports external developers, especially beginners, in using SplashKit for 2D game development and interactive applications.
SplashKit SDK
The SplashKit SDK is a versatile toolkit designed to simplify 2D game development and interactive application creation. It is primarily built using C++, SDL, and OpenGL, and is managed through CMake and Clang/LLVM. The SDK supports cross-platform development on Windows, macOS, Linux, and Raspberry Pi, allowing developers to create applications that run on multiple platforms using a single codebase. Additionally, the SDK includes automated translation into C#, Python, and Pascal.
SplashKit Online
SplashKit Online is a web-based Integrated Development Environment (IDE) that enables users to write, compile, and run SplashKit projects directly in their browsers. It supports JavaScript and experimental C++ through WebAssembly (WASM) via Emscripten. The platform uses Node/NPM for dependency management and test server operation. SplashKit Online aims to make it easy for developers, particularly beginners, to get started with SplashKit without needing to install any software.
Arcade Machine
The SplashKit-powered arcade machines, developed in collaboration with Deakin University, run on Raspberry Pi using emulationstation and retropie. These machines allow students and developers to upload and test games developed with SplashKit in a real-world arcade setting. The machines offer a hands-on experience where games can be played and evaluated using physical arcade hardware.
Game Development
The Game Development team produces games that showcase SplashKit’s capabilities. These games are typically built using C++ or C# and adhere to industry-standard game design practices. The games serve as examples of what can be achieved using SplashKit, demonstrating various features of the SDK, including graphics, input handling, and audio management.
Source Code
- Github Account
- Arcade Machine
- SplashKit Expansion
- SplashKit Website
- Games Development
- SplashKit Online
Showcase Video
The videos in the following folder summarise our efforts this trimester in SplashKit: