Davide Alberani 9 роки тому
батько
коміт
95938dbd3c
2 змінених файлів з 82 додано та 5 видалено
  1. 79 3
      DEVELOPMENT.md
  2. 3 2
      README.md

+ 79 - 3
DEVELOPMENT.md

@@ -11,20 +11,96 @@ 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)
+- 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
 ---------------
 
-- import persons from CSV
-- introduce the concept of registered persons and attendees in the GUI and in the database
+- easy way to add a new person to an event
+- search on both name and surname, for persons
 - 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

+ 3 - 2
README.md

@@ -3,6 +3,7 @@ Event Man(ager)
 
 Your friendly manager of attendees at an event.
 
+
 Notice
 ======
 
@@ -16,8 +17,8 @@ See the DEVELOPMENT.md file for more information about how to contribute.
 Technological stack
 ===================
 
-- [AngularJS](https://angularjs.org/) for the webApp
-- [Bootstrap](http://getbootstrap.com/) (plus [jQuery](https://jquery.com/)) for the eye-candy
+- [AngularJS](https://angularjs.org/) (plus some third-party modules) for the webApp
+- [Bootstrap](http://getbootstrap.com/) (plus [Angular UI](https://angular-ui.github.io/bootstrap/)) for the eye-candy
 - [Tornado web](http://www.tornadoweb.org/) as web server
 - [MongoDB](https://www.mongodb.org/) to store the data