Bildschirmfoto 2026-02-28 um 23.03.24

2D Planingtool for Interior Design

CLIENT                     University Project
TECHNOLOGY      Java, JavaFX, Gradle to build

MY JOB                     Development (Frontend, Design and                                        Backend Validation)
TEAM                         A. Kalwa
                                      A. Larbi

                                      Powder
                                      Prof. Dr. W. Weitz (Supervision)

 

This project was developed as part of a university software engineering course in a team of four. The goal was to build a 2D apartment planning tool that allows users to design and furnish a floor plan interactively.
A key focus of the project was not only the implementation itself, but learning how to properly design and specify software before writing code. We first planned the entire system conceptually by creating design specifications, diagrams, and interaction flows before starting development.
The application was built using Java and JavaFX for the core application, with Gradle as the build tool, and Vue with TypeScript for parts of the user interface.

Focus on Design Patterns and Specifications

Before starting the implementation, we focused heavily on planning and specifying the system architecture. The project required us to design the application conceptually before writing any code.
We began by defining the object model of the system, identifying the main entities of the application and how they relate to each other. Based on this, we created component-based architecture views (Bausteinsichten) to structure the system into clear modules and responsibilities.

In addition, we modeled key workflows using sequence diagrams and documented the expected behavior of the system through detailed design specifications. This process allowed us to think through the most important interactions and architectural decisions early on.

Planing out the application

wireframe1
wireframe2

To support the design process, we created wireframes that defined the layout and structure of the user interface.

sequenz

After that, we modeled the most important user interactions using sequence diagrams, allowing us to map out the communication between components before implementing them.

Only once the structure, responsibilities, and core interactions of the system were clearly defined did we move on to the actual implementation.

How it turned out

Bildschirmfoto 2026-02-28 um 22.59.38

The final application allows users to create and design apartment layouts in a 2D editor. After starting the program, users can either create a new project or load an existing one from a JSON file. Once the apartment dimensions are defined, the application generates an empty floor plan.
The interface includes:

  • Top toolbar with actions such as save, undo, and redo
  • Sidebar with furniture and structural elements like walls, doors, and windows
  • Drag-and-drop placement for furniture and layout components

The system also includes a validation layer that ensures objects can only be placed in valid positions. For example, elements cannot be placed outside the floor plan, and certain objects such as windows or sockets can only be attached to walls.
My main responsibilities in the project included planning and structuring the overall system, organizing development tasks, and contributing to the implementation. On the technical side, I worked primarily on the frontend implementation and the validation logic that checks whether elements can be placed in specific positions.

Take a Look

The demo video shows the core functionality of the application, including creating a new layout, placing walls, and furnishing the apartment using drag-and-drop elements while the validation system ensures correct placement.

Takeaway

This project provided valuable experience in software design and architectural planning before implementation. By focusing heavily on specifications, diagrams, and design patterns, we learned how structured planning can simplify complex development tasks.

It also gave me practical experience working with UI development, validation logic, and collaborative software design, while applying common design patterns in a real project.

View