Skip to content

Thoth Tech – Company Handover Report 2024 TRIMESTER 2

Table of Contents

1. Executive Summary

2. Showcase Video

3. Leadership Team

3.1 Company Board
3.2 Product Mentors
3.3 Student Leaders
3.4 Leadership Responsibilties

4. Company Structure

5. Project 1: OnTrack

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 Cycle

5.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. Project 2: SplashKit

6.1 Project Overview
6.2 User Manual
6.3 Completed Deliverables
6.4 Roadmap
6.5 Open Issues
6.6 Product Development Life Cycle

6.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:

  1. 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
  2. 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
  3. 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
  4. 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

Org chart

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:

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

NameTask NameTask Attachment
Amos SajiMigration: group set managerhttps://github.com/thoth-tech/documentation/pull/549
https://github.com/thoth-tech/doubtfire-web/pull/244
Amrith JayadeepMigration: group set selectorhttps://github.com/thoth-tech/documentation/pull/544/commits/6789b275af1deb663877b8953f229c5277582e59
https://github.com/thoth-tech/doubtfire-web/pull/239
Anirudh Nellippilli JoshiDocumentation: grade-task-modal component reviewhttps://github.com/thoth-tech/documentation/pull/525
Anirudh Nellippilli Joshimigrate file-uploader.coffeehttps://github.com/thoth-tech/documentation/pull/535/files
https://github.com/thoth-tech/doubtfire-web/pull/246/commits/28a77cd0821ce9b66a43c47741cda35c39132fd2
Anirudh Nellippilli JoshiMigration: group set selectorhttps://github.com/thoth-tech/documentation/pull/544/commits/6789b275af1deb663877b8953f229c5277582e59
https://github.com/thoth-tech/doubtfire-web/pull/239
Anirudh Nellippilli JoshiMigration: group set managerhttps://github.com/thoth-tech/documentation/pull/549
https://github.com/thoth-tech/doubtfire-web/pull/244
Anirudh Nellippilli JoshiMigration: csv-result-modal.coffeehttps://github.com/thoth-tech/documentation/pull/524#issue-2441710229
https://github.com/thoth-tech/doubtfire-web/pull/248/commits/b0c23fa084e074feec9cfd4618d2e2ff9412f2c7
Anirudh Nellippilli JoshiOnboarding Juniors Guidencehttps://github.com/thoth-tech/documentation/pull/551
Atharv Sandip BhandareMigration: comments-modalhttps://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 BhandareWrite documentation for JPLAGhttps://github.com/thoth-tech/documentation/pull/528
https://www.github.com/JackSCarroll/documentation/blob/JplagDocs/docs/OnTrack/JPlag/Jplag-Feasibility-Document.md
Atharv Sandip BhandareMigration: Component task-ilo-alignment-modal.coffee
Atharv Sandip BhandareAdd user UI does not allow user creationhttps://github.com/thoth-tech/documentation/pull/556
https://github.com/thoth-tech/doubtfire-web/pull/254
Atharv Sandip BhandareMigration: unit-staff-editor.coffeehttps://github.com/thoth-tech/documentation/pull/543
https://github.com/thoth-tech/doubtfire-web/pull/235
Atharv Sandip BhandareJPLAG UI documentationhttps://github.com/thoth-tech/documentation/pull/555
Bruce WangMigration: comments-modalhttps://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 WangDocumentation: grade-task-modal component reviewhttps://github.com/thoth-tech/documentation/pull/525
Bruce Wangmigrate file-uploader.coffeehttps://github.com/thoth-tech/documentation/pull/535/files
https://github.com/thoth-tech/doubtfire-web/pull/246/commits/28a77cd0821ce9b66a43c47741cda35c39132fd2
Bruce WangMigration: grade-icon.coffeehttps://github.com/thoth-tech/doubtfire-web/pull/231
Bruce WangMigrate analytics.coffeehttps://github.com/thoth-tech/doubtfire-web/pull/256
Bruce WangMigrate viewer.coffeehttps://github.com/thoth-tech/doubtfire-web/pull/251
Bruce WangMigration: timeout.coffeehttps://github.com/doubtfire-lms/doubtfire-web/pull/868/commits/6a965ef9927837bd3e9e77d27b035473cd974215
https://github.com/thoth-tech/doubtfire-web/pull/230
Bruce WangMigration: unauthorised.coffeehttps://github.com/thoth-tech/doubtfire-web/pull/257
Bruce WangMigration: unit-staff-editor.coffeehttps://github.com/thoth-tech/documentation/pull/543
https://github.com/thoth-tech/doubtfire-web/pull/235
Bruce WangMigration: csv-result-modal.coffeehttps://github.com/thoth-tech/documentation/pull/524#issue-2441710229
https://github.com/thoth-tech/doubtfire-web/pull/248/commits/b0c23fa084e074feec9cfd4618d2e2ff9412f2c7
Bruce WangOnboarding Juniors Guidencehttps://github.com/thoth-tech/documentation/pull/551
Eliya GeerlingsMigration: comments-modalhttps://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 GeerlingsAutoload PDFs on page 2 when viewing student submissionshttps://github.com/thoth-tech/doubtfire-web/pull/232
Eliya GeerlingsFix jupyter notebook latex rake testhttps://github.com/doubtfire-lms/doubtfire-api/pull/444
Eliya GeerlingsFix up existing confirmation-modal migrationhttps://github.com/doubtfire-lms/doubtfire-web/pull/870
Eliya GeerlingsLatex docker downsizing: Creation of feasibility documenthttps://github.com/thoth-tech/documentation/pull/534
Eliya GeerlingsLatex docker downsizing: Implementationhttps://github.com/thoth-tech/doubtfire-api/pull/38
https://github.com/thoth-tech/doubtfire-deploy/pull/13
Eliya GeerlingsPersistent PDF zoom levels when selecting between different task submissionshttps://github.com/thoth-tech/doubtfire-web/pull/228
Eliya GeerlingsMigration: unit-staff-editor.coffeehttps://github.com/thoth-tech/documentation/pull/543
https://github.com/thoth-tech/doubtfire-web/pull/235
Ivan JustinLatex docker downsizing: Creation of feasibility documenthttps://github.com/thoth-tech/documentation/pull/534
Ivan JustinChat markdown not rendering properly bughttps://github.com/thoth-tech/doubtfire-web/pull/250
Ivan JustinMigration: Unit-ilo-edit-modal.coffeehttps://github.com/thoth-tech/documentation/pull/526
https://github.com/thoth-tech/doubtfire-web/pull/226
Jack Shinners CarrollWrite documentation for JPLAGhttps://github.com/thoth-tech/documentation/pull/528
https://www.github.com/JackSCarroll/documentation/blob/JplagDocs/docs/OnTrack/JPlag/Jplag-Feasibility-Document.md
Jack Shinners CarrollDocumentation: grade-task-modal component reviewhttps://github.com/thoth-tech/documentation/pull/525
Jack Shinners CarrollLatex docker downsizing: Creation of feasibility documenthttps://github.com/thoth-tech/documentation/pull/534
Jack Shinners CarrollLatex docker downsizing: Implementationhttps://github.com/thoth-tech/doubtfire-api/pull/38
https://github.com/thoth-tech/doubtfire-deploy/pull/13
Jack Shinners CarrollMigrate analytics.coffeehttps://github.com/thoth-tech/doubtfire-web/pull/256
Jack Shinners CarrollMigration: unit-staff-editor.coffeehttps://github.com/thoth-tech/documentation/pull/543
https://github.com/thoth-tech/doubtfire-web/pull/235
Jack Shinners CarrollAdd JPLAG frontendhttps://github.com/doubtfire-lms/doubtfire-web/pull/873
Jack Shinners CarrollAlter JPLAG api codehttps://github.com/doubtfire-lms/doubtfire-api/pull/447
Jack Shinners CarrollCreate JPLAG Containerhttps://github.com/doubtfire-lms/doubtfire-deploy/pull/28
Jack Shinners CarrollJPLAG UI documentationhttps://github.com/thoth-tech/documentation/pull/555
Jake MansfieldDocument the below API pages in detail within the website - set 5https://github.com/thoth-tech/doubtfire-astro/pull/9
Jake MansfieldImplement the backend requirements for the course entity.https://github.com/thoth-tech/doubtfire-api/pull/34
Jake MansfieldImplement the backend requirements for the course map entity.https://github.com/thoth-tech/doubtfire-api/pull/35
Jake MansfieldImplement the backend requirements for the course map unit entity.https://github.com/thoth-tech/doubtfire-api/pull/35
Jake MansfieldImplement the backend requirements for the requirement set entity.https://github.com/thoth-tech/doubtfire-api/pull/37
Jake MansfieldImplement the backend requirements for the specialization entity.
Jake MansfieldAdd detailed operations for units API (task_definitions -tii_group_attachments ) on Ontrack documentation websitehttps://github.com/thoth-tech/doubtfire-astro/pull/12
Jake MansfieldAdd Authentication to the Courseflow endpoints
Jake MansfieldAdd button to Courseflow main componenthttps://github.com/thoth-tech/doubtfire-web/pull/227
Jake MansfieldCreated coursemap base pagehttps://github.com/thoth-tech/doubtfire-web/pull/233
Jake MansfieldAdd detailed operations for units API (task_definitions) on Ontrack documentation websitehttps://github.com/thoth-tech/doubtfire-astro/pull/12
Jake MansfieldAdd detailed operations for units API (group set - group ID) on Ontrack documentation websitehttps://github.com/thoth-tech/doubtfire-astro/pull/10
Jake MansfieldAdd detailed operations for units API (group set - group csv) on Ontrack documentation websitehttps://github.com/thoth-tech/doubtfire-astro/pull/10
Jake MansfieldAdd detailed operations for units API (task_definitions - task_assessment_resources ) on Ontrack documentation websitehttps://github.com/thoth-tech/doubtfire-astro/pull/13
Jake MansfieldDocument the operations units API - Tutorial Streamshttps://github.com/thoth-tech/doubtfire-astro/pull/10
Jake MansfieldEnsure Unit Definition model satisfies all requirements (Phase 2)
Jake MansfieldCreate appropriate testing files for the Unit Definition entity (Phase 1)https://github.com/thoth-tech/doubtfire-api/pull/42
Jake MansfieldCreate dummy data for a specific course for the front end to use (Phase 3)https://github.com/thoth-tech/doubtfire-api/pull/43
Jake MansfieldImplement the backend requirements for the Unit Definition entity (phase 1)https://github.com/thoth-tech/doubtfire-api/pull/42
Jake MansfieldMake a Plan for Courseflow for T2
Jake MansfieldMigrate analytics.coffeehttps://github.com/thoth-tech/doubtfire-web/pull/256
Jake MansfieldMigrate the existing Unit table to be compatible with Unit Definition (Phase 4)https://github.com/thoth-tech/doubtfire-api/pull/41
Jake MansfieldMigration: timeout.coffeehttps://github.com/doubtfire-lms/doubtfire-web/pull/868/commits/6a965ef9927837bd3e9e77d27b035473cd974215
https://github.com/thoth-tech/doubtfire-web/pull/230
Jake MansfieldCourseflow Documentation Requirement Analysishttps://github.com/thoth-tech/doubtfire-astro/pull/14
Jake MansfieldOnboarding Juniors Guidencehttps://github.com/thoth-tech/documentation/pull/551
Minu Nediyapalackal SunilDocument the below API pages in detail within the website - set 5https://github.com/thoth-tech/doubtfire-astro/pull/9
Minu Nediyapalackal SunilAdd detailed operations for units API (task_definitions -tii_group_attachments ) on Ontrack documentation websitehttps://github.com/thoth-tech/doubtfire-astro/pull/12
Minu Nediyapalackal SunilAdd detailed operations for units API (task_definitions) on Ontrack documentation websitehttps://github.com/thoth-tech/doubtfire-astro/pull/12
Minu Nediyapalackal SunilCreate diagram of coursemap pagehttps://github.com/thoth-tech/doubtfire-astro/pull/11
Minu Nediyapalackal SunilAdd detailed operations for units API (group set - group ID) on Ontrack documentation websitehttps://github.com/thoth-tech/doubtfire-astro/pull/10
Minu Nediyapalackal SunilAdd detailed operations for units API (group set - group csv) on Ontrack documentation websitehttps://github.com/thoth-tech/doubtfire-astro/pull/10
Minu Nediyapalackal SunilAdd detailed operations for units API (task_definitions - task_assessment_resources ) on Ontrack documentation websitehttps://github.com/thoth-tech/doubtfire-astro/pull/13
Minu Nediyapalackal SunilDocument the operations units API - Tutorial Streamshttps://github.com/thoth-tech/doubtfire-astro/pull/10
Minu Nediyapalackal SunilPull the API docs from last trimester into the new folder structurehttps://github.com/thoth-tech/doubtfire-astro/pull/15
Minu Nediyapalackal SunilCourseflow Documentation Requirement Analysishttps://github.com/thoth-tech/doubtfire-astro/pull/14
Muhammad DanialMigration: Component task-ilo-alignment-modal.coffee
Sam RolfeImplement the backend requirements for the course entity.https://github.com/thoth-tech/doubtfire-api/pull/34
Sam RolfeImplement the backend requirements for the course map entity.https://github.com/thoth-tech/doubtfire-api/pull/35
Sam RolfeImplement the backend requirements for the course map unit entity.https://github.com/thoth-tech/doubtfire-api/pull/35
Sam RolfeImplement the backend requirements for the requirement set entity.https://github.com/thoth-tech/doubtfire-api/pull/37
Sam RolfeImplement the backend requirements for the specialization entity.
Sam RolfeAdd Authentication to the Courseflow endpoints
Sam RolfeAdd button to Courseflow main componenthttps://github.com/thoth-tech/doubtfire-web/pull/227
Sam RolfeCreated coursemap base pagehttps://github.com/thoth-tech/doubtfire-web/pull/233
Sam RolfeCreate a list of tasks for CourseMap FE
Sam RolfeCreate diagram of coursemap pagehttps://github.com/thoth-tech/doubtfire-astro/pull/11
Sam RolfeEnsure Unit Definition model satisfies all requirements (Phase 2)
Sam RolfeMigration: grade-icon.coffeehttps://github.com/thoth-tech/doubtfire-web/pull/231
Sam RolfeAdd ability to add elective units to the unit pool (phase 2)https://github.com/thoth-tech/doubtfire-web/pull/236
Sam RolfeCreate appropriate testing files for the Unit Definition entity (Phase 1)https://github.com/thoth-tech/doubtfire-api/pull/42
Sam RolfeCreate dummy data for a specific course for the front end to use (Phase 3)https://github.com/thoth-tech/doubtfire-api/pull/43
Sam RolfeCreate services and models for courseflow back end components.https://github.com/thoth-tech/doubtfire-web/pull/252
Sam RolfeImplement the backend requirements for the Unit Definition entity (phase 1)https://github.com/thoth-tech/doubtfire-api/pull/42
Sam RolfeMigrate the existing Unit table to be compatible with Unit Definition (Phase 4)https://github.com/thoth-tech/doubtfire-api/pull/41
Sam RolfePopulate remaining units container with relevant units from course (phase 2)https://github.com/thoth-tech/doubtfire-web/pull/253
Sam RolfeCourseflow Documentation Requirement Analysishttps://github.com/thoth-tech/doubtfire-astro/pull/14
Shen TianAdd button to Courseflow main componenthttps://github.com/thoth-tech/doubtfire-web/pull/227
Shen TianCreated coursemap base pagehttps://github.com/thoth-tech/doubtfire-web/pull/233
Shen TianCreate services and models for courseflow back end components.https://github.com/thoth-tech/doubtfire-web/pull/252
Shen TianMigrate analytics.coffeehttps://github.com/thoth-tech/doubtfire-web/pull/256
Shen TianMigration: timeout.coffeehttps://github.com/doubtfire-lms/doubtfire-web/pull/868/commits/6a965ef9927837bd3e9e77d27b035473cd974215
https://github.com/thoth-tech/doubtfire-web/pull/230
Shen TianPopulate remaining units container with relevant units from course (phase 2)https://github.com/thoth-tech/doubtfire-web/pull/253
Shyama Chandrashekaran PillaiDocument the below API pages in detail within the website - set 5https://github.com/thoth-tech/doubtfire-astro/pull/9
Shyama Chandrashekaran PillaiAdd detailed operations for units API (task_definitions -tii_group_attachments ) on Ontrack documentation websitehttps://github.com/thoth-tech/doubtfire-astro/pull/12
Shyama Chandrashekaran PillaiAdd detailed operations for units API (task_definitions) on Ontrack documentation websitehttps://github.com/thoth-tech/doubtfire-astro/pull/12
Shyama Chandrashekaran PillaiAdd detailed operations for units API (group set - group ID) on Ontrack documentation websitehttps://github.com/thoth-tech/doubtfire-astro/pull/10
Shyama Chandrashekaran PillaiAdd detailed operations for units API (group set - group csv) on Ontrack documentation websitehttps://github.com/thoth-tech/doubtfire-astro/pull/10
Shyama Chandrashekaran PillaiAdd detailed operations for units API (task_definitions - task_assessment_resources ) on Ontrack documentation websitehttps://github.com/thoth-tech/doubtfire-astro/pull/13
Shyama Chandrashekaran PillaiDocument the operations units API - Tutorial Streamshttps://github.com/thoth-tech/doubtfire-astro/pull/10
Shyama Chandrashekaran PillaiPull the API docs from last trimester into the new folder structurehttps://github.com/thoth-tech/doubtfire-astro/pull/15
Thuy Tien Hoamigrate file-uploader.coffeehttps://github.com/thoth-tech/documentation/pull/535/files
https://github.com/thoth-tech/doubtfire-web/pull/246/commits/28a77cd0821ce9b66a43c47741cda35c39132fd2
Thuy Tien HoaMigration: Component task-ilo-alignment-modal.coffee
Thuy Tien HoaMigration: grade-icon.coffeehttps://github.com/thoth-tech/doubtfire-web/pull/231
Thuy Tien HoaAdd ability to add elective units to the unit pool (phase 2)https://github.com/thoth-tech/doubtfire-web/pull/236
Thuy Tien HoaMigrate viewer.coffeehttps://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:

  1. 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.

  2. 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:

  1. Frontend Client: Responsible for user interactions.
  2. Backend API: Handles requests and serves data.
  3. Database: Stores application data.
  4. 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:

  1. Deployment - https://github.com/thoth-tech/doubtfire-deploy
  2. Frontend - https://github.com/thoth-tech/doubtfire-web
  3. Backend - https://github.com/thoth-tech/doubtfire-api
  4. OnTrack Documentation Website - https://github.com/thoth-tech/doubtfire-astro
  5. Documentation (OnTrack feature documentation, frontend migration component reviews, etc.) - https://github.com/thoth-tech/documentation/tree/main/docs/OnTrack
  6. Templates (Spikes, component reviews) - https://github.com/thoth-tech/documentation/tree/main/docs/Templates
  7. 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_screen and 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

NameTask NameTask Attachment
Brianna LairdFix Broken Dev Containerhttps://github.com/splashkit/splashkit.io-starlight/pull/7
Brianna LairdUpdate and Re-organise Trouble Shooting Sectionhttps://github.com/splashkit/splashkit.io-starlight/pull/10
Brianna LairdAdd Python code blocks to “Using Mouse Inputs” guidehttps://github.com/thoth-tech/splashkit.io-starlight/pull/139
Brianna LairdAdd Tutorial Review Documentationhttps://github.com/thoth-tech/documentation/pull/529
Brianna LairdSplashkit tutorial - Documentation Updatehttps://github.com/thoth-tech/ThothTech-Documentation-Website/pull/89
Brianna LairdValidate/Update Processes, Policies and FAQshttps://github.com/thoth-tech/ThothTech-Documentation-Website/pull/85
Brianna LairdAdding OOP To Splashkit Tutorialshttps://github.com/thoth-tech/ThothTech-Documentation-Website/pull/95
Brianna LairdFixing Tutorial Side Guidehttps://github.com/thoth-tech/ThothTech-Documentation-Website/pull/96
Brianna LairdUpdate Usage Examples to add Python codehttps://github.com/thoth-tech/splashkit.io-starlight/pull/144
Brianna LairdCreate Code Usage Examples for: “fill_triangle_on_bitmap” functionhttps://github.com/thoth-tech/splashkit.io-starlight/pull/151
Brianna LairdReview “Routing with Servers” guidehttps://github.com/thoth-tech/documentation/pull/532
https://github.com/thoth-tech/splashkit.io-starlight/pull/146
Brianna LairdCreate Code Usage Examples for CreateSpritehttps://github.com/thoth-tech/splashkit.io-starlight/pull/152
Brianna LairdCreate Code Usage Examples for Draw spritehttps://github.com/thoth-tech/splashkit.io-starlight/pull/153
Brianna LairdCreate Code Usage Examples for Free spritehttps://github.com/thoth-tech/splashkit.io-starlight/pull/154
Brianna LairdCreate Code Usage example for:“clear_screen” functionhttps://github.com/thoth-tech/splashkit.io-starlight/pull/148
Brianna LairdDec to Hex Usage Examplehttps://github.com/thoth-tech/splashkit.io-starlight/pull/171
Brianna LairdHex to Dec Usage Examplehttps://github.com/thoth-tech/splashkit.io-starlight/pull/172
Brianna LairdIPv4 to Decimal Usage Examplehttps://github.com/thoth-tech/splashkit.io-starlight/pull/169
Brianna LairdIPv4 to Hex Usage Examplehttps://github.com/thoth-tech/splashkit.io-starlight/pull/170
Brianna LairdIntroduction to JSON Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/175
Brianna LairdReview “Getting Started with Servers” guidehttps://github.com/thoth-tech/documentation/pull/531
https://github.com/thoth-tech/splashkit.io-starlight/pull/145
Brianna LairdReview “How to make a RESTful API call” guidehttps://github.com/thoth-tech/documentation/pull/533
https://github.com/thoth-tech/splashkit.io-starlight/pull/147
Brianna LairdReview “Splashkit Camera” Guidehttps://github.com/thoth-tech/documentation/pull/545
https://github.com/thoth-tech/splashkit.io-starlight/pull/164
Brianna LairdReview “Useful Utilities” guidehttps://github.com/thoth-tech/documentation/pull/547
https://github.com/thoth-tech/splashkit.io-starlight/pull/176
Brianna LairdReview: “Using Mouse Inputs” guidehttps://github.com/thoth-tech/documentation/pull/541
https://github.com/thoth-tech/splashkit.io-starlight/pull/161
Brianna LairdFix issue with ipv4_to_str functionhttps://github.com/thoth-tech/splashkit-core/pull/71
Brianna LairdAdd python code blocks to the Introduction to JSON in SplashKithttps://github.com/thoth-tech/splashkit.io-starlight/pull/173
Brianna LairdSplashkit Camera Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/183
Brianna LairdUsing Splashkit Audio Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/182
Darren Marchiano SunandarFix typo in vector magnitude squared documentationhttps://github.com/thoth-tech/splashkit-core/pull/62
Darren Marchiano SunandarIdentify missing functionality from SwinGamehttps://github.com/thoth-tech/documentation/pull/536
Darren Marchiano SunandarCreate a python pip packagehttps://github.com/thoth-tech/splashkit-core/pull/65
Darren Marchiano SunandarArcade Machine Splashkit splash screen on startuphttps://github.com/thoth-tech/documentation/pull/548/
Darren Marchiano SunandarFix bug in replace_allhttps://github.com/thoth-tech/splashkit-core/pull/69
Darren Marchiano SunandarTest python versionhttps://github.com/thoth-tech/documentation/pull/542
Darren Marchiano SunandarTranslator: Generate C# documentation comments from HeaderDochttps://github.com/thoth-tech/splashkit-translator/pull/13
Ethan Mark HolleyFix scrollbar jumping to top when switching code fileshttps://github.com/thoth-tech/SplashkitOnline/pull/87
Ethan Mark HolleyInterface Minification Optionhttps://github.com/thoth-tech/SplashkitOnline/pull/89
Ethan Mark HolleyShow message to user requesting them to click into the Execution Environment iFrame to get audio workinghttps://github.com/thoth-tech/SplashkitOnline/pull/90
Ethan Mark HolleyAdd Network Unit Testshttps://github.com/thoth-tech/splashkit-core/pull/73
Ethan Mark HolleyArcade Menu - Add additional controlshttps://github.com/thoth-tech/documentation/pull/546
Ethan Mark HolleyDevelop Test Menu for Arcade Machinehttps://github.com/thoth-tech/arcade-machine/pull/80
Hangyu LiCreate Code Usage Examples for: “fill_circle” functionhttps://github.com/thoth-tech/splashkit.io-starlight/pull/163
Hangyu LiCreate Code Usage Examples for: “fill_ellipse” functionhttps://github.com/thoth-tech/splashkit.io-starlight/pull/162
Hangyu LiCreate Code Usage Examples for: “fill_rectangle” functionhttps://github.com/thoth-tech/splashkit.io-starlight/pull/158
Hangyu LiCreate Code Usage example for:“clear_screen” functionhttps://github.com/thoth-tech/splashkit.io-starlight/pull/148
Hangyu LiDec to Hex Usage Examplehttps://github.com/thoth-tech/splashkit.io-starlight/pull/171
Hangyu LiHex to Dec Usage Examplehttps://github.com/thoth-tech/splashkit.io-starlight/pull/172
Hangyu LiReview “Splashkit Camera” Guidehttps://github.com/thoth-tech/documentation/pull/545
https://github.com/thoth-tech/splashkit.io-starlight/pull/164
Hangyu LiWrite Line INTEGER - Usage Example for Terminalhttps://github.com/thoth-tech/splashkit.io-starlight/pull/185
Hangyu LiWriting JSON data Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/190
Hangyu LiReview “Reading Text” Guidehttps://github.com/thoth-tech/documentation/pull/554
https://github.com/thoth-tech/splashkit.io-starlight/pull/188
Hangyu LiUpdate Splashkit Sprite tutorialhttps://github.com/thoth-tech/splashkit.io-starlight/pull/142
Hayley Rose HughesDefine process for copying games to Arcade Machinehttps://github.com/thoth-tech/documentation/pull/522
Hayley Rose HughesFix typo in vector magnitude squared documentationhttps://github.com/thoth-tech/splashkit-core/pull/62
Hayley Rose HughesInitial implementation of remote GPIO controlhttps://github.com/thoth-tech/splashkit-core/pull/58
Hayley Rose HughesInvestigate bug in move_sprite_tohttps://github.com/thoth-tech/splashkit-core/pull/59
Hayley Rose HughesFix bug in closest_point_on_lineshttps://github.com/thoth-tech/splashkit-core/pull/63
Hayley Rose HughesCreate a python pip packagehttps://github.com/thoth-tech/splashkit-core/pull/65
Hayley Rose HughesAdd unit tests for utility functionshttps://github.com/thoth-tech/splashkit-core/pull/68
Hayley Rose HughesArcade Machine Splashkit splash screen on startuphttps://github.com/thoth-tech/documentation/pull/548/
Hayley Rose HughesCircle-Triangle Collision Detection Methodshttps://github.com/thoth-tech/splashkit-core/pull/60
Hayley Rose HughesFix broken links in Arcade Build Docohttps://github.com/thoth-tech/documentation/pull/523
Hayley Rose HughesFix bugs in rndhttps://github.com/thoth-tech/splashkit-core/pull/70
Hayley Rose HughesFix issue with ipv4_to_str functionhttps://github.com/thoth-tech/splashkit-core/pull/71
Hayley Rose HughesRename ‘label’ Parameterhttps://github.com/thoth-tech/splashkit-core/pull/66
Hayley Rose HughesTranslator: Generate C# documentation comments from HeaderDochttps://github.com/thoth-tech/splashkit-translator/pull/13
Hayley Rose HughesUpdated Arcade Build Docohttps://github.com/thoth-tech/documentation/pull/523
Hayley Rose HughesRebuild the “Game Packaging” to work with remote reposhttps://github.com/thoth-tech/flipper/pull/1
Jake Andrew OxleyIdentify missing functionality from SwinGamehttps://github.com/thoth-tech/documentation/pull/536
Jake Andrew OxleySplashKit Tutorial - 2D Vectorshttps://github.com/thoth-tech/splashkit.io-starlight/pull/134
Jessica BalsillieAutomate installation of pre-built fileshttps://github.com/thoth-tech/SplashkitOnline/pull/85
Jessica BalsillieFix scrollbar jumping to top when switching code fileshttps://github.com/thoth-tech/SplashkitOnline/pull/87
Jonathan James TynanDefine process for copying games to Arcade Machinehttps://github.com/thoth-tech/documentation/pull/522
Jonathan James TynanInitial implementation of remote GPIO controlhttps://github.com/thoth-tech/splashkit-core/pull/58
Jonathan James TynanTutorial Proposal - 2D Vectorshttps://github.com/thoth-tech/ThothTech-Documentation-Website/pull/87
Jonathan James TynanValidate/Update Processes, Policies and FAQshttps://github.com/thoth-tech/ThothTech-Documentation-Website/pull/85
Jonathan James TynanAdd bitmap, sound effect and music unit testshttps://github.com/thoth-tech/splashkit-core/pull/64
Jonathan James TynanAutomate installation of pre-built fileshttps://github.com/thoth-tech/SplashkitOnline/pull/85
Jonathan James TynanFix bug in closest_point_on_lineshttps://github.com/thoth-tech/splashkit-core/pull/63
Jonathan James TynanIdentify missing functionality from SwinGamehttps://github.com/thoth-tech/documentation/pull/536
Jonathan James TynanFix guides index pagehttps://github.com/thoth-tech/splashkit.io-starlight/pull/149/
Jonathan James TynanExit Handling Research for SplashKithttps://github.com/thoth-tech/documentation/pull/558
Jonathan James TynanFix Splashkit Translator Docker Containerhttps://github.com/thoth-tech/splashkit-translator/pull/14
Jonathan James TynanGPIO Extension Research for Raspberry Pi 5 and Linux SBCshttps://github.com/thoth-tech/documentation/pull/557
Jonathan James TynanAdd showcase pagehttps://github.com/thoth-tech/splashkit.io-starlight/pull/155
Jonathan James TynanUpdate Broken Splashkit.io Linkshttps://github.com/thoth-tech/splashkit.io-starlight/pull/136
Jonathan James TynanAdd unit tests for utility functionshttps://github.com/thoth-tech/splashkit-core/pull/68
Jonathan James TynanBase64 Splashkit image decoding functionhttps://github.com/thoth-tech/splashkit-core/pull/72/
Jonathan James TynanCircle-Triangle Collision Detection Methodshttps://github.com/thoth-tech/splashkit-core/pull/60
Jonathan James TynanFix broken links in Arcade Build Docohttps://github.com/thoth-tech/documentation/pull/523
Jonathan James TynanFix bug in replace_allhttps://github.com/thoth-tech/splashkit-core/pull/69
Jonathan James TynanFix bugs in rndhttps://github.com/thoth-tech/splashkit-core/pull/70
Jonathan James TynanFix issue with ipv4_to_str functionhttps://github.com/thoth-tech/splashkit-core/pull/71
Jonathan James TynanRename ‘label’ Parameterhttps://github.com/thoth-tech/splashkit-core/pull/66
Jonathan James TynanTest python versionhttps://github.com/thoth-tech/documentation/pull/542
Jonathan James TynanTranslator: Generate C# documentation comments from HeaderDochttps://github.com/thoth-tech/splashkit-translator/pull/13
Jonathan James TynanUpdated Arcade Build Docohttps://github.com/thoth-tech/documentation/pull/523
Jonathan James TynanOnboarding Hub - Add SplashKit Informationhttps://github.com/thoth-tech/ThothTech-Documentation-Website/pull/99
Jonathan James TynanRebuild the “Game Packaging” to work with remote reposhttps://github.com/thoth-tech/flipper/pull/1
Ka Chun LamCreate raycasted point collision artifacthttps://github.com/thoth-tech/arcade-games/pull/229
Ka Chun LamProject B- Tutorial on Applying the Observer Patternhttps://github.com/thoth-tech/project-b/pull/5
Ka Chun LamProject Bee - Debug rectangle/circle for the ‘raindrops’https://github.com/thoth-tech/project-b/pull/8
Ka Chun LamProject Bee - Put red dot in the middle of projectileshttps://github.com/thoth-tech/project-b/pull/2
https://github.com/thoth-tech/project-b/pull/6
Ka Chun LamProject Bee - Refactor code base to exhibit patterns (observer, mediator, strategy/visitor), and rename variables to be objects in the game itself (instead of subject/observer)https://github.com/thoth-tech/project-b/pull/9
Ka Chun LamProject Bee - Replace crate image with raindrop, replace projectile image with pollenhttps://github.com/thoth-tech/project-b/pull/7
Ka Chun LamProject Bee - create collision with Observer patternhttps://github.com/zhusim222/Bee-game/pull/5
Ka Chun LamProject Bee - create player classhttps://github.com/zhusim222/Bee-game/pull/1
Ka Chun LamProject Bee - programming planhttps://github.com/zhusim222/Bee-game/pull/4
Ka Chun LamProject Bee- Tutorial combining design patternshttps://github.com/thoth-tech/project-b/pull/10
Ka Chun LamProject Bee- apply Gravityhttps://github.com/zhusim222/Bee-game/pull/6
Ka Chun LamProjectB - Create Health, Timer, Start game, End game functionhttps://github.com/thoth-tech/project-b/pull/3
Ka Chun LamProjectB- Fix Segmentation Fault and Update Observer Notificationhttps://github.com/thoth-tech/project-b/pull/4
Ka Chun LamProjectB- Observer Patternhttps://github.com/thoth-tech/project-b/pull/1
Ka Chun LamProjectB-Bullet Factory Functionalityhttps://github.com/thoth-tech/project-b/pull/2
Ka Chun Lamproject Bee - Obstacle classhttps://github.com/zhusim222/Bee-game/pull/2
https://github.com/zhusim222/Bee-game/pull/3
Ka Chun LamCreate 1-2 page condensed, high level implementation pattern guide for rapid onboardinghttps://github.com/thoth-tech/arcade-games/pull/227
Ka Chun Lamproject Bee - create programming planhttps://github.com/zhusim222/Bee-game/pull/4
Ka Chun LamCreate artifact demoing discrete grid based approach to light marchinghttps://github.com/thoth-tech/arcade-games/pull/230
Ka Chun LamVenture Adventure - fix level numbering schemehttps://github.com/thoth-tech/arcade-games/pull/228
Kartik KaushikCreate Code Usage Examples for CreateSpritehttps://github.com/thoth-tech/splashkit.io-starlight/pull/152
Kartik KaushikCreate Code Usage Examples for Draw spritehttps://github.com/thoth-tech/splashkit.io-starlight/pull/153
Kartik KaushikCreate Code Usage Examples for Free spritehttps://github.com/thoth-tech/splashkit.io-starlight/pull/154
Kartik KaushikCreate Code Usage Examples for sprite set positionhttps://github.com/thoth-tech/splashkit.io-starlight/pull/168
Kartik KaushikCreate Code Usage Examples for sprite set velocityhttps://github.com/thoth-tech/splashkit.io-starlight/pull/165
Kartik KaushikCreate Code Usage Examples for sprite set xhttps://github.com/thoth-tech/splashkit.io-starlight/pull/166
Kartik KaushikCreate Code Usage Examples for sprite set yhttps://github.com/thoth-tech/splashkit.io-starlight/pull/167
Kartik KaushikGithub Guidehttps://github.com/thoth-tech/ThothTech-Documentation-Website/pull/101
Kartik KaushikStyling Using Interfaces Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/200
Kartik KaushikUnderstanding Double Buffering Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/197
Kartik KaushikWriting JSON data Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/190
Mark HeathArcade game repo - fix outstanding merge conflictshttps://github.com/thoth-tech/arcade-games/pull/205
https://github.com/thoth-tech/arcade-games/pull/209
https://github.com/thoth-tech/arcade-games/pull/210
https://github.com/thoth-tech/arcade-games/pull/211
https://github.com/thoth-tech/arcade-games/pull/212
https://github.com/thoth-tech/arcade-games/pull/213
https://github.com/thoth-tech/arcade-games/pull/228
https://github.com/thoth-tech/arcade-games/pull/231
https://github.com/thoth-tech/arcade-games/pull/232
https://github.com/thoth-tech/arcade-games/pull/233
https://github.com/thoth-tech/arcade-games/pull/234
https://github.com/thoth-tech/arcade-games/pull/235
https://github.com/thoth-tech/arcade-games/pull/236
Mark HeathBelow The Surface - Mario Level Brokenhttps://github.com/thoth-tech/arcade-games/pull/237
Mark HeathCreate raycasted point collision artifacthttps://github.com/thoth-tech/arcade-games/pull/229
Mark HeathProject Bee - programming planhttps://github.com/zhusim222/Bee-game/pull/4
Mark HeathAll games - locally-compiled exe(s) are platform-specifichttps://github.com/thoth-tech/arcade-games/pull/226
Mark HeathBelow The Surface - level 9 (FIGHT) has a collision issue next to the exithttps://github.com/thoth-tech/arcade-games/pull/225
Mark HeathCreate 1-2 page condensed, high level implementation pattern guide for rapid onboardinghttps://github.com/thoth-tech/arcade-games/pull/227
Mark HeathMisc games - fix merge conflicts from T1 PRshttps://github.com/thoth-tech/arcade-games/pull/228
Mark HeathVenture Adventure - fix bundle fileshttps://github.com/thoth-tech/arcade-games/pull/219
Mark HeathVenture Adventure - fix level musichttps://github.com/thoth-tech/arcade-games/pull/222
Mark HeathVenture Adventure - remove outdated credithttps://github.com/thoth-tech/arcade-games/pull/218
Mark HeathVenture Adventure - small refactorhttps://github.com/thoth-tech/arcade-games/pull/220
https://github.com/thoth-tech/arcade-games/pull/221
https://github.com/thoth-tech/arcade-games/pull/222
https://github.com/thoth-tech/arcade-games/pull/223
https://github.com/thoth-tech/arcade-games/pull/224
Mark Heathproject Bee - create programming planhttps://github.com/zhusim222/Bee-game/pull/4
Mark HeathCreate artifact demoing discrete grid based approach to light marchinghttps://github.com/thoth-tech/arcade-games/pull/230
Mark HeathVenture Adventure - fix level numbering schemehttps://github.com/thoth-tech/arcade-games/pull/228
Matthew James HardingFix typo in vector magnitude squared documentationhttps://github.com/thoth-tech/splashkit-core/pull/62
Matthew James HardingInvestigate bug in move_sprite_tohttps://github.com/thoth-tech/splashkit-core/pull/59
Matthew James HardingAdd bitmap, sound effect and music unit testshttps://github.com/thoth-tech/splashkit-core/pull/64
Matthew James HardingFix bug in closest_point_on_lineshttps://github.com/thoth-tech/splashkit-core/pull/63
Matthew James HardingInterface Minification Optionhttps://github.com/thoth-tech/SplashkitOnline/pull/89
Matthew James HardingShow message to user requesting them to click into the Execution Environment iFrame to get audio workinghttps://github.com/thoth-tech/SplashkitOnline/pull/90
Matthew James HardingAdd Network Unit Testshttps://github.com/thoth-tech/splashkit-core/pull/73
Matthew James HardingAdd unit tests for utility functionshttps://github.com/thoth-tech/splashkit-core/pull/68
Matthew James HardingArcade Menu - Add additional controlshttps://github.com/thoth-tech/documentation/pull/546
Matthew James HardingBase64 Splashkit image decoding functionhttps://github.com/thoth-tech/splashkit-core/pull/72/
Matthew James HardingCircle-Triangle Collision Detection Methodshttps://github.com/thoth-tech/splashkit-core/pull/60
Matthew James HardingDevelop Test Menu for Arcade Machinehttps://github.com/thoth-tech/arcade-machine/pull/80
Matthew James HardingFix bug in replace_allhttps://github.com/thoth-tech/splashkit-core/pull/69
Matthew James HardingFix bugs in rndhttps://github.com/thoth-tech/splashkit-core/pull/70
Mounika AngadipetaAdd C# code blocks to the 3 JSON guideshttps://github.com/thoth-tech/splashkit.io-starlight/pull/133
Mounika AngadipetaAdd Python code blocks to “Using Mouse Inputs” guidehttps://github.com/thoth-tech/splashkit.io-starlight/pull/139
Mounika AngadipetaTutorial Proposal - 2D Vectorshttps://github.com/thoth-tech/ThothTech-Documentation-Website/pull/87
Mounika AngadipetaCreate Code Usage Examples for: “fill_triangle_on_bitmap” functionhttps://github.com/thoth-tech/splashkit.io-starlight/pull/151
Mounika AngadipetaIntroduction to JSON Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/175
Mounika AngadipetaReading JSON data Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/186
Mounika AngadipetaReview “Introduction to JSON” guidehttps://github.com/thoth-tech/documentation/pull/540
https://github.com/thoth-tech/splashkit.io-starlight/pull/156
Mounika AngadipetaReview: “Using Mouse Inputs” guidehttps://github.com/thoth-tech/documentation/pull/541
https://github.com/thoth-tech/splashkit.io-starlight/pull/161
Mounika AngadipetaAdd python code blocks to the Introduction to JSON in SplashKithttps://github.com/thoth-tech/splashkit.io-starlight/pull/173
Mounika AngadipetaSplashkit Camera Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/183
Mounika AngadipetaUsing Mouse Inputs Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/179
Mounika AngadipetaUsing Splashkit Audio Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/182
Nidhisha PahadeSplashKit Website Onboarding Hub / Website Overhaulhttps://github.com/thoth-tech/ThothTech-Documentation-Website/pull/100
Nidhisha PahadeCreate Code Usage Examples for CreateSpritehttps://github.com/thoth-tech/splashkit.io-starlight/pull/152
Nidhisha PahadeGithub Guidehttps://github.com/thoth-tech/ThothTech-Documentation-Website/pull/101
Nidhisha PahadeReview “Getting Started with Servers” guidehttps://github.com/thoth-tech/documentation/pull/531
https://github.com/thoth-tech/splashkit.io-starlight/pull/145
Nidhisha PahadeReview “Useful Utilities” guidehttps://github.com/thoth-tech/documentation/pull/547
https://github.com/thoth-tech/splashkit.io-starlight/pull/176
Nidhisha PahadeStyling Using Interfaces Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/200
Nidhisha PahadeUnderstanding Double Buffering Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/197
Nidhisha PahadeCreating User Interfaces Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/196
Nidhisha PahadeCreating User Interfaces Tutorial - Python Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/189
Nidhisha PahadeDrawing using Procedures Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/198
Nidhisha PahadeLayouts in User Interfaces Tutorial - Python Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/191
Nidhisha PahadeLayouts in user interfaces Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/199
Nidhisha PahadeStyling User Interfaces Tutorial - Python Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/192
Nidhisha PahadeUsing Animations Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/194
Oliver Exell-BruceFix API Page Parameter Table Formattinghttps://github.com/thoth-tech/splashkit.io-starlight/pull/187
Oliver Exell-BruceFix guides index pagehttps://github.com/thoth-tech/splashkit.io-starlight/pull/149/
Oliver Exell-BruceWebsite Stylinghttps://github.com/thoth-tech/splashkit.io-starlight/pull/159
Oliver Exell-BruceAdd showcase pagehttps://github.com/thoth-tech/splashkit.io-starlight/pull/155
Oliver Exell-BruceReview “Getting Started with Servers” guidehttps://github.com/thoth-tech/documentation/pull/531
https://github.com/thoth-tech/splashkit.io-starlight/pull/145
Oliver Exell-BruceReview “Useful Utilities” guidehttps://github.com/thoth-tech/documentation/pull/547
https://github.com/thoth-tech/splashkit.io-starlight/pull/176
Oliver Exell-BruceSplashKit Tutorial - 2D Vectorshttps://github.com/thoth-tech/splashkit.io-starlight/pull/134
Oliver Exell-BruceStyling Using Interfaces Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/200
Oliver Exell-BruceUnderstanding Double Buffering Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/197
Oliver Exell-BruceCreating User Interfaces Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/196
Oliver Exell-BruceCreating User Interfaces Tutorial - Python Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/189
Oliver Exell-BruceDrawing using Procedures Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/198
Oliver Exell-BruceLayouts in User Interfaces Tutorial - Python Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/191
Oliver Exell-BruceLayouts in user interfaces Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/199
Oliver Exell-BruceStyling User Interfaces Tutorial - Python Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/192
Oliver Exell-BruceUsing Animations Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/194
Oscar HarrisCreate raycasted point collision artifacthttps://github.com/thoth-tech/arcade-games/pull/229
Oscar HarrisCreate 1-2 page condensed, high level implementation pattern guide for rapid onboardinghttps://github.com/thoth-tech/arcade-games/pull/227
Oscar HarrisCreate artifact demoing discrete grid based approach to light marchinghttps://github.com/thoth-tech/arcade-games/pull/230
Sana NoureenUpdate Tab Logohttps://github.com/thoth-tech/ThothTech-Documentation-Website/pull/98
Sana NoureenWebsite Stylinghttps://github.com/thoth-tech/splashkit.io-starlight/pull/159
Sana NoureenDec to Hex Usage Examplehttps://github.com/thoth-tech/splashkit.io-starlight/pull/171
Sana NoureenDocumentation Site Stylinghttps://github.com/thoth-tech/ThothTech-Documentation-Website/pull/102
Sana NoureenWrite Line INTEGER - Usage Example for Terminalhttps://github.com/thoth-tech/splashkit.io-starlight/pull/185
Sharvani KandalaCreate Code Usage Examples for: “fill_triangle” functionhttps://github.com/thoth-tech/splashkit.io-starlight/pull/143
Sharvani KandalaTutorial Proposal- Camera control functionshttps://github.com/thoth-tech/ThothTech-Documentation-Website/pull/97
Sharvani KandalaCreate Code Usage Examples for: “fill_ellipse” functionhttps://github.com/thoth-tech/splashkit.io-starlight/pull/162
Sharvani KandalaCreate Code Usage Examples for: “fill_rectangle” functionhttps://github.com/thoth-tech/splashkit.io-starlight/pull/158
Sharvani KandalaCreate Code Usage Examples for: “fill_triangle_on_bitmap” functionhttps://github.com/thoth-tech/splashkit.io-starlight/pull/151
Sharvani KandalaCreate Code Usage Examples for Draw spritehttps://github.com/thoth-tech/splashkit.io-starlight/pull/153
Sharvani KandalaCreate Code Usage example for:“clear_screen” functionhttps://github.com/thoth-tech/splashkit.io-starlight/pull/148
Sharvani KandalaIPv4 to Decimal Usage Examplehttps://github.com/thoth-tech/splashkit.io-starlight/pull/169
Sharvani KandalaIPv4 to Hex Usage Examplehttps://github.com/thoth-tech/splashkit.io-starlight/pull/170
Sharvani KandalaReview “How to make a RESTful API call” guidehttps://github.com/thoth-tech/documentation/pull/533
https://github.com/thoth-tech/splashkit.io-starlight/pull/147
Sharvani KandalaDynamic Camera Control Tutorialhttps://github.com/thoth-tech/splashkit.io-starlight/pull/177
Shaun RatcliffAdd C# code blocks to the 3 JSON guideshttps://github.com/thoth-tech/splashkit.io-starlight/pull/133
Shaun RatcliffSplashkit tutorial - Documentation Updatehttps://github.com/thoth-tech/ThothTech-Documentation-Website/pull/89
Shaun RatcliffTutorial Proposal - 2D Vectorshttps://github.com/thoth-tech/ThothTech-Documentation-Website/pull/87
Shaun RatcliffValidate/Update Processes, Policies and FAQshttps://github.com/thoth-tech/ThothTech-Documentation-Website/pull/85
Shaun RatcliffFix API Page Parameter Table Formattinghttps://github.com/thoth-tech/splashkit.io-starlight/pull/187
Shaun RatcliffFix guides index pagehttps://github.com/thoth-tech/splashkit.io-starlight/pull/149/
Shaun RatcliffWebsite Stylinghttps://github.com/thoth-tech/splashkit.io-starlight/pull/159
Shaun RatcliffInstructions for How To Add Game to Showcase Pagehttps://github.com/thoth-tech/ThothTech-Documentation-Website/pull/90
Shaun RatcliffSplashKit Website Onboarding Hub / Website Overhaulhttps://github.com/thoth-tech/ThothTech-Documentation-Website/pull/100
Shaun RatcliffAdd showcase pagehttps://github.com/thoth-tech/splashkit.io-starlight/pull/155
Shaun RatcliffCreate Code Usage example for:“clear_screen” functionhttps://github.com/thoth-tech/splashkit.io-starlight/pull/148
Shaun RatcliffDocumentation Site Stylinghttps://github.com/thoth-tech/ThothTech-Documentation-Website/pull/102
Shaun RatcliffReading JSON data Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/186
Shaun RatcliffReview “Introduction to JSON” guidehttps://github.com/thoth-tech/documentation/pull/540
https://github.com/thoth-tech/splashkit.io-starlight/pull/156
Shaun RatcliffSplashKit Tutorial - 2D Vectorshttps://github.com/thoth-tech/splashkit.io-starlight/pull/134
Shaun RatcliffUpdate Broken Splashkit.io Linkshttps://github.com/thoth-tech/splashkit.io-starlight/pull/136
Shaun RatcliffWrite Line INTEGER - Usage Example for Terminalhttps://github.com/thoth-tech/splashkit.io-starlight/pull/185
Shaun RatcliffDynamic Camera Control Tutorialhttps://github.com/thoth-tech/splashkit.io-starlight/pull/177
Shaun RatcliffOnboarding Hub - Add SplashKit Informationhttps://github.com/thoth-tech/ThothTech-Documentation-Website/pull/99
Simon ZhuBelow The Surface - level 9 (FIGHT) has a collision issue next to the exithttps://github.com/thoth-tech/arcade-games/pull/225
Thomas James ShanahanAll games - locally-compiled exe(s) are platform-specifichttps://github.com/thoth-tech/arcade-games/pull/226
Thomas James ShanahanBelow The Surface - level 9 (FIGHT) has a collision issue next to the exithttps://github.com/thoth-tech/arcade-games/pull/225
Thomas James Shanahanproject Bee - create programming planhttps://github.com/zhusim222/Bee-game/pull/4
Thomas James ShanahanVenture Adventure - fix level numbering schemehttps://github.com/thoth-tech/arcade-games/pull/228
Will SaundersDefine process for copying games to Arcade Machinehttps://github.com/thoth-tech/documentation/pull/522
Will SaundersInitial implementation of remote GPIO controlhttps://github.com/thoth-tech/splashkit-core/pull/58
Will SaundersInvestigate bug in move_sprite_tohttps://github.com/thoth-tech/splashkit-core/pull/59
Will SaundersAdd bitmap, sound effect and music unit testshttps://github.com/thoth-tech/splashkit-core/pull/64
Will SaundersInterface Minification Optionhttps://github.com/thoth-tech/SplashkitOnline/pull/89
Will SaundersShow message to user requesting them to click into the Execution Environment iFrame to get audio workinghttps://github.com/thoth-tech/SplashkitOnline/pull/90
Will SaundersAdd Network Unit Testshttps://github.com/thoth-tech/splashkit-core/pull/73
Will SaundersArcade Machine Splashkit splash screen on startuphttps://github.com/thoth-tech/documentation/pull/548/
Will SaundersArcade Menu - Add additional controlshttps://github.com/thoth-tech/documentation/pull/546
Will SaundersBase64 Splashkit image decoding functionhttps://github.com/thoth-tech/splashkit-core/pull/72/
Will SaundersDevelop Test Menu for Arcade Machinehttps://github.com/thoth-tech/arcade-machine/pull/80
Will SaundersFix broken links in Arcade Build Docohttps://github.com/thoth-tech/documentation/pull/523
Will SaundersRename ‘label’ Parameterhttps://github.com/thoth-tech/splashkit-core/pull/66
Will SaundersTest python versionhttps://github.com/thoth-tech/documentation/pull/542
Will SaundersUpdated Arcade Build Docohttps://github.com/thoth-tech/documentation/pull/523
Will SaundersUpdate Splashkit Sprite tutorialhttps://github.com/thoth-tech/splashkit.io-starlight/pull/142
Yuyang YangAdd C# code blocks to the 3 JSON guideshttps://github.com/thoth-tech/splashkit.io-starlight/pull/133
Yuyang YangAdd Python code blocks to “Using Mouse Inputs” guidehttps://github.com/thoth-tech/splashkit.io-starlight/pull/139
Yuyang YangGraphical Application - Graphical operation managementhttps://github.com/thoth-tech/splashkit.io-starlight/pull/180
Yuyang YangIntroduction to JSON Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/175
Yuyang YangReading JSON data Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/186
Yuyang YangReview “How to make a RESTful API call” guidehttps://github.com/thoth-tech/documentation/pull/533
https://github.com/thoth-tech/splashkit.io-starlight/pull/147
Yuyang YangReview “Introduction to JSON” guidehttps://github.com/thoth-tech/documentation/pull/540
https://github.com/thoth-tech/splashkit.io-starlight/pull/156
Yuyang YangReview “Splashkit Camera” Guidehttps://github.com/thoth-tech/documentation/pull/545
https://github.com/thoth-tech/splashkit.io-starlight/pull/164
Yuyang YangReview: “Using Mouse Inputs” guidehttps://github.com/thoth-tech/documentation/pull/541
https://github.com/thoth-tech/splashkit.io-starlight/pull/161
Yuyang YangWriting JSON data Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/190
Yuyang YangReview “Reading Text” Guidehttps://github.com/thoth-tech/documentation/pull/554
https://github.com/thoth-tech/splashkit.io-starlight/pull/188
Yuyang YangSplashkit Camera Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/183
Yuyang YangUsing Mouse Inputs Tutorial - C# Language Updatehttps://github.com/thoth-tech/splashkit.io-starlight/pull/179

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
  • 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

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

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

Showcase Video

The videos in the following folder summarise our efforts this trimester in SplashKit: