https://github.com/themost-framework/themost-event-app
Event Management Api Server Prototype with MOST Web Framework Codename Blueshift
https://github.com/themost-framework/themost-event-app
Last synced: 4 months ago
JSON representation
Event Management Api Server Prototype with MOST Web Framework Codename Blueshift
- Host: GitHub
- URL: https://github.com/themost-framework/themost-event-app
- Owner: themost-framework
- License: apache-2.0
- Created: 2019-03-15T12:28:26.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-05-25T06:29:44.000Z (about 6 years ago)
- Last Synced: 2025-01-17T02:21:54.205Z (5 months ago)
- Language: JavaScript
- Homepage:
- Size: 917 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
#### Event Management Api Server with MOST Web Framework Codename Blueshift
##### Installation
Clone git repository
git clone https://github.com/themost-framework/themost-event-app.git
Install dependenciesnpm i
Build appnpm run build
Seed dataAdd sample data by executing:
npm run seed
and finally serve app:npm run serve
Open your browser and navigate to http://localhost:3000/##### Specification
Event Management Api Server prototype is a typical [MOST Web Framework](https://github.com/themost-framework/themost)
that exposes a wide set of endpoints under /api/.
These endpoints follows [OData v4 specification](https://www.odata.org/documentation/) to get, insert, update or delete entities or entity sets.Some of them are:
Get available entity sets:
GET http://localhost:3000/api/
Get entity set metadata:GET http://localhost:3000/api/$metadata
Get current user:GET http://localhost:3000/api/users/me
Get events:GET http://localhost:3000/api/events
Expand entities:GET http://localhost:3000/api/events?$expand=performers
Query events:GET http://localhost:3000/api/events?$filter=eventStatus/alternateName eq 'EventOpened'
and many others.
Event Management Api Server prototype uses [cron-job specification](https://cron-job.org/en/) for creating recursive events.
An EventHoursSpecification object is being converted to a cron-job like object which gives a set of auto generated events.The following event hours specification object:
{
"name": "1st hour",
"validFrom": "2018-09-01T00:00:00+03:00",
"validThrough": "2018-09-30T00:00:00+03:00",
"duration": "PT45M",
"minuteOfHour": "15",
"hourOfDay": "8",
"dayOfWeek": "1",
"identifier": "00000000-0000-0000-0000-000000000001"
}defines an event recurrence pattern which is equivalent with the following cron job:
15 8 * * 1
This job will generate a set of sub-events for the defined period between 1-Sep 2018 to 30-Sep 2018.# POST /api/events
{
"eventHoursSpecification": {
"identifier": "00000000-0000-0000-0000-000000000001"
},
"performer": {
"email": "[email protected]"
},
"maximumAttendeeCapacity": 5
}
e.g.{
"startDate": "2018-09-03 08:15:00.000+00:00",
"endDate": "2018-09-03 09:00:00.000+00:00",
"maximumAttendeeCapacity": 5,
"eventStatus": {
...
},
"superEvent": 46,
"duration": "PT45M",
"performer": 12,
"additionalType": "Event",
"id": 47,
"dateCreated": "2019-05-14 14:12:05.091+00:00",
"dateModified": "2019-05-14 14:12:05.093+00:00",
"createdBy": 0,
"modifiedBy": 0
},
{
"startDate": "2018-09-10 08:15:00.000+00:00",
"endDate": "2018-09-10 09:00:00.000+00:00",
"maximumAttendeeCapacity": 5,
"eventStatus": {
...
},
"superEvent": 46,
"duration": "PT45M",
"performer": 12,
"additionalType": "Event",
"id": 48,
"dateCreated": "2019-05-14 14:12:05.119+00:00",
"dateModified": "2019-05-14 14:12:05.123+00:00",
"createdBy": 0,
"modifiedBy": 0
}Event Management Api Server prototype uses a extended set of data models and serves several endpoints
for managing events.###### Features
Event management system prototype models have the following features:
* Manage events of any type (organize parent events)
* Organize event based on event organizers like organization, education organization etc
* Manage event status (e.g. cancel, postpone, schedule, re-schedule an event)
* Manage event performers, attendees and audiences
* Manage event locations
* Create event hours specification for recursive events
* Create and manage recursive events
* Manage person availability for performing or attending an event
* Testing api services