Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tomaskraus/meditask
medical treatment TODO and scheduler
https://github.com/tomaskraus/meditask
Last synced: 24 days ago
JSON representation
medical treatment TODO and scheduler
- Host: GitHub
- URL: https://github.com/tomaskraus/meditask
- Owner: tomaskraus
- License: mit
- Created: 2024-09-10T15:42:53.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2024-09-13T11:38:01.000Z (4 months ago)
- Last Synced: 2024-09-14T08:40:34.338Z (4 months ago)
- Language: TypeScript
- Size: 263 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# meditask
"medical treatment TODO and scheduler"
Jedná se o backendovou aplikaci, poskytující RESTové API ohledně úkolů od lékaře pro jeho pacienty.
Řešení zadání [TypeScript_MongoDB Developer](assignment/Zadání - TypeScript_MongoDB Developer.pdf)
[TypeScript_MongoDB Developer](assignment/Zadání_TypeScript_MongoDB_Developer.pdf)### Instalace
1. npm
```
npm i
```2. docker
```
docker compose up
```### Spuštění
1. v kořenovém adresáři projektu
```
docker compose up
```2. v podadresáři meditask-be
```
npm start
```endpoint aplikace:
http://localhost:3001/tasks
online API dokumentace:
http://localhost:3001/api
OpenAPI JSON:
http://localhost:3001/api-json
### DB
connection string: `mongodb://localhost:27017`
db name: `test2`## O Řešení
Vypracoval jsem řešení během dne a půl tak, aby kromě požadavků v zadání splňovalo ještě toto:
- funkční, spustitelná aplikace: **meditask**
- využívající známé, používané knihovny s dobrou dokumentací
- co nejméně věcí dělat "na koleně", vlastními silami
- automatické generování schémat a dokumentace tam, kde je to možné
- snadná instalace a spuštění na jiném prostředíK tomu všemu jsem jako opěrný bod použil:
- [Nest.js](https://nestjs.com/): backend framework pro Node.js TypeScript
- [MongoDB](https://www.mongodb.com/) a [Mongoose](https://mongoosejs.com/docker): NoSQL databáze a wrapper
- [Docker](https://www.docker.com/): kontejner (zatím jen pro MongoDB)Aplikace nabízí REST API. K automatickému generování dokumentace jsem použil Open API (Swagger) plugin pro Nest.js. Ten udržuje dokumentaci aktuální, podle anotací v kódu aplikace.
### Tooling
IDE: [VS Code](https://code.visualstudio.com/)
formatter: [Prettier](https://prettier.io/)K verzování používám [Git](https://git-scm.com/). Snažím se o verzovací komentáře podle [Conventional Commits](https://www.conventionalcommits.org)
Používám _Feature Branches_.Platforma: Linux - [Ubuntu](https://ubuntu.com/)
## Zbytek Řešení
Zde odpovídám na věci v zadání, které nebyly určeny k naprogramování, nebo jsem je nestihnul. Seznam budu průběžně doplňovat, ale na otázky jsem připraven reagovat ihned.
#### REST API pro mobilní aplikaci:
Návrh jsem udělal tak, že budou existovat dva druhy datových objektů:
1. **Task** Úkol. Má svůj rozvrh.
2. **TaskRun** Konkrétní běh úkolu, podle rozvrhu objektu Task.Jediné, co se drží v paměti klientského zařízení (mobilu, tabletu), jsou instance _TaskRun_.
Struktura instance TaskRun (příklad):
```json5
{
"taskId": "66e1a94df40f867d3ba31c35", // Task.id
"caption": "Antimuchin", // Task.caption
"description": "Take the half of the pill.", // Task.description
"eventTime": "2024-09-11T13:15:00.000Z", // Time this TaskRun shows at the user's device
"notificationMinutes": [15, 30], // Task.notificationMinutes
"fulfilled": true // Shows that user has fulfilled this taskRun. Defaults to false. User sets this to true.
}
```#### Generování jednotlivých úkolů:
V době insertu Tasku se podle jeho cronu (prop "schedule") vygenerují instance TaskRun s konkrétními časy a uloží se do DB.
### K Promyšlení
#### Označení úkolu jako splněného:
#### Notifikace:
#### Autentizace:
#### Synchronizace úkolů do mobilní aplikace:
#### Testování: