-
-
Notifications
You must be signed in to change notification settings - Fork 822
Add 2025 Curtin Capstone End of Year Blog Post #705
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 20 commits
04ffc83
f1a205d
a1f7d87
896f080
3c19714
fe8096e
94aed66
30064db
7fc341b
7b472a3
0125304
21ee5db
2055fda
a756c84
ef7e6a5
67c534c
c2ae937
9b1ace0
a052ad7
ae8a906
34fc15d
cdd9ace
56634dd
f34e9bb
0eb4a9a
5c971a4
fb8dd18
2059ee9
d788e39
4281bc4
82b1b31
f2ff3f7
b1fe800
e749f8e
a050569
3a7ed06
c3949ec
f4192d4
2c38fca
896840d
3b08ab2
87d6ecf
43b3d6c
ddb4959
4d0d8ed
bf8dfe1
619a6c0
0855fe1
926112d
019f054
3b4989b
1aae529
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,135 @@ | ||||||||||||||
| title: 2025 Curtin University Capstone Project | ||||||||||||||
| --- | ||||||||||||||
| author: Curtin Capstone Team | ||||||||||||||
| --- | ||||||||||||||
| body: | ||||||||||||||
|
|
||||||||||||||
| Since February, 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. This is a summary of the work they have completed. | ||||||||||||||
|
|
||||||||||||||
| # 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 ([kavi2du](https://github.com/kavi2du)); Information Technology | ||||||||||||||
| - Callum Horton ([Stringer90](https://github.com/Stringer90)); Software Engineering | ||||||||||||||
| - Caydn Lee ([caydnn](https://github.com/caydnn)); Software Engineering | ||||||||||||||
| - Jaeden Mah ([JMah007](https://github.com/JMah007)); Computer Science | ||||||||||||||
| - Mitchell Pontague ([mEp3ii2](https://github.com/mEp3ii2)); Software Engineering | ||||||||||||||
| - Veronica Taniputra ([vt37](https://github.com/vt37)); Cyber Security | ||||||||||||||
|
|
||||||||||||||
| In the first semester, our team gained exposure to the BeeWare ecosystem through tackling a variety of small bug fixes within Briefcase and Toga, creating widgets for the web backend in Toga and completing small research tasks into the mechanisms within the BeeWare tools. After this, the team split off into pairs to plan out larger deliverable contributions that would add or changes features within BeeWare. | ||||||||||||||
| It is these deliverables that the team worked on in the second semester. | ||||||||||||||
caydnn marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||
|
|
||||||||||||||
| ## What We’ve Worked On This Semester | ||||||||||||||
|
|
||||||||||||||
| ### Toga Web Testing | ||||||||||||||
|
|
||||||||||||||
| This semester, we delivered a functional prototype of a testing mechanism for Toga’s Web backend. This prototype addresses the problem outlined in the prior issue, as detailed [here](https://github.com/beeware/toga/issues/3545). The problem was straightforward: there wasn’t a practical, end-to-end way to run automated tests against Toga web apps running in the browser. Our prototype addresses this by introducing a structured communication bridge between the backend and the frontend, widget proxies, and DOM probes. This enables end-to-end tests that tests both widget logic and rendered UI. | ||||||||||||||
caydnn marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||||||||||||||
| At this stage, the work serves as a proof-of-concept approach rather than a finished product. It demonstrates that the core approach works reliably, though additional features and improvements remain to be implemented. A detailed handover report for the current solution and future works can be found [here](https://github.com/beeware/toga/issues/3545). Our draft PR which contains our work can be found [here](https://github.com/beeware/toga/pull/3728). | ||||||||||||||
caydnn marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||||||||||||||
|
|
||||||||||||||
| ### Briefcase Web Development Optimisations | ||||||||||||||
|
|
||||||||||||||
| This semester, we have successfully laid the groundwork for web platform development mode support in briefcase by making the `dev` command platform-aware and implementing virtual environment management. We refactored the core DevCommand architecture by introducing platform-specific `DevCommand` subclasses like `StaticWebDevCommand` to handle platform-dependent workflows (PR #2419).Next, we implemented virtual environment management by introducing the VirtualEnvironment context manager tool, which provides isolated, configurable virtual environments for development mode, which addressed dependency conflicts while maintaining compatibility with existing Briefcase patterns. Within the managed virtual environment, local app assets are installed in editable mode which create the .pth files to make the assets discoverable by the server. We've started work on the StaticWebDevCommand with proper venv creation and path management specific to web development, app execution remains a planned next step that has been marked with the UnsupportedCommandError error. This work establishes the foundation for exposing the app assets to the web server allowing the live-reload workflow ultimately speeding up the web developement process. These are outlined in the original proposal that you can check out here to see an outline of our next steps for those wanting to carry on where we've left off. | ||||||||||||||
caydnn marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||||||||||||||
|
|
||||||||||||||
| To access the related resources for this deliverable: | ||||||||||||||
| - View the discussion post [here](https://github.com/beeware/briefcase/discussions/2282) | ||||||||||||||
| - View the Briefcase issue ticket [here](https://github.com/beeware/briefcase/issues/2334) | ||||||||||||||
| - View making of the dev command platform aware pull request [here](https://github.com/beeware/briefcase/pull/2419) | ||||||||||||||
| - View the virtual environment manager tool pull request [here](https://github.com/beeware/briefcase/pull/2420) | ||||||||||||||
| - View the implementation for editable installs pull request [here](https://github.com/beeware/briefcase/pull/2498) | ||||||||||||||
|
|
||||||||||||||
JMah007 marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||||||||||||||
| ### PyScript Briefcase and Toga Dependencies | ||||||||||||||
|
|
||||||||||||||
| This semester, we worked on redesigning the Briefcase static web build pipeline to implement a deterministic asset insertion system which replaced template-based asset management. The new system enables Toga and other toolkits to embed their configuration files and front-end resources directly into wheel packages. The web template received a redesign which established specific areas for insertion. The previous restrictions prevented Toga and other toolkits from taking full control of their front-end operations while working independently from Briefcase. The new system separates tasks while making maintenance easier and enables toolkits to manage their front-end components, with Toga now owning its own PyScript version, PyScript configuration and Shoelace HTML script. | ||||||||||||||
|
||||||||||||||
| This semester, we worked on redesigning the Briefcase static web build pipeline to implement a deterministic asset insertion system which replaced template-based asset management. The new system enables Toga and other toolkits to embed their configuration files and front-end resources directly into wheel packages. The web template received a redesign which established specific areas for insertion. The previous restrictions prevented Toga and other toolkits from taking full control of their front-end operations while working independently from Briefcase. The new system separates tasks while making maintenance easier and enables toolkits to manage their front-end components, with Toga now owning its own PyScript version, PyScript configuration and Shoelace HTML script. | |
| This semester, we worked on redesigning the Briefcase static web build pipeline to [implement a deterministic asset insertion system](https://github.com/beeware/briefcase/pull/2442) which replaced template-based asset management. The new system enables Toga and other GUI toolkits to embed their configuration files and front-end resources directly into wheel packages. The web template [received a redesign](https://github.com/beeware/briefcase-web-static-template/pull/21) which established specific areas for insertion. The previous restrictions prevented Toga and other toolkits from taking full control of their front-end operations while working independently from Briefcase. The new system separates tasks while making maintenance easier and enables toolkits to manage their front-end components, with [Toga now owning its own PyScript version, PyScript configuration and Shoelace HTML script](https://github.com/beeware/toga/pull/3666). |
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As above - better to keep these as inline links.
| To access the related resources for this deliverable: | |
| - View the [issue ticket](https://github.com/beeware/briefcase/issues/2337) | |
| - View the Toga pull request [here](https://github.com/beeware/toga/pull/3666) | |
| - View the Briefcase pull request [here](https://github.com/beeware/briefcase/pull/2442) | |
| - View the briefcase-web-static-template pull request [here](https://github.com/beeware/briefcase-web-static-template/pull/21) | |
| - View the documentation pull request [here](https://github.com/beeware/briefcase/pull/2511) |
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| - PR [#2198](https://github.com/beeware/briefcase/pull/2198): Add boolean question (feature) | |
| - PR [#2198](https://github.com/beeware/briefcase/pull/2198): Add an API for asking boolean questions. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also - no need to clarify feature/bugfix in this list.
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Instead of duplicating the list of first semester work, you can link to the earlier blog post.
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| ## Lessons Learnt | |
| ## Lessons Learned |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You'll need to add a blank line between paragraphs to ensure this renders as paragraphs.
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great content; but could be broken into a couple of paragraphs (as with Kavi - make sure there's a blank line between paragraphs)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated
freakboy3742 marked this conversation as resolved.
Show resolved
Hide resolved
freakboy3742 marked this conversation as resolved.
Show resolved
Hide resolved
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As with Jaeden - this should be paragraphs not bullet points.
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's two options here:
- An introductory paragraph with a tight list of bullet points; or
- A couple of paragraphs describing in high level terms with links to relevant outstanding PRs/designs.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've added an opening paragraph at line 98. Did you need me to expand on it? :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So - that introductory paragraph is kind of half way to what I intended.
My main issue is that the bullet point list is inconsistent with the rest of the text. After a lot of narrative descriptions, we've got a set of bullet points reads a bit like a first draft for the paragraphs that should be here. If the future work was as simple as "here are the four issues that need to be resolved" or "here are the 3 PRs that need to be completed", then a bullet list might be appropriate. Here we have a combination of short descriptions and links; some of which is duplicating content that are covered in more detail in the handover reports.
Rather than duplicate the handover reports, this further work section should be giving a really high level summary of the work to be done, and then referring to those handover reports for more details.
(Also some of the todo items have already been done :-) )
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Alrighty that makes sense, I'll see if I can get the team to update their sections for this. A few of us have exams tomorrow but we should be able to change this soon.
For the Insertion system changes, would you like a similar approach but with a link to the remaining issue ticket instead of a handover report?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Alrighty that makes sense, I'll see if I can get the team to update their sections for this. A few of us have exams tomorrow but we should be able to change this soon.
No problems - your exams should absolutely take priority. If we can get this wrapped up by the end of the week, that would be ideal.
For the Insertion system changes, would you like a similar approach but with a link to the remaining issue ticket instead of a handover report?
I'm not sure I follow you're referring to here. My original comment was intended as highlighting an issue with the entire "future work" section, not a flag on this specific bullet point. If there's a handover report, link to it, with maybe a very brief summary of the nature of the outstanding work; if the future work is just a ticket or two, link to those.
To avoid content duplication, it might also be appropriate to remove references to the handover reports in the sections above, and consolidate them down in this future work section.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You could add a link to the first semester blog post here.