Projects
Main goal of this seminar is to take what you learnt during seminars (and inspire yourself) to develop a working application in teams of 4 people with the guidance of Tech Lead and a Project Manager.
Project workflow
Create your own repository by forking this repository. Also add your tech lead and your PM as members of the project with Developer role.
Communication during the semester
- Every project is assigned a Product Manager/Owner (PM/PO) and a Tech Lead (TL is one of your seminar tutors)
- Create a Discord Server where you invite both PM and TL.
- Create a room for discussions with PO/PM
- Create a room for discussions with TL
Work and Deliverables During the Semester
Your PM will contact you with a form where your team can select suitable meeting slots (Milestone meetings, Final Presentation, etc.). For all events, all team members must be present. While participating online is technically possible in emergencies, it is heavily discouraged.
Work is split into 5 Milestones (Milestone 0–4) and a Final Presentation. The table below outlines the timeline, required deliverables, and evaluation focus:
| Milestone | Target Week | Main Deliverables | Evaluation & Review Focus |
|---|---|---|---|
| Milestone 0 | Week 2 | Repo setup, team working agreement, initial meeting with PM | Environment check & requirements clarity |
| Milestone 1 | Week 5 | UI/UX mockups approved by PM, functional & non-functional requirements signed off, in-memory CRUD functionality for core entities (without DB), working import/export | Sound initial architecture and domain design |
| Milestone 2 | Week 10 | >50% of functional requirements delivered, persistent database storage, test suite with reasonable coverage | Architecture integration, clean layering |
| Milestone 3 | Before Christmas break | Background tasks, filtering, DSL, logging, transactions, robust error handling, all functional requirements delivered | Error handling, asynchronous operations, polish |
| Milestone 4 | After New Year | Remaining tasks (gap closure, bug fixes, edge cases) + course and PM/TL feedback | Code quality, stability, edge cases |
| Final Presentation | End of January | Virtual software house pitch, live demo & architectural defense within your seminar group | Final evaluation & colloquium |
Final Presentation
You will present your project in front of your seminar group. Your team represents a software startup, and the audience consists of potential investors. You will present your company and application in a way that sells the product to this audience. Since the course concludes with a colloquium, every team member must participate in the presentation.
The presentation has three parts:
- Product Pitch & Demo (15 minutes): Showcase your company branding, user scenarios, and the live application.
- Architectural Defense (10 minutes): Discuss the chosen technologies, architectural decisions, design patterns, and how you resolved major technical roadblocks. We also expect a brief overview of how your team leveraged AI tools and how that influenced your development workflow. Brief summary of the feedback given during Milestone 4 is also expected.
- Q&A (5 minutes): Questions from the
crowdinvestors.
Technology stack
If you are unsure about the library/approach you would like to use, consult with your Tech Lead.
Required Technologies
- Java 21 (or newer LTS) with Maven or Gradle
- JUnit 6, AssertJ for fluent test assertions, and Mockito for mocking
- Swing or JavaFX for GUI
- An embedded database (H2, SQLite, or equivalent) and its JDBC driver
Advised Technologies
- Jackson 3 (and its modules) for (de)serialization
- Helpful libraries such as JFreeChart for drawing charts or Swing DateTimePicker for date picking
Other Technologies
- Hibernate Validator
- Lombok
- Warning: Lombok can create bugs that are very, very difficult to debug. Please, use it only if you know what you are doing.
Forbidden Technologies
The goal of this seminar is to learn how things work under the hood and apply these concepts. These technologies make that either very difficult or impossible.
- Frameworks: Spring (Boot), Micronaut, Quarkus, Dropwizard, etc.
- Dependency Injection: Spring Context, Google Guice, Jakarta CDI / Injection, etc.
- Web/SPA Frameworks: React, Vue.js, Angular, etc.
- ORM Solutions: Hibernate ORM, EclipseLink, or any other Object-Relational Mapping tools.
Project assignments
Your PM will assign an application project based on one of the following topics:
- Ing. Horvath’s Bistro Supply
- Doc. Kovácsová and the chaos around the department
All projects have functional and technical requirements. The technical requirements are identical for all projects, whereas the functional requirements are individual as they are uniquely prepared for your team by your PM. Despite having the same topic, the assignments might differ team-to-team.
The non-technical requirements:
- Develop the project in an Agile manner:
- You must deliver working functionality every milestone. For example, delivering only a frontend/GUI for the first milestone is unacceptable.
- Focus on small, deliverable merge requests that your team members have a realistic chance of reviewing. A PR with
+5000 / -0line changes is not one of those. - When developing a feature, deliver a smaller scope that works end-to-end first, then enrich it and demonstrate your progress across subsequent milestones.
- When implementing a backend component, introduce the corresponding UI together with it whenever possible.
- Focus on small, deliverable merge requests that your team members have a realistic chance of reviewing. A PR with
- You must deliver working functionality every milestone. For example, delivering only a frontend/GUI for the first milestone is unacceptable.
- Come prepared to milestone reviews and submit milestone PRs on time.
- Every team member must participate. We will evaluate the participation by looking at implemented features and their depth. Having a team member implement only the database layer because they dislike Swing is not acceptable.
- We expect you will use project management tool like Jira, Trello, GitLab Issues or something of this nature.
- Have fun and learn a lot!
Expected Git workflow
- Set up a
developbranch- Make
developandmainprotected branches. - During each milestone, your team will use this branch for development. All changes to this branch should be made through a merge request (MR).
- At the end of each milestone, you will create a MR called Milestone-X from the
developbranch into themainbranch. Add your Product Manager and your Tech Lead as assignees.
- Make
- We encourage keeping a linear Git history (e.g., via rebase/fast-forward), though it is not required.
- Every contribution to
developmust be made through MR that requires at least one approval from one of your team members. Please, actually spend time reading and reviewing!
For milestones 1-4, your tech lead will review your changes, provide feedback, and request any necessary modifications. For these milestones, the tech lead must approve your changes before you can merge them!