Introduction
WARNING
The software should be considered an Alpha feature-complete. It is 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 front end is written in TypeScript and utilizes the Vue framework with Vuetify for UI.
The application is url driven; that is, the front end routing middleware (provided by Vue Router) is responsible for intercepting url changes, performing (front end) validation and authorization, and requesting and storing data retrieved from the backend. The front end uses Pinia for state management and Vuelidate for form validation.
As mentioned in the Core Ideas section, a first step in dealing with the complex archaeological record and reigning in the applications' complexity was to center its design around the module. This naturally lead to the use of a relational database with each module represented by a specific table (stones, ceramics, etc.) and its 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, properties were divided into seperate groups, each containing a limited number of options.
- To accommodate equired/optional and single/multiple properties from the above groups, different group types were defined, each corrosponding to specific DB storage schemas (enums, external lookup tags and onps tables) and are handled by group-type specific code.
- The Trio structure with its dependency system was divised in order to reduce overchoice.
- The different treatment of single vs. aggregate records is handled at the form (Vue Component) level.
The design of different module-specific registration schemas and front end forms are implemented on a per-application basis.
Please visit the project's github page for more details.