Technologies
Enthusiasm for technology as well as a passion for software development resulted in the emergence of a product based on state-of-the-art technologies, which will be improved continuously.
1. Supported browsers
ProjectForge runs in the current versions of all common browsers:
| Browser | Status |
|---|---|
Google Chrome |
Supported (also used by the automated end-to-end tests). |
Microsoft Edge |
Supported. |
Mozilla Firefox |
Supported. |
Apple Safari |
Supported. |
Microsoft Internet Explorer |
Not supported. |
The user interface is responsive and works on desktops, tablets and smartphones.
2. Requirements for the ProjectForge server
-
Java 17 or newer (the code is compiled for Java 17); Micromata runs it in production on Java 21, and the Docker image is based on Eclipse Temurin 21.
-
PostgreSQL as database for productive use. An embedded HSQLDB is available for tests and evaluation.
-
Linux, macOS or Windows — or Docker: images for amd64 and arm64 are available as
micromata/projectforge.
How to install and run it is described in Installation.
3. Professional architecture and CI (continuous integration)
ProjectForge is based on a modern software architecture commonly used in the industry. A role and rights management ensures that every user can only see and use the data for which they have the required rights.
The quality and reliability of ProjectForge are based, last but not least, on automated tests: unit and integration tests of the backend (JUnit), unit tests of the frontend (Vitest) and end-to-end tests in the browser (Playwright). The build including the backend tests runs on GitHub Actions for every push and pull request to the development branch.
4. Rapid application development
ProjectForge is designed for developing new functionality fast:
-
Write the entity in Kotlin and define its database mapping and search index with annotations (JPA, Hibernate Search).
-
Derive the data access object from the base class: access checks, history and persistence are inherited.
-
Derive the REST service from the base class: list, filters, favorites, history, create, update and delete are inherited.
-
Declare the list and edit page in the Next.js frontend: field types, lengths, mandatory fields and labels are generated from the entity.
Every entity gets:
-
Secure access checking.
-
Full text search.
-
A history of every user’s modifications.
-
Full database support with versioned migrations.
Details are described in Development.
5. Technologies
5.1. Backend
| Technology | Version | Usage |
|---|---|---|
Kotlin / Java |
Kotlin 2.3, Java 17 |
Programming languages of the backend (compiled for Java 17, runs on Java 17 or newer, Java 21 in production). |
Spring Boot / Spring Framework |
4.1 / 7.0 |
Application framework, embedded Tomcat 11. |
Spring Security |
7.1 |
Security framework; two-factor authentication, e. g. with WebAuthn security keys (WebAuthn4J). |
Hibernate ORM |
7.4 |
Persistence (JPA 3.2). |
Hibernate Search / Apache Lucene |
8.4 / 9.12 |
Full text search. |
Flyway |
11 |
Database migrations. |
PostgreSQL / HSQLDB |
driver 42.7 / 2.7 |
Databases: PostgreSQL in production, HSQLDB for tests and test instances. |
Jackson |
2.21 |
JSON for the REST API. |
Apache Jackrabbit Oak |
1.92 |
JCR document storage, only for existing installations with JCR data
( |
Groovy / Kotlin Script |
Groovy 4.0 |
Scripting of reports (e. g. Excel exports) by users. |
Apache POI |
5.5 |
Creation and manipulation of Excel and Word files (also in user scripts). |
Merlin |
1.1 |
Excel and Word templates. |
Apache FOP |
2.11 |
PDF creation, e. g. time sheets and monthly employee reports. |
Mustang |
2.26 |
Electronic invoices (ZUGFeRD, XRechnung). |
ical4j / ez-vcard |
4.4 / 0.12 |
Calendar (iCal) and address (vCard, CardDAV) formats. |
JFreeChart, Apache Batik (SVG) |
1.5 / 1.19 |
Charts and Gantt diagrams. |
MPXJ |
16.9 |
Export of MS Project plans. |
Lanterna |
3.1 |
Console setup wizard. |
5.2. Frontend
| Technology | Version | Usage |
|---|---|---|
Next.js (App Router) |
16.3 |
Frontend framework; static export served by Spring Boot, no Node.js server in production. |
React |
19.2 |
UI library. |
TypeScript |
5 |
Programming language of the frontend. |
Tailwind CSS, shadcn/ui (Radix UI) |
4 |
Styling and UI components. |
TanStack Table, Query, Form |
8.21, 5, 1 |
Data tables, server state, forms. |
Zod |
4 |
Form validation. |
next-intl |
4.12 |
Internationalization (texts generated from the backend’s resource bundles). |
FullCalendar |
6.1 |
Calendar views. |
Tiptap |
3 |
Rich text editor. |
Recharts |
3 |
Charts. |
The pages that are not yet migrated to Next.js are served by the previous React app (React 19, Vite, Bootstrap 5).
5.3. Build and tests
| Technology | Version | Usage |
|---|---|---|
Gradle |
9.8 |
Build system (Gradle wrapper, version catalog). |
JUnit Jupiter |
6.0 |
Test framework of the backend. |
Mockito, mockito-kotlin |
5.24, 6.4 |
Mock objects in tests. |
Vitest |
4 |
Unit tests of the frontend. |
Playwright |
1.62 |
End-to-end tests in the browser. |
ESLint, Prettier |
9, 3 |
Code checks and formatting of the frontend. |
GitHub Actions |
CI (continuous integration). |
|
Docker |
Images for amd64 and arm64. |