Skip to content

[Refactoring] Improve UX/UI of the App with Code Implementation #32

@artreadcode

Description

@artreadcode

Quantum Brush is a multi-window graphical software with OpenJDK + Processing (Java) + Python combination. Using a creative framework such as Proessing is useful here to improve Java's graphical interaction on the image(s) (Canvas). However, using Java's old-school GUI design and making a complicated backend system between Java and Python are not ideal for modern graphical software, especially nowadays good design language and good window organisation is key for various sizes of computer screen and for cross-platform.

For example, Quantum Brush now has three different windows. (Two for main, one for occasional.) The detail of UI components can be seen under here. You can see the complicated UI organisation here.

public class UIManager {

Control Panel, Canvas and Stroke Manager. Ideally, in this case, Canvas and Control Panel should be sit witnin one big window which is responsive to user's computer screen, and Stroke Manager can be opened up separately or underneath the main interface, which would be still within the one big main window. However, because of a constraint from Processing (Java)'s void setup() + void loop() structure, it's difficult to combine the canvas area (where void loop() is constantly referencing) and the areas (Control Panel and Stroke Manager) which are governed by Java's SwingX library.

  • (10 points) CODE: Improve the window arrangement of the current Quantum Brush app. Improve the scattered UI/UX into calm, dedicated workflow.

Currently, the communication between Python backend and Java happens through JSON document, which is not ideal for graphical execution. Thus, we were reviewing using .svg data to improve this pipeline, and it's up to you who brings this feature by .svg or by other solutions.

You can witness that the code is making a JSON document based on user parameters and a stroke which is created from the brush paths.

public void saveStroke(

  • (10 points) CODE: Make the JSON communication system of the current Quantum Brush app, convenient for interaction between Java logic and Python backend, such as using the .svg file system.

So far, Quantum Brush uses the simple, default Java's SwingX style design language, which is not ideal for modern desktop applications. Thus, we're thinking of improving the app's design system, aligns with the good communication from software to user and looks great on Windows, Mac and Linux. (Right now, it seems like the app is from early 2010s 🥲) Thus, contribution using Figma or Sketch, etc. and making a demo of the improved UI/UX using Prototyping tool on Figma or ProtoPie, etc.

  • (20 points) NO CODE: Design the new design language of Quantum Brush, using different design tools and prototyping tools of your choice. Submission of both design files (screenshots) and screen recording of prototyping session is required.

And if you are a team of designers and coders, you are more than welcomed to make the fundamentals of newly-designed Quantum Brush app. While designers are working for the task above, developers can bring new design to the real life. Any technical stak is welcomed, but ideally we were thinking about using Electron + React, OR C/C++ with openFramework like other graphical softwares. However, it's up to your decision.

  • (60 points) CHALLENGE: For the team of designers and coders! Design the new UI of Quantum Brush and bring it into life by making a desktop application with technical stack of your choice, ideally using modern framework such as Electron. Implementation of basic feature is needed, such as creating a new project, importing an image, draw lines and dots on the canvas and save it for execution of quantum brush!

All the source codes for the app can be found under the source branch, which is here.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions