|
1 |
| -<p align="center"> |
2 |
| - <a href="http://nestjs.com/" target="blank"><img src="https://nestjs.com/img/logo-small.svg" width="200" alt="Nest Logo" /></a> |
3 |
| -</p> |
4 |
| - |
5 |
| -[circleci-image]: https://img.shields.io/circleci/build/github/nestjs/nest/master?token=abc123def456 |
6 |
| -[circleci-url]: https://circleci.com/gh/nestjs/nest |
7 |
| - |
8 |
| - <p align="center">A progressive <a href="http://nodejs.org" target="_blank">Node.js</a> framework for building efficient and scalable server-side applications.</p> |
9 |
| - <p align="center"> |
10 |
| -<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/v/@nestjs/core.svg" alt="NPM Version" /></a> |
11 |
| -<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/l/@nestjs/core.svg" alt="Package License" /></a> |
12 |
| -<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/dm/@nestjs/common.svg" alt="NPM Downloads" /></a> |
13 |
| -<a href="https://circleci.com/gh/nestjs/nest" target="_blank"><img src="https://img.shields.io/circleci/build/github/nestjs/nest/master" alt="CircleCI" /></a> |
14 |
| -<a href="https://coveralls.io/github/nestjs/nest?branch=master" target="_blank"><img src="https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#9" alt="Coverage" /></a> |
15 |
| -<a href="https://discord.gg/G7Qnnhy" target="_blank"><img src="https://img.shields.io/badge/discord-online-brightgreen.svg" alt="Discord"/></a> |
16 |
| -<a href="https://opencollective.com/nest#backer" target="_blank"><img src="https://opencollective.com/nest/backers/badge.svg" alt="Backers on Open Collective" /></a> |
17 |
| -<a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://opencollective.com/nest/sponsors/badge.svg" alt="Sponsors on Open Collective" /></a> |
18 |
| - <a href="https://paypal.me/kamilmysliwiec" target="_blank"><img src="https://img.shields.io/badge/Donate-PayPal-ff3f59.svg"/></a> |
19 |
| - <a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://img.shields.io/badge/Support%20us-Open%20Collective-41B883.svg" alt="Support us"></a> |
20 |
| - <a href="https://twitter.com/nestframework" target="_blank"><img src="https://img.shields.io/twitter/follow/nestframework.svg?style=social&label=Follow"></a> |
21 |
| -</p> |
22 |
| - <!--[](https://opencollective.com/nest#backer) |
23 |
| - [](https://opencollective.com/nest#sponsor)--> |
24 |
| - |
25 |
| -## Description |
26 |
| - |
27 |
| -[Nest](https://github.com/nestjs/nest) framework TypeScript starter repository. |
28 |
| - |
29 |
| -## Installation |
30 |
| - |
31 |
| -```bash |
32 |
| -$ npm install |
33 |
| -``` |
34 |
| - |
35 |
| -## Running the app |
36 |
| - |
37 |
| -```bash |
38 |
| -# development |
39 |
| -$ npm run start |
40 |
| - |
41 |
| -# watch mode |
42 |
| -$ npm run start:dev |
43 |
| - |
44 |
| -# production mode |
45 |
| -$ npm run start:prod |
46 |
| -``` |
47 |
| - |
48 |
| -## Test |
49 |
| - |
50 |
| -```bash |
51 |
| -# unit tests |
52 |
| -$ npm run test |
53 |
| - |
54 |
| -# e2e tests |
55 |
| -$ npm run test:e2e |
56 |
| - |
57 |
| -# test coverage |
58 |
| -$ npm run test:cov |
59 |
| -``` |
60 |
| - |
61 |
| -## Support |
62 |
| - |
63 |
| -Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support). |
64 |
| - |
65 |
| -## Stay in touch |
66 |
| - |
67 |
| -- Author - [Kamil Myśliwiec](https://kamilmysliwiec.com) |
68 |
| -- Website - [https://nestjs.com](https://nestjs.com/) |
69 |
| -- Twitter - [@nestframework](https://twitter.com/nestframework) |
70 |
| - |
71 |
| -## License |
72 |
| - |
73 |
| -Nest is [MIT licensed](LICENSE). |
| 1 | +# Whiteboard collaboration service |
| 2 | +A NestJS backend service to enable real-time collaboration on a whiteboards. |
| 3 | + |
| 4 | +## Features |
| 5 | +- Authentication & Authorization |
| 6 | +- Inactivity tracker |
| 7 | +- Contribution tracker |
| 8 | +- Auto safe |
| 9 | +- Real-time collaboration |
| 10 | + |
| 11 | +## Implementation |
| 12 | +<img src="docs/images/diagram.png" alt="Component Diagram" width="600" /> |
| 13 | + |
| 14 | +1. A client is requesting to connect to the collaboration service. |
| 15 | +The service will consult with the alkemio-server through a message queue who is this client. |
| 16 | +If the client is authenticated the client can join. |
| 17 | +2. A client is requesting to collaborate on a whiteboard. |
| 18 | +The service will consult with the alkemio-server through a message queue if this client is authorized to do so. |
| 19 | +3. If the client is authorized, the alkemio-server will return information regarding the whiteboard |
| 20 | +- the access levels |
| 21 | +- is it multi-user |
| 22 | +- how many users can collaborate at a time |
| 23 | +- the collaboration level of the client |
| 24 | +4. Trackers |
| 25 | +- Inactivity - If the user hasn't been activty for a while, based on inactivity interactions with the whiteboard, |
| 26 | +the service will reduce the collaboration level to view-only. |
| 27 | +The client is also notified of this change, so it can take proper actions, like changing the view, disabling controls, etc. |
| 28 | +- Contributions - If the user has made contributions in a certain time window, the service will notify the alkemio-server, |
| 29 | +so it can register a contribution. |
| 30 | +- Auto save - The service will auto save the whiteboard state to the database on intervals. |
| 31 | +The current implementation will ask users of the whiteboard, with the appropriate access in a random fashion to save it. |
0 commit comments