A desktop app where immigrants request official documents from templates and government coworkers approve them. Built by a team of five for Development of Applications with Multilayer Architecture (VAVA) at FIIT STU in spring 2024.
Finished and archived. Team project by Arthur Kozubov, Zaitsev Artem, Sichkaruk Mykhailo, Vadym Tilihuzov and Sira Dariia.
- Clients register, wait until a coworker confirms the account, then request a document by filling in a template's fields
- Coworkers confirm new clients and approve or reject document requests; approving stores a copy of the template PDF as the client's document
- Admins upload PDF templates, define their fields and manage coworker accounts
- Every gRPC call carries a JWT bearer token checked by a server interceptor; only client registration skips the check
- The UI switches between English and Slovak at runtime
Two Maven modules: server exposes four gRPC services defined in server/src/main/proto, and client is a JavaFX app whose screens are FXML files routed by path. The storage is picked by REPOSITORY_TYPE in the server's .env: internal keeps everything in memory with seeded demo users, sql uses PostgreSQL for users and documents, while templates and document requests only have the in-memory version.
flowchart LR
subgraph client [JavaFX client]
C[Client screens]
W[Coworker screens]
A[Admin screens]
end
C & W & A -->|gRPC, JWT in metadata| I[Authorization interceptor, port 50031]
I --> S[User, Admin, Coworker and Document services]
S --> R{REPOSITORY_TYPE}
R -->|internal| M[In-memory lists with seeded users]
R -->|sql| P[(PostgreSQL: users and documents)]
S --> F[Uploaded files in server/files]
Java 17 and Maven. The client connects to localhost:50031.
cp server/src/main/resources/.env.example server/src/main/resources/.env # REPOSITORY_TYPE=internal needs no database
mvn clean install
(cd server && mvn compile exec:java -Dexec.mainClass="fiit.vava.server.Server") # gRPC server on :50031
(cd client && mvn install org.openjfx:javafx-maven-plugin:0.0.8:run) # in a second terminalPrebuilt jars are in the repo root: java -jar server-internal.jar (in-memory) or server-sql.jar (PostgreSQL, schema in server/db/schema.sql), then java -jar client-<linux|macos|windows>.jar.
Java 17, Maven, JavaFX with MaterialFX, ControlsFX and Ikonli, gRPC and Protocol Buffers, JJWT, Apache PDFBox, PostgreSQL, java-dotenv, Logback.
- docs/vava.pdf: project documentation (41 pages): goals and KPIs, actors, requirements, ArchiMate layers, business processes, use cases, state machines and wireframes; DOCUMENTATION.pdf is the same file
- EARCHITECT.qea, docs/vava_wow_team.qea: Enterprise Architect models
- CHANGELOG.md: the team's change notes
- Video presentation on YouTube
No license file. This is joint work of the five creators listed above, so it stays all rights reserved unless they all agree on one.
A digital document provider app and document-approving system all in one.
Arthur Kozubov, Zaitsev Artem, Sichkaruk Mykhailo, Vadym Tilihuzov, Sira Dariia
VAVA | Development of Applications With Multilayer Architecture
A detailed documentation of the project can be found in the following link:
You could also watch our video on YouTube:
Mgr. Ing. Miroslav Reiter, MBA
mvn clean install
cd server
mvn compile exec:java --% -Dexec.mainClass="fiit.vava.server.Server"
cd client
mvn install org.openjfx:javafx-maven-plugin:0.0.8:run
cd server
mvn clean compile package
cd client
mvn clean package
.jar s are in target folders.
