Lavagna is a small and easy to use issue/project tracking software.
It requires Java 8 or better and optionally a database: MySQL, MariaDB or PostgreSQL. It can be deployed in a Java servlet container or as a self contained war.
See:
Lavagna supports MySQL (at least 5.1), MariaDB (tested on 10.1), PostgreSQL (tested on 9.1) and HSQLDB (for small deploy).
It's distributed in 2 forms:
- simple war for deploying in your preferred web container
- self contained war with embedded jetty web server
See the documentation at http://help.lavagna.io
If you want to test it locally, you can download the self contained war and run:
wget https://repo1.maven.org/maven2/io/lavagna/lavagna/1.1.9/lavagna-1.1.9-distribution.zip
unzip lavagna-1.1.9-distribution.zip
./lavagna-1.1.9/bin/lavagna.sh
Go to http://localhost:8080 and login with "user" (password "user").
See the README in the archive and the documentation at http://help.lavagna.io if you want to customize the scripts and set lavagna in production mode.
Lavagna is also available as a Docker image so you can try it on the fly:
https://registry.hub.docker.com/u/digitalfondue/lavagna/
Lavagna runs on a Java 8 jvm. Some parts of Lavagna are made with Kotlin.
Use UTF-8 encoding and 120 characters as line width. You will need a Java and Kotlin aware IDE. (Currently tested with intellij and eclipse).
For eclipse: you will need to install the kotlin plugin and add the "Kotlin nature" to the project: Right click on the project -> "Configure Kotlin" -> "Add Kotlin nature"
Install npm and run the following script to assure your code follows our guidelines
First ensure that all the dependencies are ok with npm install.
Then, for checking:
npm run-script lint
Fix any error or warning before opening a pull request
Launch the Web Server:
mvn jetty:run
For launching Web Server + DB manager (HSQLDB only):
mvn jetty:run -DstartDBManager
for launching Web Server with the MySQL database (use the mysql profile):
mvn jetty:run -Pdev-mysql
mvn jetty:run -Pdev-pgsql
-
go to http://localhost:8080 if you have a 403 error, you must configure the application, go to http://localhost:8080/setup, select demo + insert user "user".
-
enter username: user password: user
For debugging:
mvnDebug jetty:run
For running the test cases:
mvn test
For running the test cases with MySQL or PostgreSQL:
mvn test -Ddatasource.dialect=MYSQL
mvn test -Ddatasource.dialect=PGSQL
For running with jetty-runner:
mvn clean install
java -Ddatasource.dialect=HSQLDB -Ddatasource.url=jdbc:hsqldb:mem:lavagna -Ddatasource.username=sa -Ddatasource.password= -Dspring.profiles.active=dev -jar target/dependency/jetty-runner.jar --port 8080 target/*.war
When adding new file, remember to add the license header with:
mvn com.mycila:license-maven-plugin:format
Use the following stats for keeping an eye on the performances:
- https://github.com/kentcdodds/ng-stats has a bookmarklet
- https://github.com/mrdoob/stats.js/ has a bookrmarklet
The documentation is written using stampo (see https://github.com/digitalfondue/stampo). It currently reside in src/main/stampo .
For building the doc:
mvn clean stampo:build
The output will be present in target/generated-docs
For testing the documentation run
mvn stampo:serve
And go to http://localhost:45001/
In order to make it easier to tests on different databases we included 3 Vagrant VMs. Make sure that you have installed Vagrant and VirtualBox before continuing.
Fetch the submodules:
git submodule update --init
If you are under windows you need to ensure that the pgsql submodule is not in a broken state, double check that the file puppet\modules\postgresql\files\validate_postgresql_connection.sh is using the unix end of line (run dos2unix).
To run the tests with Vagrant boot the VMs with:
vagrant up [optionally use pgsql / mysql to boot only one VM]
Once that the VM is up and running run the tests:
mvn test -Ddatasource.dialect=PGSQL / MYSQL
PGSQL: localhost:5432/lavagna as postgres / password
MySQL: localhost:3306/lavagna as root
The application uses UTF-8 at every stage and on MySQL you will need to create a database with the collation set to utf8_bin:
CREATE DATABASE lavagna CHARACTER SET utf8 COLLATE utf8_bin;
Jacoco plugin is used.
mvn clean test jacoco:report
-> open target/site/jacoco/index.html with your browser
Can be disabled using the following system property: datasource.disable.migration=true
mvn versions:display-dependency-updates
mvn versions:display-plugin-updates
