forked from expo/troggle
Page:
Specification
2
Specification
Charlie Crossley edited this page 2023-08-02 23:25:39 +01:00
Table of Contents
Specification
Here we set out the functional specification for the project.
Access
Primary model: User
See also: https://docs.djangoproject.com/en/4.2/topics/auth/customizing/#extending-the-existing-user-model
- Authentication: The system must be able to authenticate users.
- SMA: The system must be accessible concurrently by multiple users in multiple locations.
- Permissions: The system must be able to restrict the abilities of certain users to perform certain functions.
Django handles the above out-of-the-box.
UX
- Mobile-Friendly: The system must be just as easy to use from a phone as a computer.
- Modern reactive CSS can handle almost all of this.
- Consistent Menus: A basic scheme of separate "global" menu items and "contextual" menu items should be adopted.
Cave Data
Primary model: Cave
- Survey Creation: The system must be able to parse survey data input to it via a webform.
- Survey Upload: The system must be able to parse survey files (
.svx
). - Survey Viewing: The system must support searching for, browsing, and viewing survey (Survex) data.
- Survey Editing: The system must support editing of survey (Survex) data via a web-form.
- Survey Export: The system must be able to export survey files (
.svx
). - Drawing Upload: They system must support uploading of drawing (Tunnel/Therion) data
Expedition Logging
Primary model: Entry
- Logbook Creation: The system must support creation of new expeditions/logbooks.
- Logbook Entry Creation: The system must support creation of new logbook entries.
- Logbook Entry Editing: The system must support editing of logbook entries.
Static Information
Primary model: django.contrib.flatpages.models.Flatpage
See also: https://docs.djangoproject.com/en/4.2/ref/contrib/flatpages/
- Flatpages: The system must allow users to add/edit/delete etc. static pages.
- Ideally, editing should be WYSIWYG first, with support for direct markup editing for power-users.
- Alternatively, a third-party wiki app could simply be pulled into the project, cutting out the need to reinvent this particular wheel.
Development
- Deployment Scripts: The development environment should be easy to set up on any system using a single
dev_setup.sh
script or similar - Test data: a set of test-data should be provided for the development environment to work on.