This is the server API code for PlateyPlatey. The frontend code is available in another repo.
This is a shorter form of a blog post that explains the story behind PlateyPlatey
Many lab robotic and analytical platforms—for example, HPLCs and FTIRs—accept plates containing samples as inputs. Many researchers, and research software platforms, however, require standard spreadsheet layouts for data.
Although the grid layout of most plates translates straightforwardly into an spreadsheet format, that layout is annoying to sort, aggregate, and apply formulas accross. As a result, there's a disconnect between tables—a format that suits straightforward manipulation—and plates—the format that's actually being used.
I have personally witnessed how much time and effort that simple disconnect can cost. When I was in the lab, I wanted a visual representation of the work I needed to do. I've had very tedious plating session where I would read an excel spreadsheet and perform a common mental juggling act along the lines of "ok, row A5 of my excel spreadsheet is actually B6 on the plate, time to pipette that acid. Wait, what row was it again?". When I was in the office, I wanted to plot column A against column B. Having the data in a plate layout would be very annoying for that.
In response to that, I made PlateyPlatey, a home project I have been casually chipping away at for around a year now. Although it's not anywhere near the level I'd like it to be, hopefully other people will find it useful in some restricted situations.
The server is a basic Java Dropwizard application that serves up plateyplatey documents, plates, and configurations from from resources and the filesystem. It does not support saving users plates or anything like that (not needeed for early prototypes).
Use maven to get dependencies and package the application:
mvn compile
This will create the output class files.
From the target/
folder generated by the compiler:
java -cp target/classes:target/dependency/* com.plateyplatey.server.App server configuration-files/development.yml
The server's port can be set from the command line (used for heroku deploys):
java $JAVA_OPTS -Ddw.server.connector.port=$PORT -cp target/classes:target/dependency/* com.plateyplatey.server.App server configuration-files/development.yml