KeepIt ist eine kleine Inventar-Anwendung. Mit ihr können Geräte gespeichert, angezeigt, gesucht und wieder gelöscht werden. Die Oberfläche wird mit Flet gebaut, die Daten werden in einer lokalen SQLite-Datei gespeichert.
- Verwendung
- Entwicklungsumgebung
- Anforderungen an das Projekt
- UI Entwurf
- ER Diagramm
- Programmablauf
- Benötigt für die Abgabe
https://github.com/EnteSuesssauer15/Codename-Winton-Thunder/releases
- Beim ersten Start gibt es drei Beispieltypen, aber noch keine Mitarbeiter oder Geräte.
- Lege zuerst unter
Employeeseinen Mitarbeiter und unterTypeseinen Typ mit Kürzel an. - Unter
Deviceskannst du ein Gerät erfassen und Typ sowie Mitarbeiter auswählen. Die Inventarnummer wird automatisch erstellt. - Das Dashboard zeigt die Anzahl der Geräte, Mitarbeiter und Typen.
- Unter
Settingskannst du Geräte, Typen und Mitarbeiter als JSON sichern oder daraus wiederherstellen. Beim Import werden diese Daten ersetzt. „Save Settings“ speichert derzeit keine Einstellungen.
.
├── README.md Projektbeschreibung und Anleitung
├── PROJECT_FLOW.md Ablaufdiagramme und Projektübersicht
├── dev_setup.py Erstellt .venv und installiert Pakete
├── pyproject.toml Projekt- und Flet-Konfiguration
├── requirements.txt Benötigte Python-Pakete
├── src/
│ ├── main.py Start, Datenbankinitialisierung und Navigation
│ ├── scripts/
│ │ └── database.py SQLite-Schema, Abfragen und Datenbankfunktionen
│ ├── views/
│ │ ├── dashboard.py Kennzahlen und Geräteverteilung nach Typ
│ │ ├── device.py Inventarliste, Suche und Geräteverwaltung
│ │ ├── employee.py Mitarbeiterverwaltung
│ │ ├── settings.py JSON-Backup und -Restore
│ │ └── type.py Gerätetypenverwaltung
│ └── assets/ Logos, Icons und Splash-Grafik
└── tests/
└── test_main.py Flet-Beispieltest, noch kein Inventartest
-
Öffne ein Terminal im Hauptordner des Projekts. Das ist der Ordner, in dem
README.mdunddev_setup.pyliegen. -
Führe das Einrichtungs-Skript aus:
python3 dev_setup.py
Das Skript erstellt den Ordner .venv und installiert dort die benötigten
Pakete.
Die Befehle müssen im Hauptordner des Projekts ausgeführt werden.
Als Desktop-Anwendung:
flet runAls Web-Anwendung im Browser:
flet run --webWenn du für einen frischen Test alle Inventardaten löschen möchtest, beende
die Anwendung und entferne database.db. Beim nächsten Start wird die Datei
mit leeren Tabellen neu erstellt.
Linux und macOS:
rm .flet/storage/data/database.dbWindows PowerShell:
Remove-Item .flet\storage\data\database.dbDie folgenden Befehle erzeugen ein Paket für die jeweilige Plattform. Für mobile Plattformen können zusätzliche SDKs und Signatur-Schlüssel notwendig sein.
flet build apk -v # Android
flet build ipa -v # iOS
flet build macos -v # macOS
flet build linux -v # Linux
flet build windows -v # Windows
flet build web -v # WebWeitere Informationen stehen in der Flet-Dokumentation.
erDiagram
EMPLOYEES ||--o{ INVENTORY : "ist zugewiesen"
DEVICETYPES ||--o{ INVENTORY : "klassifiziert"
EMPLOYEES {
INTEGER employeeId PK
TEXT Name
TEXT Surname
TEXT Department
}
DEVICETYPES {
TEXT TypeId PK
TEXT Short
}
INVENTORY {
TEXT InventarNr PK
TEXT Device
TEXT Type_Id FK
INTEGER Assignee_Id FK
}
SETTINGS {
TEXT option PK
TEXT value
}
SETTINGS wird beim Erstellen der Datenbank angelegt. Die Backup-Funktionen exportieren/importieren diese Tabelle derzeit nicht.
flowchart TD
A["Devices öffnen"] --> B["Typen und Mitarbeiter laden"]
B --> C["Add Device: Name, Typ und Mitarbeiter auswählen"]
C --> D{"Pflichtfelder gültig und Typ vorhanden?"}
D -- Nein --> E["Validierungsfehler anzeigen"]
D -- Ja --> F["Kürzel des Typs lesen"]
F --> G["Nächste fünfstellige Nummer für das Kürzel bestimmen"]
G --> H["InventarNr = Kürzel + Nummer"]
H --> I["inventory-Datensatz speichern"]
I --> J["Gerätetabelle aktualisieren"]
Beim Anzeigen der Geräteliste verbindet die App inventory mit employees, damit Name und Nachname des zugewiesenen Mitarbeiters erscheinen. Die Suche berücksichtigt Inventarnummer, Gerät, Typ, Mitarbeiter-ID und Namen.
flowchart LR
A["Types oder Employees öffnen"] --> B["Datensätze aus SQLite laden"]
B --> C["Suchen / neuen Datensatz anlegen / Zeilen auswählen"]
C --> D["Speichern oder ausgewählte Datensätze löschen"]
D --> E{"Wird ein Typ oder Mitarbeiter noch verwendet?"}
E -- Ja --> F["Fremdschlüssel verhindert Löschen; Fehlerdialog"]
E -- Nein --> G["Datenbank ändern und Tabelle aktualisieren"]
flowchart TD
A["Settings öffnen"] --> B{"Aktion"}
B -- Export --> C["inventory, devicetypes und employees lesen"]
C --> D["Als backup.json speichern"]
B -- Import --> E["JSON-Datei auswählen und lesen"]
E --> F["Pflichtfelder und Gerätebeziehungen prüfen"]
F --> G{"Backup gültig?"}
G -- Nein --> H["Fehler protokollieren; Import abbrechen"]
G -- Ja --> I["Ersetzen bestätigen lassen"]
I --> J{"Bestätigt?"}
J -- Nein --> K["Import abbrechen"]
J -- Ja --> L["Bisherige Geräte, Mitarbeiter und Typen löschen"]
L --> M["Typen und Mitarbeiter einfügen"]
M --> N["Alte auf neue Mitarbeiter-IDs abbilden"]
N --> O["Geräte mit aktualisierten Mitarbeiter-IDs einfügen"]
- Übersichtliche und einleuchtende Darstellung sowie bedienung
- Eindeutige Inventarnummer mit Kürzel jenachdem welches Gerät inventarisiert wird
- Suchfunktion
- Import/Export der Daten
- Lars
- Laura
- Joshua
- Nico -> Entwicklung
Folgende Testfälle wurden als Blackbox-Tests durchgeführt:
- Prüfung der Dauerhaften Speicherung der Daten in einer Datenbank
- Anlegen eines neuen Mitarbeiters
- Meldung bei leeren Pflichtfeldern
- Suchfunktion testen
- Gerät anlegen
- Im Dropdown ungültigen freien Text eingeben
- Auswählbare Optionen der Dropdowns aktualisieren sich mit neuen Einträgen
- Backupfunktion testen
Datum: 19.10.2026
Uhrzeit: 19:30
Tester: Laura Wolf
| Beschreibung | Durchführung | Erwartetes Ergebnis | Ergebnis |
|---|---|---|---|
| Daten bleiben in der Datenbank bestehen | Daten anlegen, App neu starten | Daten sind weiterhin vorhanden | OK |
| Mitarbeiter anlegen | Employees → Add, Name/Nachname/Abteilung ausfüllen, Save | Eintrag erscheint in der Tabelle mit fortlaufender ID | OK |
| Pflichtfelder | Add, alle Felder leer, Save | Fehlermeldungen „Name/Surname/Department is required“, nichts gespeichert | OK |
| Suchfunktion | Suche nach „laptop“ | Passende Einträge, unabhängig von Groß-/Kleinschreibung werden angezeigt | OK |
| Gerät anlegen | Devices → Add, Name „Laptop“, Typ Computer, Mitarbeiter wählen, Save | Gerät erscheint mit Inventarnummer CMP00001 |
OK |
| Ungültiger Typ | Im Dropdown freien Text als Typ eingeben, Save | Meldung „Select a valid type“, nichts gespeichert | OK |
| Dropdowns aktuell | Neuen Typ/Mitarbeiter anlegen, Devices → Add | Neue Einträge sind auswählbar | OK |
| Backup und Restore | Backup erstellen, Daten ändern/löschen, Restore, bestätigen | Bestand entspricht dem Backup | OK |
Anzahl der positiv verlaufenen Tests: 8
Anzahl der negativ verlaufenen Tests: 0
KI wurde meist als hilfestellung für syntax verwendet, sprich copilot autocomplete oder beispiele gegeben wie mit der GUI programmiert wird es aber selbst implementiert. Im grunde hat die KI mir geholfen zu verstehen wie Die Bibliothek funktioniert, bei der im vergleich die offizielle Dokumentation mir nicht weitergeholfen hat.
In der dashboard.py und settings.py wurde fast ausschließlich von KI geschrieben und selbst kommentiert, aufgrund der komplexität des Importierens und Exportierens samt öffnen einer Dateiauswahl ging das auf dem weg wesentlich schneller und möglicherweise auch übersichtlicher als selbst geschrieben.
wofür KI genutzt wurde, was ihr selbst verändert habt
Was war schwierig, was würdet ihr heute anders machen?
Voraussetzungen, Start des Tools
Funktionen, Beispielablauf, Verhalten bei Fehlern