ProjectForge is an open source, web-based solution for project management. It covers time tracking, team calendar, Gantt charts, financial administration, controlling and work breakdown structures, and works together with issue management systems such as Jira. Besides the web application there is a mobile app and a REST API.
Click a picture to see it in full size.
-
projectforge.org: the complete documentation, including the installation, the user guide and the admin guide.
-
Development guide: architecture, backend, REST API, frontend, plugins, tests.
-
dev-docs: reference notes and plans for developers.
The fastest way is the Docker image or the executable jar, see Installation.
If you just want to run ProjectForge, download it from https://sourceforge.net/projects/pforge/ and start it with
java -jar projectforge-application-X.X.X.jar (Java 21 or newer).
You only need the following steps for developing ProjectForge.
-
Checkout:
git clone git@github.com:micromata/projectforge.git -
Use JDK 21 or newer:
java -version. -
Build ProjectForge, including the Next.js frontend in
projectforge-next:
./gradlew build -x test(gradlew.baton Windows) -
Run ProjectForge:
java -jar projectforge-application/build/libs/projectforge-application-X.X.X.jaror./gradlew bootRun -
Open http://localhost:8080 in your browser.
For several instances side by side, hot reload of the frontend and test data see bin/pfDev.sh and the
development guide.
No configuration is needed. When ProjectForge is started for the first time, a console or desktop based wizard does a quick setup (choose the directory and optionally set some parameters).
To use a different home directory you have several options (choose your favorite):
-
Create
ProjectForgeas top level directory of your home directory:$HOME/ProjectForge, or -
Create a directory named
ProjectForgeand put the jar file in it or next to it. ProjectForge detects the folderProjectForgerelative to the executed jar, or -
Create a directory and pass it as command line parameter:
java -Dhome.dir=yourdirectory -jar projectforge-application-X.X.X.jar, or -
Create a directory and set it as environment variable
PROJECTFORGE_HOME.
All available parameters are listed in
application.properties;
own values go into projectforge.properties in the home directory. More details are in the
admin guide.
You may use PostgreSQL instead of the built-in data base.
-
Choose and set a database password:
export PGPASSWORD=mypassword -
Run PostgreSQL:
podman volume create projectforge-pgdata podman run -d \ --name projectforge-postgres \ -p 127.0.0.1:5432:5432 \ -e POSTGRES_DB=projectforge \ -e POSTGRES_USER=projectforge \ -e POSTGRES_PASSWORD=$PGPASSWORD \ -v projectforge-pgdata:/var/lib/postgresql/data \ docker.io/library/postgres:17
-
Configure ProjectForge (see Configuration for the home directory):
projectforge.base.dir=${user.home}/ProjectForge
spring.datasource.url=jdbc:postgresql://localhost:5432/projectforge
spring.datasource.username=projectforge
spring.datasource.password=${PGPASSWORD}
spring.datasource.driver-class-name=org.postgresql.Driver-
Start ProjectForge. For regular operation and backups see the admin guide.
Stop |
|
Start |
|
Import dump (optional) |
|
PSQL |
|
Reset passwords (optional) |
|
Clear calendar subscriptions (optional) |
|
Uninstall |
|
ProjectForge is extensible by plugins. The built-in plugins live in plugins as Gradle modules and are
activated by administrators under Administration → Plugins (a restart is required), or with
projectforge.plugins.ensure-active=datatransfer (comma-separated ids) in projectforge.properties, see
Installation.
How to write an own plugin (backend, REST, frontend pages) is described in the development guide.











