[Bjonnh.net]# _

Project / FauxDIS >

FauxDIS is an educational resource loosely inspired from the FBI’s CODIS database.


FauxDIS can be used as part of experiential learning exercises in which students apply the scientific method to solve mock crimes. Using FauxDIS, students have the opportunity to search DNA profiles generated from mock evidence against known profiles contained in the database. A discussion of strategies for using the database results in the calculation of genotype probabilities can be found in this publication (I was not involved at this early stage of the project):

FauxDIS: A Searchable Forensic DNA Database to Support Experiential Learning. Jacqueline Baranski, Karen Davalos-Romero, Melanie Blum, Nichole Burke, Ashley Foster, Ashley Hall. Journal of Forensic Science Education; 2 (1), 2020.

My role

I have been the sole developer on that project that I architected and created from scratch from the initial requirements and rounds of iterations with the project lead Ashley Hall.

Some features

The search system

The search system, it shows how the user can type a values for the number at each locus they are looking to match

This is the main interface for the users in which they can either put the full profile or a partial profile to look for matching samples.

Data import

The CSV import system

To facilitate the import of data, users just have to push a new CSV file containing additional data (or replacing the existing). There is no need at this time for a more advanced import system.

Integrated user management

The system that allows to edit, add and activate/deactivate users

The system is invite only. For the MVP, we didn’t need anything fancy like we have with Napralert


FauxDIS is developed using:

I have since my own license of IntelliJ, but at the time I started with the Jetbrains academic license so thanks to them.

It is deployed to a tiny Linode machine (yes the JVM can run with really little memory now) using Ansible and the service managed using docker-compose for both the Spring service and the database. For this kind of services, a small downtime at each update (6-10 seconds) is perfectly acceptable.