What is it?

Litigation::Database is a web-based database for managing and processing structured information.

It is designed for law firms to help keep track of documents and facts in complex litigation cases, but it can be used for many other purposes.


The database stores information as “objects” of different types. The object types are arranged in a hierarchy. For example, a “Mortgage” is a kind of “Conveyance,” which is kind of “Object.” The “Mortgage” object type has all the properties of a “Conveyance,” which has all the properties of an “Object.”
New object types can be added to the system through the web application. Collections of object types can be bundled into packages that can be shared with other Litigation::Database servers.
Full-text searchable
All objects and the contents of uploaded documents are full-text searchable (with Sphinx). Uploaded PDFs that lack embedded text are processed with optical character recognition software (Tesseract OCR) so that they are full-text searchable.
Access to the web application is controlled by usernames and passwords. Each object in the database has security settings that allow fine-tuning of access privileges.
Litigation::Database runs on Perl. Users can write their own Perl functions, methods, and triggers that operate on objects in the database and integrate with other applications. Programmers can type code directly into the web application, or upload Perl files, or maintain the files directly on the server. Routines that take a long time to execute can be queued for execution by a background process rather than by the web server.
Any number of machines can be configured to respond to client requests and run background jobs for a single Litigation::Database instance.
Free and open-source software
Available as a package for Debian. Distributed under the Apache license.

What other applications does Litigation::Database resemble?

Litigation::Database is similar in some ways to:

  • Microsoft Access (general-purpose database platform, scriptable)
  • Basecamp (web-based document sharing system, team-oriented)
  • Microsoft SharePoint (team-oriented information sharing system, can be integrated with other systems)
  • Drupal (web-based content management system with configurable content types)

What are some possible applications of Litigation::Database?

Knowledge management
Litigation::Database is a knowledge management platform. It tracks objects (e.g., people, documents, companies, dates) as well as the relationships among them (e.g., the fact that a document mentions a person, that person’s employment with a company, that person’s supervisory relationship over another person). Knowledge can be accessed, added, and updated manually (through the web interface) as well as programatically (with Perl code that runs on the server).
Custom web applications
Litigation::Database can be used as a platform for the development of web applications. The front end is a general-purpose tool for entering data, viewing data, viewing documents, uploading documents, and running commands that act on data and documents, all within a password-protected web environment. Developers can create a web application simply by designing a data structure and writing the code for commands that act on the data, without having to create a user interface. Or, developers can create their own user interface and use Litigation::Database as a back end database.
Data analysis projects
Litigation::Database is ideal for data collection and analysis projects where the structure of the data is complex. Spreadsheets and relational databases can be difficult to use when the data do not fit neatly into a small number of two-dimensional tables. Litigation::Database provides a flexible mechanism for entering and storing complex data and running code on it.
Litigation::Database allows users to create sites with a customized URL (e.g., that display a limited set of documents to users who log in.

What does it look like?


How do I install it?

Litigation::Database requires Debian. You can run it in Docker.

First, download Litigation::Database and its dependencies (about 900 megabytes):

echo "deb debian main" >> /etc/apt/sources.list
wget -qO - | apt-key add -
apt-get update
apt-get install litigation-database

To set up the various PostgreSQL databases that Litigation::Database needs, run:


It will ask you for three passwords:

  1. The password that the PostgreSQL role “www-data” will use to access PostgreSQL. If the role “www-data” already has a password, enter it. Otherwise, the password you provide will be set as the password for the “www-data” role.
  2. The password for the superuser who will be in charge of object definitions for the Litigation::Database databases on this server.
  3. The password for the superuser who will control the first Litigation::Database database on this server.

Next, configure Apache.

a2enmod ssl
a2enmod apreq2 || a2enmod apreq
a2enmod proxy_http
a2enmod rewrite

Next, you need to edit the site configuration file in /etc/apache2/sites-available/ for the site that will host the Litigation::Database web application. It is recommended you use Litigation::Database on a site that uses HTTPS (port 443). For example:

vi /etc/apache2/sites-available/default-ssl*

Insert the following line inside the site’s VirtualHost directive:

Include /etc/litigation-database/apache.conf

Next, make sure the site is enabled. For example,

a2ensite default-ssl

Then, restart Apache:

/etc/init.d/apache2 restart

Finally, start the Litigation::Database background process:

/etc/init.d/litigation-database start

To access the first Litigation::Database database on the server, point your browser to https://yourhostname/LD/01 and log in as the superuser “root” with the password you entered above.

How do I write code for it?

Documentation for the Perl API is available at Litigation::Database.