117 lines
3.6 KiB
Markdown
117 lines
3.6 KiB
Markdown
Goals
|
|
=====
|
|
|
|
Definitions:
|
|
- **event**: a faire, convention, congress or any other kind of meeting
|
|
- **registered person**: someone who said it will attend at the event
|
|
- **attendee**: a person who actually *show up* at the event
|
|
|
|
|
|
Requirements:
|
|
- create a new event (**DONE**)
|
|
- create a new registered person manually (**DONE**)
|
|
- associate to an event a list of registered persons, creating them if needed (manually and importing from external sources)
|
|
- mark registered persons as present (including them in the list of attendees) (**DONE**)
|
|
- mark when an attendee enters/leaves the event
|
|
- execute actions when an attendee shows up or enters/leaves the event
|
|
- show information and statistics about registered persons, attendees and events
|
|
|
|
|
|
Paths
|
|
=====
|
|
|
|
Webapp
|
|
------
|
|
|
|
These are the path you see in the browser (AngularJS does client-side routing: no request is issued to the web server, during navigation, if not for fetching data and issuing commands):
|
|
|
|
- /#/events - the list of events
|
|
- /#/event/new - edit form to create a new event
|
|
- /#/event/:event_id - show information about an existing event (contains the list of registered persons)
|
|
- /#/event/:event_id/edit - edit form to modify an existing event
|
|
- /#/persons - the list of persons
|
|
- /#/person/new - edit form to create a new person
|
|
- /#/person/:person_id - show information about an existing person (contains the list of events the person registered for)
|
|
- /#/person/:person_id/edit - edit form to modify an existing person
|
|
- /#/import/persons - form used to import persons in bulk
|
|
|
|
|
|
Web server
|
|
----------
|
|
|
|
The paths used to communicate with the Tornado web server:
|
|
|
|
- /events GET - return the list of events
|
|
- /events POST - store a new event
|
|
- /events/:event_id GET - return information about an existing event
|
|
- /events/:event_id POST - update an existing event
|
|
- /events/:event_id DELETE - delete an existing event
|
|
- /persons GET - return the list of persons
|
|
- /persons POST - store a new person
|
|
- /persons/:person_id GET - return information about an existing person
|
|
- /persons/:person_id POST - update an existing person
|
|
- /persons/:person_id DELETE - delete an existing person
|
|
- /events/:event_id/persons/:person_id PUT - update the information about a person related to a given event (e.g.: if the person attended)
|
|
- /persons/:person_id/events GET - the list of events the person registered for
|
|
- /ebcsvpersons POST - csv file upload to import persons
|
|
|
|
|
|
Database layout
|
|
===============
|
|
|
|
Information are stored in MongoDB. Whenever possible, object are converted
|
|
into integer, native ObjectId and datetime.
|
|
|
|
events collection
|
|
-----------------
|
|
|
|
Stores information about events and persons registered for a given event.
|
|
|
|
Main field:
|
|
|
|
- title
|
|
- begin-data
|
|
- begin-time
|
|
- end-date
|
|
- end-time
|
|
- persons - a list of information about registered persons
|
|
- persons.$.person_id
|
|
- persons.$.attended
|
|
- persons.$.name
|
|
- persons.$.surname
|
|
- persons.$.email
|
|
- persons.$.email
|
|
- persons.$.ebqrcode
|
|
|
|
|
|
persons collection
|
|
------------------
|
|
|
|
Basic information about a person:
|
|
- persons.name
|
|
- persons.surname
|
|
- persons.email
|
|
|
|
|
|
TODO
|
|
====
|
|
|
|
Next to be done
|
|
---------------
|
|
|
|
- easy way to add a new person to an event
|
|
- add the minimum required fields to lists and detailed pages for persons and events
|
|
- handle datetimes (on GUI with a calendar and on the backend deserializing ISO 8601 strings)
|
|
- modal on event/person removal
|
|
|
|
Nice to have
|
|
------------
|
|
|
|
- a test suite
|
|
- join the page used to add persons/events into the lists (shown when the filter field returns nothing and/or when a button is pressed)
|
|
- notifications for form editing and other actions
|
|
- authentication for administrators
|
|
- i18n
|
|
- logging and debugging code
|
|
|
|
|