Challenge Overview
Project Donner: Mertesacker
Welcome to Project Donner:
Mertesacker is the next challenge in the Project Donner suite of micro-services. This challenge will be a MEAN.IO stack API that will underpin a followup HTML5 UI challenge.
The overall purpose of the app is to develop a MEAN.IO package that contains a set of endpoints that provide REST based CRUD operations for managing a number of objects. These objects are connected to each other in a hierarchical fashion.
Features:
Objects to create API endpoints for:
- Environments:
- fields:
- Id: unique record Id
- name: string
- ownerId: reference to User object for calling user
- created: timestamp
- updated: timestamp
- description:
- represents an Environment in the system
- top level object
- fields:
- Groups:
- fields:
- Id: unique record Id
- name: string
- environmentId: reference to parent Environment object
- ownerId: reference to User object for calling user
- created: timestamp
- updated: timestamp
- description:
- represents a single Group within a Environment collection
- one-to-many with Environment
- fields:
- Devices:
- fields:
- Id: unique record Id
- name: string
- groupId: reference to parent Group object
- ownerId: reference to User object for calling user
- typeId: reference to Device Type object ownerId: reference to User object for calling user
- created: timestamp
- updated: timestamp
- description:
- represents a single Device within a Group collection
- one-to-many with Group
- fields:
- Device Attributes:
- fields:
- Id: unique record Id
- name: string
- value: string
- ownerId: reference to User object for calling user
- deviceId: reference to parent Device object
- created: timestamp
- updated: timestamp
- description:
- represents an attribute describing the device
- key/value pair
- fields:
- Device Events:
- fields:
- Id: unique record Id
- name: string
- ownerId: reference to User object for calling user
- created: timestamp
- updated: timestamp
- description:
- represents event thrown by Device
- junction object
- fields:
- Device Types:
- fields:
- Id: unique record Id
- name: string
- ownerId: reference to User object for calling user
- created: timestamp
- updated: timestamp
- description:
- represents a type of Device
- look up object
- CRUD requires “admin” user role
- fields:
- Event Types:
- fields:
- Id: unique record Id
- name: string
- ownerId: reference to User object for calling user
- created: timestamp
- updated: timestamp
- description:
- represents a type of Event
- look up object
- CRUD requires “admin” user role
- fields:
ERD:
Setup:
- Send an email to lazybaer and request to be added to the GitLabs Project Donner Team
- Once added to the team for the Mertesacker repository, fork the repository and, when ready, make a merge request with your submission to this branch
Misc:
- ownerId fields are look ups to the built in MEAN.IO user object
- created fields are set at record creation
- updated fields are update on data changes
- an authenticated user session is required for all operations
- some operations require the user to have an “admin” user role, as noted
- end deliverable should be a MEAN.IO package
Final Submission Guidelines
-
MEAN stack only.
-
Upload all your source code as a zip
-
Make a pull (with the same source code as your zip) from your forked repository to the project repository
-
Make a Merge Request only after the Deadline
-
Upload documentation for how to run your submission.
-
Provide a video overview of your submission