eventman/DEVELOPMENT.md

117 lines
3.6 KiB
Markdown
Raw Normal View History

2015-03-22 11:12:19 +01:00
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**)
2015-04-07 23:59:35 +02:00
- associate to an event a list of registered persons, creating them if needed (manually and importing from external sources) (**DONE**)
2015-04-05 23:54:14 +02:00
- mark registered persons as present (including them in the list of attendees) (**DONE**)
2015-03-22 11:12:19 +01:00
- 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
2015-04-05 23:54:14 +02:00
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
2015-03-22 11:12:19 +01:00
TODO
====
Next to be done
---------------
- add the minimum required fields to lists and detailed pages for persons and events
2015-03-22 17:07:40 +01:00
- handle datetimes (on GUI with a calendar and on the backend deserializing ISO 8601 strings)
- modal on event/person removal
2015-03-22 11:12:19 +01:00
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
2015-03-22 17:07:40 +01:00
- authentication for administrators
- i18n
2015-03-22 17:11:32 +01:00
- logging and debugging code
2015-03-22 11:12:19 +01:00