Introduction
WARNING
The software is in the alpha stage and under active development.
This section provides a general overview of the Open Dig Reports (ODR) software.
Stack used: MySQL, Nginx, Laravel, Vue, Pinia, Vue-Router, Vuetify, Vuelidate.
The ODR is a Single Page Application (SPA). The Laravel back end provides the initial download of the application to the browser and functions as an API server.
The Vue front end is written in TypeScript and utilizes Pinia for state managment, Vuetify for UI, and Vuelidate for validation.
The application is url driven; that is, the front end routing middleware (provided by Vue Router) is responsible for intercepting url changes, performing validation and authorization, and requesting and storing data retrieved from the back end.
The application divides the archaeological record into separate modules and utilzes a relational database (MySql) to store each module's data in module-specific tables (stones, ceramics, etc.), and their related tables (lookups, tags, onps).
A few techniques were applied to allow for some flexibility with regard to the variability of the records:
- Free text fields such as "description" and "notes" columns are widely applied as catch-all entries.
- Whenever possible, record properties were divided into separate groups, each containing a limited number of options.
- To accommodate required/optional and single/multiple properties from the above groups, different group types were defined, each corresponding to specific DB storage schemas (enums, external lookup, tags and others) and handled by group-type specific code.
- A simple dependency system was devised in order to control the potentially large number of properties associated with each record, and the Trio structure is used to organize them into categories/groups/options that is easy for the user to navigate.
- The different treatment of single vs. aggregate records is assisted by the dependency system and, generally speaking, handled at the front end at the form level (conditional rendering in Vue forms).
The design of different module-specific registration systems and front end forms is implemented on a per-application basis.
Please visit the project's GitHub page for more details.