File Structure
The backend consists of multiple modules, each one in its own directory. Here is an overview of the modules:
config
This small module simply contains functions for checking and getting environmental variables.
database
This module contains function to interact with the database.
funcs
Specialized functionality such as CSV parsing and email sending.
judging
Complex functions used for the main judging flow. This includes aggregating judging scores, picking the next project, and maintaining the project comparisons matrix.
logging
The logging module contains all functionality to write to the admin log.
models
All the models (structs) that is used to represent the data in Jury. This includes judges, projects, and options.
public
A dummy directory for the frontend. In development, this is used to serve a dummy page. In production, the statically built frontend will be copied to this directory before the Go build process.
router
The main code for the API and route handler functions.
util
Utility functions used across the backend app.