Skip to content
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 108 additions & 0 deletions content/news/buzz/2025-curtin-capstone-semester-end-blog/contents.lr
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
title: 2025 Curtin University Capstone Project
---
author: Curtin Capstone Team
---
body:

Over the past semester, a team of final year students from [Curtin University](https://www.curtin.edu.au) has been collaborating with the BeeWare Project as part of a capstone project for their degrees. Here's a summary of what they've done so far this semester, and what they have planned for the rest of the year.

## Curtin Capstone

Capstone is the final year project undertaken by students across all computing disciplines at Curtin University, including Computer Science, Software Engineering, Cyber Security, and Information Technology. It allows students the opportunity to work in teams on real-world projects in collaboration with industry partners, gaining practical experience and professional exposure before graduating.

This year our team has had the exciting opportunity to contribute to BeeWare for our Capstone project.

Meet the Team:

- Kavidu Abeykoon Mudiyanselagedara
- Discipline: Information Technology
- GitHub: [kavi2du](https://github.com/kavi2du)
Comment thread
kavi2du marked this conversation as resolved.
Outdated
- Callum Horton
- Discipline: Software Engineering
- GitHub: [Stringer90](https://github.com/Stringer90)
- Caydn Lee
- Discipline: Software Engineering
- GitHub: [caydnn](https://github.com/caydnn)
- Jaeden Mah
- Discipline: Computer Science
- GitHub: [JMah007](https://github.com/JMah007)
- Mitchell Pontague
- Discipline: Software Engineering
- GitHub: [mEp3ii2](https://github.com/mEp3ii2)
- Veronica Taniputra
- Discipline: Cyber Security
- GitHub: [vt37](https://github.com/vt37)

## What We’ve Worked On

Throughout the first semester, our team has been focused on contributing to issues on Briefcase and Toga while working on our research to prepare for what is to come in the following semester. We’ve also worked on implementing several of the Toga Web widgets to enhance functionality on the web backend before working on the web test suite for next semester.
Comment thread
kavi2du marked this conversation as resolved.

We were first tasked with contributing to a first timer issue before moving on to other more advanced issues.

### Briefcase Contributions

- PR [#2198](https://github.com/beeware/briefcase/pull/2198): Add boolean question (feature)
- PR [#2103](https://github.com/beeware/briefcase/pull/2203): Add XML content escaping filter to cookiecutter.py (feature)
- PR [#2199](https://github.com/beeware/briefcase/pull/2199): Add catch exception when deleting JDK (bugfix)
- PR [#2229](https://github.com/beeware/briefcase/pull/2229): Accept other changelog name and extension (feature)
- PR [#2201](https://github.com/beeware/briefcase/pull/2201): Add --app option to briefcase build/package (feature)
- PR [#2214](https://github.com/beeware/briefcase/pull/2214): Add --app option to briefcase create/update (feature)
Comment thread
freakboy3742 marked this conversation as resolved.
Outdated
- PR [#2236](https://github.com/beeware/briefcase/pull/2236): Normalise contribution docs with Toga (documentation)
- PR [#54](https://github.com/beeware/briefcase-windows-VisualStudio-template/pull/54): Use XML content escaping filter to Visual Studio template. (bugfix) (work in progress)

### Toga Contributions

- PR [#3259](https://github.com/beeware/toga/pull/3259): Add web screenshots (documentation)
- PR [#3466](https://github.com/beeware/toga/pull/3466): Fix button click handling in Toga Web backend to correctly trigger event (bugfix)

### Web Widgets
Comment thread
kavi2du marked this conversation as resolved.
Outdated
Comment thread
kavi2du marked this conversation as resolved.
Outdated

- PR [#3338](https://github.com/beeware/toga/pull/3338): Date Input
- PR [#3405](https://github.com/beeware/toga/pull/3405): TimeInput
- PR [#3362](https://github.com/beeware/toga/pull/3362): ScrollContainer
- PR [#3425](https://github.com/beeware/toga/pull/3425): Table (work in progress)
- PR [#3402](https://github.com/beeware/toga/pull/3402): Selection (work in progress)

## What We're Working Towards

Now that we’re more familiar with the BeeWare ecosystem, through both our initial PRs and widget implementations, and having concluded our semester 1 research phase, we’re shifting our focus to larger, more structural improvements for the second half of the project.
Comment thread
mEp3ii2 marked this conversation as resolved.
Outdated

Our Primary Goals moving forward include:
Comment thread
kavi2du marked this conversation as resolved.
Outdated

### Toga Web Testing
Comment thread
kavi2du marked this conversation as resolved.

[DISCUSSION STILL ONGOING]

[https://github.com/beeware/toga/discussions/3440](https://github.com/beeware/toga/discussions/3440)
Toga does not currently support testing for the Web platform, due to the fact that WebAssembly does not support multithreading. Currently, the test suite is a second thread inside the testbed application, which requires multithreading.This poses a few problems as the testbed is built assuming that these are running in the same process.
Comment thread
kavi2du marked this conversation as resolved.
Outdated

First, the probes that need to test the rendered widget in the web browser will be using a testing tool called Playwright. Playwright will allow us to ‘poke’ or ‘probe’ the DOM state of the app, looking at different attributes, styling, hierarchy, etc.
Comment thread
kavi2du marked this conversation as resolved.
Outdated

Second, there has to be some kind of communication bridge between the test suite and the app. We are currently looking at using Pyodide to run Python in the browser context remotely using Playwright. Though we will have to expose Pyodide when in test mode, as it is currently inaccessible when running the app normally.

Lastly, [about proxies]

…tbd…

### PyScript Briefcase and Toga Dependencies

During Mitchell’s development of the Date Input Web Widget, we discovered some issues resulting from create_proxy. This issue was resolved separately, but led to discussions regarding ownership of Pyscript, as well as Shoelace and Bootstrap, within the wider Beeware architecture. Currently, the Briefcase Web Template inserts these into index.html, although these should be dependencies of Toga.
Comment thread
kavi2du marked this conversation as resolved.
Outdated

Russell has previously attempted this in the pull requests [https://github.com/beeware/briefcase/pull/1285](https://github.com/beeware/briefcase/pull/1285), [https://github.com/beeware/toga/pull/1945](https://github.com/beeware/toga/pull/1945) and [https://github.com/beeware/briefcase-web-static-template/pull/9](https://github.com/beeware/briefcase-web-static-template/pull/9). Currently, we plan on reviving parts of these to allow for Toga to specify Pyscript versioning. Discussion is ongoing regarding decoupling Pyscript from Briefcase and handling multiple dependencies.
Comment thread
kavi2du marked this conversation as resolved.
Outdated

More details can be found in our [Discussion Post on Briefcase.](https://github.com/beeware/briefcase/discussions/2283)

### Briefcase Web Development Optimisations

While contributing to Toga’s web widgets, we noticed that testing even small changes requires rebuilding all project wheels, which can take a significant amount of time. This makes local development slow and interrupts the feedback loop needed for efficient frontend iteration.

To improve this, we’re exploring ways to optimise how Briefcase handles builds.

Ideas:
- A selective rebuild mechanism that only regenerates wheels when relevant files have changed
- A `--dev` implementation for web that skips wheel building and instead directly references source files during development.

We’ve outlined this in more detail in our [Discussion post on Briefcase](https://github.com/beeware/briefcase/discussions/2282) and are actively researching and working on prototypes
Comment thread
kavi2du marked this conversation as resolved.
Outdated

---
pub_date: 2025-06-13