Team Workflow Scheduler
A client-server task management system
Computer Science
Modular desktop inventory and sales application
Project premise
A Java desktop application for managing dealership inventory, customers, brokers and sales through Swing or a console interface, supported by JSON persistence and automated tests.
Java 11+
Java Swing + Console
Model / UI / Persistence
org.json / dealership.json
JUnit 5 / 39 tests
Checkstyle + UML
01 / Overview
Vehicles, customers, brokers and sales each have their own behaviour, but the application must connect them without duplicating business rules across screens.
The application gives dealership staff one workspace for adding cars, maintaining inventory status, viewing customer and broker directories, and recording sales that connect all four record types.
02 / Workflow
A sale is more than an isolated record: it links a car, buyer, broker and final price, marks the selected vehicle as sold, assigns the customer to the broker and records each change in the event log.
03 / Architecture
The codebase separates model, UI and persistence packages. Dealership acts as the aggregate for cars, brokers, customers and sales; each record type owns its own state while cross-record business rules remain centralized in the dealership model.
The Swing and console entry points operate on the same domain objects, while the Writable contract, JsonReader and JsonWriter keep file serialization outside the interface layer. This organization keeps the model usable independently of either presentation path.
04 / Interface
The Swing interface groups daily operations into focused tabs. Event logging and JSON persistence provide continuity, while the domain model remains usable independently of the interface.
Home handles load and save actions; Inventory presents cars and status editing; Sale links the records needed for a transaction; Directory exposes brokers and customers. A separate console application provides the same core workflow without the graphical layer.
05 / Persistence + events
The full dealership aggregate is serialized with org.json to data/dealership.json. The reader reconstructs cars, brokers, customers and sales, while restored car IDs advance the next identifier to reduce collisions after loading.
A singleton EventLog records meaningful model changes such as adding cars, updating status, assigning customers and completing sales. The GUI prints the accumulated log when its window closes, providing a chronological account of the session.
06 / Documentation + quality
JUnit tests, Checkstyle and a documented UML model make the architecture visible and support disciplined iteration.
Thirty-nine JUnit 5 tests cover the domain model, singleton event log and JSON reader/writer against both general and empty fixtures. The UML diagram records class responsibilities across the tabs, aggregate model, persistence layer and event system.
07 / Run locally
Compile the project with JDK 11 or newer and the libraries in lib. Run ui.DealershipUI for the Swing application or ui.Main for the console version; Windows users replace the colon in the classpath with a semicolon.
Selected project material
