By using a user management app, users in the dance club "broken leg" will be stored. New users will sometimes join, existing users are updated or left the club and will be deleted.
Create a server by using TypeScript, which communicates with clients by using the websocket-protocol.
- There have to be a route, through which a client can connect to the server by using the websocket-protocol.
- There have to be a route, through which a client can send data to the server (using "POST", "PUT" as well as "DELETE").
- The server has to be able to send data to clients by using the websocket-protocol.
- Data sent from a client have to be persisted.
Every user has the following information:
- Title
- First name
- Last name
- Joined at (stored as a unix timestamp in seconds)
Create a client, which will communicate with the server, by using the Angular CLI.
- Create a view used as entrypoint for the app.
- Create a view, which will be used to create, update or delete a user. These actions have to be recorded and sent to the server by the client.
- Create a view, which shows information about a user (detailview).
- Create a view, which shows every user in a list. Clicking on one row should navigate to the detailview of the clicked user.
- Furthermore, the list of users has to be reachable from the entrypoint and the client has to get updates from the server by using the websocket-protocol and shows them in realtime.
Hints for creating and displaying a user:
- A user's title should be a drop-down menu containing the entries
null
, "Dr.", "Prof." (in the create view) - A user's "joined at" timestamp should be displayed in a human readable format (in the detail view)
- When creating a user, the field "first name" should be automatically focussed.
- To fulfill the exercise only the use of TypeScript and Angular are requirements. Every other technology, library or tool can be chosen freely.
- Code has to be written following the principles of "Clean Code" and SOLID (for further information see Coding Guidelines).
- Tips and tricks related to Angular can be found here: Angular: Tutorial and Angular: Product-list
- For the server is any kind of data management required. If this is a real database or just an object stored in-memory can be chosen freely.