vikunja-api/Featurecreep.md

164 lines
4.8 KiB
Markdown
Raw Normal View History

2018-06-10 15:32:25 +02:00
# Featurecreep
* Listen erstellen, ändern, löschen
* Todopunkte zu Listen hinzufügen, bearbeiten, löschen
* Listen teilen (Email/Benutzername angeben, oder öffentlicher link (+einstellbar ob mit registrierung oder nicht, oder passwortgeschützt)
* Rechtemanagement
### Todopunkte
* ID
* Text
* Description
2018-06-10 15:55:56 +02:00
* Status (done, not done)
2018-06-10 15:32:25 +02:00
* Fälligkeitsdatum
* Erinnerungsdatum (und zeit)
* Zuständig (später, mit teilen)
* Liste wo der Punkt drauf ist
* Timestamps
### Websockets
Das ganze soll als Websocket zur verfg gestellt werden, der dann automatisch bescheidsagt wenn sich was ändert. Benachrichtigungen machen clients.
## API-Roadmap
Ab v0.3 können wir mit clients anfangen.
#### v0.1
2018-06-12 18:17:52 +02:00
* [x] Listen erstellen/bearbeiten/löschen
* [x] Ansehen
* [x] Übersicht
* [x] Einzelne liste mit allen todopunkten
* [x] Erstellen
* [x] Bearbeiten
2018-06-12 18:17:52 +02:00
* [x] Löschen
* [x] Todopunkte hinzufügen/abhaken/löschen
* [x] Erstellen
* [x] Bearbeiten (abhaken)
* [x] Löschen
2018-06-10 15:32:25 +02:00
* [x] Überall nochmal überprüfen dass der Nutzer auch das Recht hat die Liste zu löschen
* [ ] "Apiformat" Methoden, damit in der Ausgabe zb kein Passwort drin ist..., oder created/updated von Nutzern... oder ownerID nicht drin ist sondern nur das ownerobject
2018-06-13 13:49:19 +02:00
* [x] Swaggerdocs !!!!
* [ ] Rechte überprüfen (in extra Funktion auslagern, dann wird das einfacher später):
* [ ] Listen erstellen
* [ ] Listen bearbeiten (nur eigene im Moment)
* [ ] Listenpunkte hinzufügen
* [ ] Listenpunkte bearbeiten
Neues Konzept: _Namespaces_
Ein Namespace kann Listen haben, es gibt mindestens einen Besiter pro Namespace. Wenn ein neuer Nutzer angelegt wird,
wird automatisch einer für den Nutzer erstellt.
Es gibt Lese- und Schreibrechte pro Namespace und Nutzer.
Namespace:
* ID
* Name
* OwnerID
* Timestamps
Teams:
* ID
* Name
* Description
* Rights (Selbsthochzählende Konstanten als json-array abspeichern)
* CreatedByUser
* Timestamps
TeamMembers:
* ID
* TeamID
* MemberID
* Timestamps
TeamNamespaces:
* ID
* TeamID
* NamespaceID
* Timestamps
TeamLists:
* ID
* TeamID
* ListID
* Timestamps
(+Check ob das Team schon Zugriff auf den Namespace hat und dafür sorgen dass das sich nicht überschneidet)
Bsp: wenn ein Namespace-Team Schreibrechte hat, soll es nicht möglich sein dieses Team mit Schreibrechten
zur Liste hinzuzufügen. Wenn das Team im Namespace aber nur Leserechte Hat soll es möglich sein dieses Team
als Schreibend zur Liste hinzuzufügen.
Oder noch Besser: Man kann globale Rechte pro Namespace vergeben, die man dann wieder feinjustieren kann pro Liste.
Es soll aber nicht mgl. sein, ein Team zu einer Liste hinzuzufügen was nicht im Namespace ist.
Es muss also möglich sein, Teams zum Namespace hinzuzufügen die keinerlei Rechte haben (damit man
denen dann wieder pro Liste welche geben kann)
Rechte:
Erstmal nur 3: Lesen, Schreiben, Admin. Admins dürfen auch Namen ändern, Teams verwalten, neue Listen anlegen, etc.
Owner haben immer Adminrechte. Später sollte es auch möglich sein, den ownership an andere zur übertragen.s
Teams sind global, d.h. Ein Team kann mehrere Namespaces verwalten.
#### Neues Todo
* [ ] Teams
* [ ] Erstellen
* [ ] Ansehen
* [ ] Bearbeiten
* [ ] Löschen
Ein zu lösendes Problem: Wie regelt man die Berechtigungen um Teams zu verwalten?
* [ ] Namespaces
* [x] Erstellen
* [x] Ansehen
* [x] Bearbeiten
* [ ] Löschen
* [ ] Teams hinzufügen. Der Nutzer kriegt nur Teams angezeigt die er erstellt hat.
2018-07-04 18:44:13 +02:00
* [x] Alle Listen eines Namespaces anzeigen
* [ ] Listen
* [ ] Listen zu einem Namespace hinzufügen
2018-06-12 18:17:21 +02:00
2018-06-10 15:32:25 +02:00
#### v0.2
* [ ] Listen teilbar
* [ ] Mit anderen Nutzern
* [ ] Mit Link
* [ ] Offen
* [ ] Passwortgeschützt
Wenn man Listen mit nem Nutzer teilt, wird ein Team für diesen Nutzer erstellt, falls er nicht bereits in einem ist.
2018-06-10 15:32:25 +02:00
#### v0.3
* [ ] Rechtemanagement (Und damit Unterscheidung zwischen Ownern und Mitgleidern)
#### v0.4
* [ ] Websocket?
## Clients
2018-06-12 19:57:48 +02:00
* [ ] Webapp (vue.js) + Bulma
2018-06-10 15:32:25 +02:00
* [ ] "Native" Clients (auf dem Rechner installiert (mit elektron oder so? Oder native?)
2018-06-12 19:57:48 +02:00
* [ ] Android (Flutter)
* [ ] iOS (mit Framework???? (Ging das nich auch mit Flutter?))
## Anderes
* [ ] CI aufsetzen
* [ ] Tests schreiben
* [ ] Namen finden
* [ ] Alle Packages umziehen
* [x] Swagger UI aufsetzen
2018-06-12 19:57:48 +02:00
* [ ] Globale Limits für anlegbare Listen + Namespaces
* [ ] Mgl., dass die Instanz geschlossen ist, also sich keiner registrieren kann, und man sich einloggen muss
2018-06-12 19:57:48 +02:00
* [ ] mgl. zum Emailmaskieren haben (in den Nutzereinstellungen, wenn man seine Email nicht an alle Welt rausposaunen will)
* [ ] Mgl. zum Accountlöschen haben (so richtig krass mit emailverifiezierung und dass alle Privaten Listen gelöscht werden und man alle geteilten entweder wem übertragen muss oder auf provat stellen)