DIVA is a comprehensive web-based platform designed to facilitate the design, implementation, and verification of biological constructs. It serves as a central hub for managing biological designs, DNA assembly tasks, and project collaboration.
- Biological Design Management: Create, store, and manage complex biological designs.
- DNA Assembly Integration: Built-in support for j5 DNA assembly protocols, including management of master plasmid, oligo, and synthesis lists.
- Project Collaboration: Organize designs into projects with granular permissions and team roles (Administrators, Researchers, DIVA Team).
- Visualization: Integrated visualization tools for DNA sequences and assembly results (using D3.js and Open Vector Editor).
- Automated Tasks: Background task runner for processing complex assembly designs.
- Security & Accounts: Robust user management system with role-based access control, account vetting, and email notifications.
- Language: Java 16+
- Framework: Jersey (JAX-RS) for RESTful services
- Persistence: Hibernate ORM with PostgreSQL (production) or H2 (development/embedded) support
- Server: Undertow (embedded for development)
- Build Tool: Maven
- Framework: Angular 17
- Styling: Bootstrap 5, Font Awesome
- Visualization: D3.js, ngx-charts, Open Vector Editor
- Build Tool: Angular CLI / npm
- Java Development Kit (JDK) 16 or higher
- Maven 3.6+
- Node.js 18.13+ and npm (required by Angular 17)
- PostgreSQL 12+ (optional — defaults to an embedded H2 database)
-
Clone the repository:
git clone https://github.com/JBEI/diva.git cd diva -
Build the backend: The backend uses Maven for dependency management. Skip tests on the first build since they require a configured database.
mvn clean install -DskipTests
-
Install frontend dependencies:
cd src/main/ngapp npm install
DIVA reads runtime settings from a data directory identified by the DIVA_DATA_HOME environment variable. If unset, it defaults to ~/.DIVAData.
-
Create the config directory and copy the properties template:
mkdir -p ~/.DIVAData/config cp src/main/resources/diva-server.properties.template ~/.DIVAData/config/diva-server.properties
-
Edit
~/.DIVAData/config/diva-server.propertiesto set the database type and any email / LDAP settings your deployment needs. SupportedconnectionTypevalues areH2DB(default, zero setup) andPOSTGRESQL. -
PostgreSQL (optional): If you set
connectionType=POSTGRESQL, create the database and user first, then fill inconnectionUrl,username,password, anddbNamein the properties file:createuser -P diva # set password to match diva-server.properties createdb -O diva diva_db
-
Start the backend: Run the
DevelopmentServerclass (in the default package atsrc/main/java/DevelopmentServer.java) from your IDE. It listens onhttp://localhost:8081/with the REST API mounted at/rest/*. -
Start the frontend:
cd src/main/ngapp npm startThe UI will be available at
http://localhost:4200. Because the Angular dev server and the backend run on different ports, configure aproxy.conf.jsonthat forwards/resttohttp://localhost:8081(or enable CORS on the backend) so the UI can reach the API.
To build the full WAR file for deployment:
mvn clean packageThe resulting WAR file will be in the target/ directory.
This project is licensed under the BSD 3-Clause License - see the LICENSE file for details.
- Developed at the Joint BioEnergy Institute (JBEI).
- Supported by the U.S. Department of Energy.