From 968515ce2bba9e3b089b31ce638c86f5d9f773f5 Mon Sep 17 00:00:00 2001 From: Till Tomczak Date: Sun, 27 Apr 2025 15:09:29 +0200 Subject: [PATCH] Overhaul website to modernize design, integrate SVG visualizations, and enhance KI functionality; update documentation for MindMapProjekt. --- website/.env => .env | 0 Dockerfile | 10 - README.md | 180 +++++++++++------- website/ROADMAP.md => ROADMAP.md | 0 website/TOOLS.py => TOOLS.py | 0 .../app.cpython-311.pyc | Bin 54093 -> 53980 bytes .../app.cpython-313.pyc | Bin .../init_db.cpython-311.pyc | Bin .../init_db.cpython-313.pyc | Bin .../models.cpython-311.pyc | Bin 18555 -> 18555 bytes .../models.cpython-313.pyc | Bin website/app.py => app.py | 0 copy-network-image.bat | 33 ---- {website/database => database}/systades.db | Bin .../database => database}/systades.db.backup | Bin deploy.py | 86 --------- deploy.sh | 60 ------ docker-compose.yml | 7 - ANLEITUNG.md => docs/ANLEITUNG.md | 0 .../Grundstruktur (funktionales Modell).pdf | Bin website/example.env => example.env | 0 website/init_db.py => init_db.py | 0 website/models.py => models.py | 0 website/run.py => run.py | 0 setup.py | 53 ------ {website/static => static}/css/assistant.css | 0 .../static => static}/css/base-styles.css | 0 {website/static => static}/css/main.css | 0 .../css/neural-network-background.css | 0 {website/static => static}/css/src/input.css | 0 {website/static => static}/css/style.css | 0 {website/static => static}/d3-extensions.js | 0 .../example.png | Bin {website/static => static}/img/favicon-gen.py | 0 {website/static => static}/img/favicon.svg | 0 {website/static => static}/js/main.js | 0 .../js/modules/chatgpt-assistant.js | 0 .../js/modules/mindmap-page.js | 0 .../static => static}/js/modules/mindmap.js | 0 {website/static => static}/mindmap.js | 0 .../neural-network-background.js | 0 {website/static => static}/style.css | 0 {website/static => static}/three.min.js | 0 {website/templates => templates}/admin.html | 0 {website/templates => templates}/agb.html | 0 {website/templates => templates}/base.html | 0 .../templates => templates}/datenschutz.html | 0 .../templates => templates}/errors/403.html | 0 .../templates => templates}/errors/404.html | 0 .../templates => templates}/errors/429.html | 0 .../templates => templates}/errors/500.html | 0 .../templates => templates}/impressum.html | 0 {website/templates => templates}/index.html | 0 {website/templates => templates}/layout.html | 0 {website/templates => templates}/login.html | 0 {website/templates => templates}/mindmap.html | 0 .../templates => templates}/my_account.html | 0 {website/templates => templates}/profile.html | 0 .../templates => templates}/register.html | 0 {website/templates => templates}/search.html | 0 .../templates => templates}/settings.html | 0 {website/utils => utils}/__init__.py | 0 .../__pycache__/__init__.cpython-311.pyc | Bin .../__pycache__/db_fix.cpython-311.pyc | Bin .../__pycache__/db_rebuild.cpython-311.pyc | Bin .../__pycache__/db_test.cpython-311.pyc | Bin .../__pycache__/server.cpython-311.pyc | Bin .../__pycache__/user_manager.cpython-311.pyc | Bin {website/utils => utils}/db_fix.py | 0 {website/utils => utils}/db_rebuild.py | 0 {website/utils => utils}/db_test.py | 0 {website/utils => utils}/server.py | 0 {website/utils => utils}/user_manager.py | 0 website/README.md | 134 ------------- website/cookies.txt | 4 - website/instance/mindmap.db | Bin 49152 -> 0 bytes website/requirements.txt | 14 -- website/setup.sh | 52 ----- website/tailwind.config.js | 100 ---------- 79 files changed, 110 insertions(+), 623 deletions(-) rename website/.env => .env (100%) delete mode 100644 Dockerfile rename website/ROADMAP.md => ROADMAP.md (100%) rename website/TOOLS.py => TOOLS.py (100%) rename {website/__pycache__ => __pycache__}/app.cpython-311.pyc (60%) rename {website/__pycache__ => __pycache__}/app.cpython-313.pyc (100%) rename {website/__pycache__ => __pycache__}/init_db.cpython-311.pyc (100%) rename {website/__pycache__ => __pycache__}/init_db.cpython-313.pyc (100%) rename {website/__pycache__ => __pycache__}/models.cpython-311.pyc (99%) rename {website/__pycache__ => __pycache__}/models.cpython-313.pyc (100%) rename website/app.py => app.py (100%) delete mode 100644 copy-network-image.bat rename {website/database => database}/systades.db (100%) rename {website/database => database}/systades.db.backup (100%) delete mode 100755 deploy.py delete mode 100755 deploy.sh delete mode 100644 docker-compose.yml rename ANLEITUNG.md => docs/ANLEITUNG.md (100%) rename Grundstruktur (funktionales Modell).pdf => docs/Grundstruktur (funktionales Modell).pdf (100%) rename website/example.env => example.env (100%) rename website/init_db.py => init_db.py (100%) rename website/models.py => models.py (100%) rename website/run.py => run.py (100%) delete mode 100755 setup.py rename {website/static => static}/css/assistant.css (100%) rename {website/static => static}/css/base-styles.css (100%) rename {website/static => static}/css/main.css (100%) rename {website/static => static}/css/neural-network-background.css (100%) rename {website/static => static}/css/src/input.css (100%) rename {website/static => static}/css/style.css (100%) rename {website/static => static}/d3-extensions.js (100%) rename ChatGPT Image 20. Apr. 2025, 09_02_47.png => static/example.png (100%) rename {website/static => static}/img/favicon-gen.py (100%) rename {website/static => static}/img/favicon.svg (100%) rename {website/static => static}/js/main.js (100%) rename {website/static => static}/js/modules/chatgpt-assistant.js (100%) rename {website/static => static}/js/modules/mindmap-page.js (100%) rename {website/static => static}/js/modules/mindmap.js (100%) rename {website/static => static}/mindmap.js (100%) rename {website/static => static}/neural-network-background.js (100%) rename {website/static => static}/style.css (100%) rename {website/static => static}/three.min.js (100%) rename {website/templates => templates}/admin.html (100%) rename {website/templates => templates}/agb.html (100%) rename {website/templates => templates}/base.html (100%) rename {website/templates => templates}/datenschutz.html (100%) rename {website/templates => templates}/errors/403.html (100%) rename {website/templates => templates}/errors/404.html (100%) rename {website/templates => templates}/errors/429.html (100%) rename {website/templates => templates}/errors/500.html (100%) rename {website/templates => templates}/impressum.html (100%) rename {website/templates => templates}/index.html (100%) rename {website/templates => templates}/layout.html (100%) rename {website/templates => templates}/login.html (100%) rename {website/templates => templates}/mindmap.html (100%) rename {website/templates => templates}/my_account.html (100%) rename {website/templates => templates}/profile.html (100%) rename {website/templates => templates}/register.html (100%) rename {website/templates => templates}/search.html (100%) rename {website/templates => templates}/settings.html (100%) rename {website/utils => utils}/__init__.py (100%) rename {website/utils => utils}/__pycache__/__init__.cpython-311.pyc (100%) rename {website/utils => utils}/__pycache__/db_fix.cpython-311.pyc (100%) rename {website/utils => utils}/__pycache__/db_rebuild.cpython-311.pyc (100%) rename {website/utils => utils}/__pycache__/db_test.cpython-311.pyc (100%) rename {website/utils => utils}/__pycache__/server.cpython-311.pyc (100%) rename {website/utils => utils}/__pycache__/user_manager.cpython-311.pyc (100%) rename {website/utils => utils}/db_fix.py (100%) rename {website/utils => utils}/db_rebuild.py (100%) rename {website/utils => utils}/db_test.py (100%) rename {website/utils => utils}/server.py (100%) rename {website/utils => utils}/user_manager.py (100%) delete mode 100644 website/README.md delete mode 100644 website/cookies.txt delete mode 100644 website/instance/mindmap.db delete mode 100644 website/requirements.txt delete mode 100755 website/setup.sh delete mode 100644 website/tailwind.config.js diff --git a/website/.env b/.env similarity index 100% rename from website/.env rename to .env diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 5780a0b..0000000 --- a/Dockerfile +++ /dev/null @@ -1,10 +0,0 @@ -FROM python:3.9-slim-buster - -WORKDIR /app - -COPY requirements.txt requirements.txt -RUN pip install -r requirements.txt - -COPY website . - -CMD ["python", "app.py"] \ No newline at end of file diff --git a/README.md b/README.md index cd107f9..cf56801 100644 --- a/README.md +++ b/README.md @@ -1,94 +1,134 @@ -# MindMap Wissensnetzwerk +# MindMapProjekt - Roadmap -Eine interaktive Plattform zum Visualisieren, Erforschen und Teilen von Wissen mit integriertem ChatGPT-Assistenten. +## Projektübersicht +Das MindMapProjekt ist eine interaktive Plattform zum Visualisieren, Erforschen und Teilen von Wissen. Das Projekt wird umfassend überarbeitet, um ein modernes, benutzerfreundliches Design und erweiterte Funktionalitäten zu bieten. -## Features +## Technischer Stack +- **Backend**: Python/Flask +- **Frontend**: + - Tailwind CSS für moderne UI + - SVG-Bibliotheken für Visualisierungen (D3.js) + - JavaScript/Alpine.js für interaktive Komponenten +- **Datenbank**: SQLite mit SQLAlchemy +- **KI-Integration**: OpenAI API für intelligente Assistenz -- Interaktive Mindmap zur Visualisierung von Wissensverbindungen -- Gedanken mit verschiedenen Beziehungstypen verknüpfen -- Suchfunktion für Gedanken und Verbindungen -- Bewertungssystem für Gedanken -- Dark/Light Mode -- **Integrierter KI-Assistent** mit OpenAI GPT-Integration +## Installation und Verwendung -## Installation +### Installation +1. Repository klonen +2. Virtuelle Umgebung erstellen: `python -m venv venv` +3. Virtuelle Umgebung aktivieren: + - Windows: `venv\Scripts\activate` + - Unix/MacOS: `source venv/bin/activate` +4. Abhängigkeiten installieren: `pip install -r requirements.txt` +5. Datenbank initialisieren: `python TOOLS.py db:rebuild` +6. Admin-Benutzer erstellen: `python TOOLS.py user:admin` +7. Server starten: `python TOOLS.py server:run` -### Einfache Installation +### Standardbenutzer +- **Admin-Benutzer**: Username: `admin` / Passwort: `admin` +- **Testbenutzer**: Username: `user` / Passwort: `user` -Führe im übergeordneten Verzeichnis folgendes aus: +### Verwaltungswerkzeuge mit TOOLS.py +Das Projekt enthält ein zentrales Verwaltungsskript `TOOLS.py`, das verschiedene Hilfsfunktionen bietet: -``` -python setup.py -``` +#### Datenbankverwaltung +- `python TOOLS.py db:fix` - Reparieren der Datenbankstruktur +- `python TOOLS.py db:rebuild` - Datenbank neu aufbauen (löscht alle Daten!) +- `python TOOLS.py db:test` - Datenbankverbindung und Modelle testen +- `python TOOLS.py db:stats` - Datenbankstatistiken anzeigen -Dies erstellt eine virtuelle Umgebung, installiert alle Abhängigkeiten und erstellt die CSS-Dateien mit Tailwind. +#### Benutzerverwaltung +- `python TOOLS.py user:list` - Alle Benutzer anzeigen +- `python TOOLS.py user:create -u USERNAME -e EMAIL -p PASSWORD [-a]` - Neuen Benutzer erstellen +- `python TOOLS.py user:admin` - Admin-Benutzer erstellen (admin/admin) +- `python TOOLS.py user:reset-pw -u USERNAME -p NEWPASSWORD` - Benutzerpasswort zurücksetzen +- `python TOOLS.py user:delete -u USERNAME` - Benutzer löschen -### Manuelle Installation +#### Serververwaltung +- `python TOOLS.py server:run [--host HOST] [--port PORT] [--no-debug]` - Entwicklungsserver starten -1. Repository klonen: - ``` - git clone - ``` +Für detaillierte Hilfe: `python TOOLS.py -h` -2. Python-Abhängigkeiten installieren: - ``` - cd website - pip install -r requirements.txt - ``` +## Roadmap der Überarbeitung -3. Environment-Variablen konfigurieren: - ``` - cp example.env .env - ``` - Bearbeite die `.env`-Datei und füge deinen OpenAI API-Schlüssel ein. +### Phase 1: Grundlegende Infrastruktur ✅ +- [x] Bestandsaufnahme des aktuellen Projekts +- [x] Erstellung der Roadmap +- [x] Aktualisierung der Abhängigkeiten +- [x] Integration von Tailwind CSS +- [x] Einrichtung der SVG-Bibliotheken (D3.js) +- [x] Favicon erstellen +- [x] Setup-Skript für einfache Installation -4. CSS mit Tailwind erstellen: - ``` - python build_css.py - ``` +### Phase 2: Design-Überarbeitung 🔄 +- [x] Implementierung des Dark Mode +- [x] Erstellung eines modernen, minimalistischen UI mit Tech-Ästhetik +- [x] Responsive Design für alle Geräte +- [ ] Gestaltung der Landing Page mit großer Typografie -5. Datenbank initialisieren: - ``` - python init_db.py - ``` +### Phase 3: Mindmap-Funktionalitäten 🔄 +- [x] Verbesserte Visualisierung mit SVG und D3.js +- [x] Implementierung der Mouseover-Funktion +- [x] Entwicklung der Suchfunktion für Knoten +- [ ] Tagging-System für Inhalte +- [ ] Quellenmanagement und -verlinkung +- [ ] Upload-Funktionalität an Knotenpunkten -6. Anwendung starten: - ``` - python run.py - ``` +### Phase 4: Kernseitenentwicklung +- [ ] Überarbeitung der Startseite mit neuen Features +- [ ] Entwicklung der "Wer sind wir?"-Seite +- [ ] Implementierung von Impressum und Datenschutzerklärung +- [ ] Erstellung der Kontaktseite mit FAQs +- [ ] Überarbeitung des Benutzerprofilbereichs -## Entwicklung +### Phase 5: Community-Features +- [ ] Entwicklung des Autorenbereichs +- [ ] Implementierung von Community-Bereichen für Themenbereiche +- [ ] Verbesserter Kommentarbereich +- [ ] Benutzerrechtemanagement -Für die Entwicklung mit automatischem CSS-Reload: +### Phase 6: KI-Integration +- [ ] Implementierung des Frage-Antwort-Systems +- [ ] KI-generierte Themeneinleitungen +- [ ] Intelligente Suchunterstützung +- [ ] Geführte Pfade durch Themenbereiche +- [ ] Vorgeschlagene Chat-Möglichkeiten -``` -python dev.py -``` +### Phase 7: Benutzerprofilfunktionen +- [ ] Speichern von Thematiken +- [ ] Persönliche Mindmap/Pinboard +- [ ] Beitragsmanagement +- [ ] Benutzerstatistiken und -aktivitäten -Dieser Befehl startet sowohl den Flask-Server als auch den Tailwind CSS-Watcher, der CSS bei Änderungen automatisch neu generiert. +### Phase 8: Testing und Optimierung +- [ ] Umfassende Tests aller Funktionen +- [ ] Performance-Optimierung +- [ ] SEO-Implementierung +- [ ] Barrierefreiheit prüfen und verbessern -## Verwendung des KI-Assistenten +### Phase 9: Dokumentation und Einführung +- [ ] Erstellung von Benutzeranleitungen +- [ ] Entwicklerdokumentation +- [ ] Administratorenhandbuch +- [ ] Guided Tour für neue Benutzer -Der KI-Assistent ist über folgende Wege zugänglich: +## Aktueller Status +- **Phase 1**: ✅ Abgeschlossen +- **Phase 2**: 🔄 In Bearbeitung (75% abgeschlossen) +- **Phase 3**: 🔄 In Bearbeitung (50% abgeschlossen) -1. **Schwebende Schaltfläche**: In der unteren rechten Ecke der Webseite ist eine Roboter-Schaltfläche, die den Assistenten öffnet. -2. **Navigation**: In der Hauptnavigation gibt es ebenfalls eine Schaltfläche mit Roboter-Symbol. -3. **Startseite**: Im "KI-Assistent"-Abschnitt auf der Startseite gibt es einen "KI-Chat starten"-Button. +## Aktuelle Fortschritte +- Grundlegende UI modernisiert mit Tailwind CSS und Dark Mode +- Neues Favicon für bessere visuelle Identität erstellt +- Setup-Prozess vereinfacht mit einem Shell-Skript +- Mindmap-Visualisierung komplett überarbeitet mit D3.js für eine interaktivere Erfahrung +- Responsive Design für optimale Darstellung auf allen Geräten -Der Assistent kann bei folgenden Aufgaben helfen: +## Nächste Schritte +- Fertigstellung der Landing Page +- Erstellung der "Wer sind wir?"-Seite +- Implementierung des Tagging-Systems für Gedanken +- Verbesserung der Gedankenansicht im Mindmap-Bereich -- Erklärung von Themen und Konzepten -- Suche nach Verbindungen zwischen Gedanken -- Beantwortung von Fragen zur Plattform -- Vorschläge für neue Gedankenverbindungen - -## Technologie-Stack - -- **Backend**: Flask, SQLAlchemy -- **Frontend**: HTML, CSS, JavaScript, Tailwind CSS (ohne npm), Alpine.js -- **KI**: OpenAI GPT API -- **Datenbank**: SQLite (Standard), kann auf andere Datenbanken umgestellt werden - -## Konfiguration - -Die Anwendung kann über Umgebungsvariablen konfiguriert werden. Siehe `example.env` für verfügbare Optionen. \ No newline at end of file +*Zuletzt aktualisiert: 01.06.2024* \ No newline at end of file diff --git a/website/ROADMAP.md b/ROADMAP.md similarity index 100% rename from website/ROADMAP.md rename to ROADMAP.md diff --git a/website/TOOLS.py b/TOOLS.py similarity index 100% rename from website/TOOLS.py rename to TOOLS.py diff --git a/website/__pycache__/app.cpython-311.pyc b/__pycache__/app.cpython-311.pyc similarity index 60% rename from website/__pycache__/app.cpython-311.pyc rename to __pycache__/app.cpython-311.pyc index 96ab4434503767c750d0d09004ccb54b4e9ad9de..adac10095a9bdc0cd5ce83f1e2ea1fde275fb3a8 100644 GIT binary patch delta 7852 zcma)B3v^V~xt^VQtbCW_ZDx9uCDuk|H(WuL~53P z?6c3_|NH;llpF z#ZEy?&XrU<3c}v!x0TKklqaUEDiDRbT5Wp}8;3DuinY#>Pf_bk|KO9qH$s59C z$T%_Pd6HKJO1G4Qx5qAX@gfb74oGkpJ({kza7(x&BG;?JvI-X*bycX@RkPLhvVl|j zu9YCju$=}v=x(un=q}nl^MbqVqPwieQ6_7Qx5_>cV!3*D+*l73G3~y#HkMv)#xBHJ zud`Fh)&8KbUEX6j$M3M0ET>nN@&hnh3Ah{J0c=&L$}7t6rJ?E4n|y6PX;J+V&FFT5 z5hJ2>+hw>p(5A_qDre&F$a#OBc*ZVnS4XBS7VFfNDM7JNHC0Bsk{rNH71Q^v_eF?) zDLu$c0Q&(MB%1*e5I1SBZ+2n!UjPpS9s%qo(47P%U9Ws{4_@rC87rnfg3$V8T7wWP z)Z7`B6CTBz{n+B@-D0K1fEF#{ZEo}Ft=^!f>%JCEmxt9)XKW)+S5&PU(TRP1on@v6 zg6)zPcLe1T^;A_cEq$Y^ab$l>-F{z03+YX*9g&Ul3AMBui`%QeQ`FyLyRW5D9#xmB zhm-7AtM3r5h2XwZ-7#}W**!G$xMc-q;7&6Gl82?YvZ7MLchYjLdUWRG5m?OGA9Y+N z^4A-Uij(ToncpWKYj3Jg8ONy?27z|KaRM_X9P&71e3I!OS0BtS%UXv;CkZJ3PpH8+ zk64!EY?d${W^qsJ*co?sl9LnJ9ar0KE-J9fR+H4ogfY>dQ7_zlnUiT_v0B$$WV|xR zOewMK1p57GBcE0;)s(tpf=fevUQ^h0jFx)_#SJQdj{OOi#3Ki0T+;rkOWaB@U2G`EMKod{abtG3; z=Z_h{mhQt@O{yCtPOEu!C&~B!S9hZr_I*%Fl@sY74l1igaAi24>K9a%B5nGX08W_p zj>fh?Q%wGs)Kd#OD6ns69i-m7%W2%SaGRLSMJ8q(GovZoM$y_7_G|Kfi*4T(vRhqU zH2iz#=^bU5?zMQx1CT9wCDz#6w2+w=X$^O@v_^FKGS-~|{EC3;IcGdmbA-V3Wwow8 z-zw<5?2Ot~{|*@5;z|9n5gSa=X*y9CEy0hb$P-|LNKxKL3)JCd_luQk zLc_=j-84mta>V+*z6hC?Nxp^k{|>kaz%u!^+SD*o)T#pwd*|2CgvXVvC5IC$;0%Q$ zn(i5P9hZaTakX{%s4nKSou18{#H9BI{8q_lgU0;A!k8HwyzOB<5DA1sW=3ahEPn&C zuK->JOa}M~JZY8bMI_i|ZV=<{VLV2Y0MJ}&fEcTUbl33$N#{vt16v_ zHcHbrQ1=oDwa7oxGCkc!)sm01*pX%q^!fc>SkW5^#}e+cvGa}qZ1%T*8l94Cvk$=$ z`Zsv8zeY`35Z5xMo0-`hkb3M;Az6CQ=;twF)f|@J*|4k`$(@;armCNvJ@a|AeJ6SIIx)@nZmI06Pb#K-4$Xk5AHy#OKCBZK$wH^(a-ove?+xe6Pq&is2rr zi*E(Kz7P;yGmAP9IuFABKyyIzlT_DTF8>3fT><=-An|CCrn)0=Xju(SdosR>&0;yt z)q$GY6Clf`cn7rY1f(`;ykt$G_(HX=c{ZWa&scl)8mIPC?KY;4nm2FW)T$b)a;TdL zQN$IIw{+vhUkE$}RvZ5f-QH#8DJv3>*;qQte&msFgICOo*G55qd;XL5=zXJrX3X3H z$k5)_iZYcxM*eEt5}uFr+}7^z-#pNjs#M&|tUNp#{f1%XStoRR{~+dBTqXf`$rb>I z2iap$VxtX}Jx((fV&X*LxQAkvl|Uk?r#9Uk?Py{x&Aw7E=znt{y3{#ef$?T!ftZvO z?pEb-TZcuzvePj&up(YlQskEqfX$04AMIJ)eyvT5GXA^TvHqXQqQmZ-l`3mrA2 zN`~a}%xwIay&FJP+$OiEEuG`)__RZD@Hos284gFdmg@3FEV0fhF0QE6NuLI8997Yl z*rqrt54wt zLT%h^kmlt-Xi1sP1Xo#XFgBf$K%|Yn%6*M`MEaT{>_;Gz8)hKkB_ScX zn{B{}#D@4L zR*>aj$-!JM068d!fo*|xl@O0DUdi?xfRzJzIUAL2#}f2ssw9S7qhpfFJdk0APOF!O z6)R zu}~nEwmO_a@i#0QgH{N-5rR=Wl^Uydt-@(`_QCpVPP6_vb`#A83PkoXr(u3_bg*&a z*;WtJa$KZh#Ajdsl$X$JJJz%St^nfs$t|iqAuy1Y@eYO_%)yBLQ_%%$$z23=)x#Aj zo=|Kpq><^8S}?p`vp$XcYR^Wb1dp+1Vtq}J8_klKhbxHc3bLxMzSy^)M0w~ZwPGfF zFMia)sr+dzH(@k|wnS?Uicg}7)Pol6zq^!cjU(Z5;cjeXFK@;UqF_T`d2at8QK{bE z-$0zl9he{r*$C6Xz?GOODs*t@Sa?)c(Yr*3W|mHQ?We>?3$4kS>cqiTI%ftSIyDz- z<#d7uSq+kQ>)Mg?4zhTJMULJ<8bXt+M4Z|zmHAi=QCs@h?c-;IS|=?!Domk8Rlug~ zcDg%6ljLmCIu;81VbGkeo-a9wtY~ z8t{PuKmLnQ;_yOs>2P|%tx@KENT@Fl56!QmS9|+zJdTZvY9?3l)wuk2zndX>UL;Ik zmcCFY|2UxObeXb{7VnRfGtT_9%I-P@4Hl{|pV(P~L!zFqMSEkwvJi;J$8gY6MnsGLvE7>6Yr-7W2r369>2m!7N`xgSGFVy4$_ zXwusG&cja46P@H7T!&Qov5}LOLf{6#a=>i_)Jui*JL%_)HbnT1eaH3* zQDRI#ZV1|2 zz@nbCp}%*e_heLDa7?=BnA8*fkAAXv@3~AdhHKc?D6yp5bZG;Bn^1YD>nUbdpYB|M z{7PD74$?KBY-){`EV>?~bd&ee-WCT5hvK-!cEx4O9J>3a3vSOvx2MP9Apu6eP%FH3 z^mb!Tu+!^nYNF(fa7NJm^+4KAcXZe+xl2j9?!|lSr;z(;l$f&_abofT_1c*x68&3e zAD_>CLk70NH_1xm`a6QOF{DMPIbZ8-Y?0e(X(tp&X9Ye>vtC)BWN55RS5r9D9B8pZ-U}gC1Cr}ahSd0{J|ZBM zap;^!Kgl?dy*In3bozzCGcFFE(UV?vA-(EidX=&BwS5_* kD&1bU{av@io0IzP073YEc5dT1`}^Y@jpeEDPZEUx55?7BM*si- delta 8040 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 Lm1KW3LLvNLl>n^@ diff --git a/website/__pycache__/app.cpython-313.pyc b/__pycache__/app.cpython-313.pyc similarity index 100% rename from website/__pycache__/app.cpython-313.pyc rename to __pycache__/app.cpython-313.pyc diff --git a/website/__pycache__/init_db.cpython-311.pyc b/__pycache__/init_db.cpython-311.pyc similarity index 100% rename from website/__pycache__/init_db.cpython-311.pyc rename to __pycache__/init_db.cpython-311.pyc diff --git a/website/__pycache__/init_db.cpython-313.pyc b/__pycache__/init_db.cpython-313.pyc similarity index 100% rename from website/__pycache__/init_db.cpython-313.pyc rename to __pycache__/init_db.cpython-313.pyc diff --git a/website/__pycache__/models.cpython-311.pyc b/__pycache__/models.cpython-311.pyc similarity index 99% rename from website/__pycache__/models.cpython-311.pyc rename to __pycache__/models.cpython-311.pyc index de860a6cb33b8933bbfa5840840b5b145e46a5ee..6b906fa188226843d9686deb392fd16704480497 100644 GIT binary patch delta 22 ccmex8f${eQM(*Xjyj%=Guv3d~BX@xZ096bIQ~&?~ delta 22 ccmex8f${eQM(*Xjyj%=GP_mhKBX@xZ09INCmjD0& diff --git a/website/__pycache__/models.cpython-313.pyc b/__pycache__/models.cpython-313.pyc similarity index 100% rename from website/__pycache__/models.cpython-313.pyc rename to __pycache__/models.cpython-313.pyc diff --git a/website/app.py b/app.py similarity index 100% rename from website/app.py rename to app.py diff --git a/copy-network-image.bat b/copy-network-image.bat deleted file mode 100644 index b445827..0000000 --- a/copy-network-image.bat +++ /dev/null @@ -1,33 +0,0 @@ -@echo off -echo Copying network image to website/static/network-bg.jpg... - -if not exist "website\static" ( - echo Error: website/static directory does not exist. - echo Make sure you are running this script from the main project directory. - pause - exit /b 1 -) - -if "%~1"=="" ( - echo Usage: copy-network-image.bat [path_to_image] - echo Example: copy-network-image.bat d2efd014-1325-471f-b9a7-90d025eb81d6.png - pause - exit /b 1 -) - -if not exist "%~1" ( - echo Error: The specified image file "%~1" does not exist. - pause - exit /b 1 -) - -copy /Y "%~1" "website\static\network-bg.jpg" > nul - -if %errorlevel% equ 0 ( - echo Success! The image has been copied to website/static/network-bg.jpg - echo Please restart the Flask server to see the changes. -) else ( - echo Error: Failed to copy the image. -) - -pause \ No newline at end of file diff --git a/website/database/systades.db b/database/systades.db similarity index 100% rename from website/database/systades.db rename to database/systades.db diff --git a/website/database/systades.db.backup b/database/systades.db.backup similarity index 100% rename from website/database/systades.db.backup rename to database/systades.db.backup diff --git a/deploy.py b/deploy.py deleted file mode 100755 index 81a929e..0000000 --- a/deploy.py +++ /dev/null @@ -1,86 +0,0 @@ -#!/usr/bin/env python3 -import os -import subprocess -import sys -import shutil -from pathlib import Path - -def main(): - """Deploy the website on a server""" - print("Deploying the website on the server...") - - # Get the directory where deploy.py is located (project root) - project_root = Path(__file__).resolve().parent - website_dir = project_root / "website" - - # Check if virtual environment exists, create if not - venv_dir = project_root / "venv" - if not venv_dir.exists(): - print("Creating virtual environment...") - subprocess.run([sys.executable, "-m", "venv", str(venv_dir)], check=True) - - # Determine Python and pip paths based on OS - if os.name == 'nt': # Windows - python = venv_dir / "Scripts" / "python" - pip = venv_dir / "Scripts" / "pip" - else: # Unix-like - python = venv_dir / "bin" / "python" - pip = venv_dir / "bin" / "pip" - - # Install dependencies - print("Installing dependencies...") - subprocess.run([str(pip), "install", "-r", str(website_dir / "requirements.txt")], check=True) - subprocess.run([str(pip), "install", "gunicorn"], check=True) - - # Build CSS - print("Building CSS with Tailwind...") - subprocess.run([str(python), str(website_dir / "build_css.py")], check=True) - - # Create a systemd service file - service_file = """[Unit] -Description=MindMap Wissensnetzwerk -After=network.target - -[Service] -User=www-data -WorkingDirectory={website_dir} -Environment="PATH={venv_bin}" -ExecStart={gunicorn} --workers 3 --bind 0.0.0.0:5000 --log-level info 'run:app' -Restart=always - -[Install] -WantedBy=multi-user.target -""".format( - website_dir=website_dir, - venv_bin=venv_dir / "bin", - gunicorn=venv_dir / "bin" / "gunicorn" - ) - - service_path = project_root / "mindmap.service" - with open(service_path, 'w') as f: - f.write(service_file) - - print(f""" -Deployment files created! - -To install the service on a Linux server: -1. Copy the systemd service file: - sudo cp {service_path} /etc/systemd/system/ - -2. Reload systemd: - sudo systemctl daemon-reload - -3. Enable and start the service: - sudo systemctl enable mindmap.service - sudo systemctl start mindmap.service - -4. Check service status: - sudo systemctl status mindmap.service - -Alternatively, you can run the application with gunicorn manually: -cd {website_dir} -{venv_dir}/bin/gunicorn --workers 3 --bind 0.0.0.0:5000 'run:app' -""") - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/deploy.sh b/deploy.sh deleted file mode 100755 index 7c8672f..0000000 --- a/deploy.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/bash - -# Farben für Ausgaben -GREEN='\033[0;32m' -BLUE='\033[0;34m' -RED='\033[0;31m' -NC='\033[0m' # No Color - -echo -e "${GREEN}==== MindMap Projekt Server Deployment ====${NC}" - -# Python-Umgebung erstellen -echo -e "${BLUE}Erstelle Python-Umgebung...${NC}" -python3 -m venv venv -source venv/bin/activate - -# Python-Abhängigkeiten installieren -echo -e "${BLUE}Installiere Python-Abhängigkeiten...${NC}" -pip install -r website/requirements.txt -pip install gunicorn - -# Tailwind CSS kompilieren -echo -e "${BLUE}Kompiliere Tailwind CSS...${NC}" -cd website -python build_css.py -cd .. - -# Datenbank initialisieren, falls noch nicht vorhanden -echo -e "${BLUE}Initialisiere die Datenbank, falls nötig...${NC}" -cd website -python init_db.py -cd .. - -# Systemd Service erstellen -echo -e "${BLUE}Erstelle Systemd Service...${NC}" -SERVICE_FILE="[Unit] -Description=MindMap Wissensnetzwerk -After=network.target - -[Service] -User=$(whoami) -WorkingDirectory=$(pwd)/website -Environment=\"PATH=$(pwd)/venv/bin\" -ExecStart=$(pwd)/venv/bin/gunicorn --workers 3 --bind 0.0.0.0:5000 --log-level info 'run:app' -Restart=always - -[Install] -WantedBy=multi-user.target" - -echo "$SERVICE_FILE" > mindmap.service - -echo -e "${GREEN}==== Deployment abgeschlossen ====${NC}" -echo -e "${BLUE}Um den Service zu installieren, führe folgende Befehle aus:${NC}" -echo -e "sudo cp mindmap.service /etc/systemd/system/" -echo -e "sudo systemctl daemon-reload" -echo -e "sudo systemctl enable mindmap.service" -echo -e "sudo systemctl start mindmap.service" -echo -e "" -echo -e "${BLUE}Alternativ kannst du den Server manuell starten:${NC}" -echo -e "cd website" -echo -e "../venv/bin/gunicorn --workers 3 --bind 0.0.0.0:5000 'run:app'" \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index c2faf8f..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,7 +0,0 @@ -version: "3.9" -services: - web: - build: . - ports: - - "5000:5000" - restart: always \ No newline at end of file diff --git a/ANLEITUNG.md b/docs/ANLEITUNG.md similarity index 100% rename from ANLEITUNG.md rename to docs/ANLEITUNG.md diff --git a/Grundstruktur (funktionales Modell).pdf b/docs/Grundstruktur (funktionales Modell).pdf similarity index 100% rename from Grundstruktur (funktionales Modell).pdf rename to docs/Grundstruktur (funktionales Modell).pdf diff --git a/website/example.env b/example.env similarity index 100% rename from website/example.env rename to example.env diff --git a/website/init_db.py b/init_db.py similarity index 100% rename from website/init_db.py rename to init_db.py diff --git a/website/models.py b/models.py similarity index 100% rename from website/models.py rename to models.py diff --git a/website/run.py b/run.py similarity index 100% rename from website/run.py rename to run.py diff --git a/setup.py b/setup.py deleted file mode 100755 index e8b922f..0000000 --- a/setup.py +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env python3 -import os -import subprocess -import sys -from pathlib import Path - -def main(): - """Set up the project from the parent directory""" - print("Setting up the project...") - - # Get the directory where setup.py is located (project root) - project_root = Path(__file__).resolve().parent - website_dir = project_root / "website" - - # Check if virtual environment exists, create if not - venv_dir = project_root / "venv" - if not venv_dir.exists(): - print("Creating virtual environment...") - subprocess.run([sys.executable, "-m", "venv", str(venv_dir)], check=True) - - # Determine pip path based on OS - if os.name == 'nt': # Windows - pip = venv_dir / "Scripts" / "pip" - else: # Unix-like - pip = venv_dir / "bin" / "pip" - - # Install dependencies - print("Installing dependencies...") - subprocess.run([str(pip), "install", "-r", str(website_dir / "requirements.txt")], check=True) - - # Build CSS - print("Building CSS with Tailwind...") - if os.name == 'nt': # Windows - python = venv_dir / "Scripts" / "python" - else: # Unix-like - python = venv_dir / "bin" / "python" - - subprocess.run([str(python), str(website_dir / "build_css.py")], check=True) - - print(""" -Setup completed successfully! - -To run the development server: -1. Activate the virtual environment: - - Windows: .\\venv\\Scripts\\activate - - Unix/MacOS: source venv/bin/activate -2. Run the Flask application: - - cd website - - python run.py - """) - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/website/static/css/assistant.css b/static/css/assistant.css similarity index 100% rename from website/static/css/assistant.css rename to static/css/assistant.css diff --git a/website/static/css/base-styles.css b/static/css/base-styles.css similarity index 100% rename from website/static/css/base-styles.css rename to static/css/base-styles.css diff --git a/website/static/css/main.css b/static/css/main.css similarity index 100% rename from website/static/css/main.css rename to static/css/main.css diff --git a/website/static/css/neural-network-background.css b/static/css/neural-network-background.css similarity index 100% rename from website/static/css/neural-network-background.css rename to static/css/neural-network-background.css diff --git a/website/static/css/src/input.css b/static/css/src/input.css similarity index 100% rename from website/static/css/src/input.css rename to static/css/src/input.css diff --git a/website/static/css/style.css b/static/css/style.css similarity index 100% rename from website/static/css/style.css rename to static/css/style.css diff --git a/website/static/d3-extensions.js b/static/d3-extensions.js similarity index 100% rename from website/static/d3-extensions.js rename to static/d3-extensions.js diff --git a/ChatGPT Image 20. Apr. 2025, 09_02_47.png b/static/example.png similarity index 100% rename from ChatGPT Image 20. Apr. 2025, 09_02_47.png rename to static/example.png diff --git a/website/static/img/favicon-gen.py b/static/img/favicon-gen.py similarity index 100% rename from website/static/img/favicon-gen.py rename to static/img/favicon-gen.py diff --git a/website/static/img/favicon.svg b/static/img/favicon.svg similarity index 100% rename from website/static/img/favicon.svg rename to static/img/favicon.svg diff --git a/website/static/js/main.js b/static/js/main.js similarity index 100% rename from website/static/js/main.js rename to static/js/main.js diff --git a/website/static/js/modules/chatgpt-assistant.js b/static/js/modules/chatgpt-assistant.js similarity index 100% rename from website/static/js/modules/chatgpt-assistant.js rename to static/js/modules/chatgpt-assistant.js diff --git a/website/static/js/modules/mindmap-page.js b/static/js/modules/mindmap-page.js similarity index 100% rename from website/static/js/modules/mindmap-page.js rename to static/js/modules/mindmap-page.js diff --git a/website/static/js/modules/mindmap.js b/static/js/modules/mindmap.js similarity index 100% rename from website/static/js/modules/mindmap.js rename to static/js/modules/mindmap.js diff --git a/website/static/mindmap.js b/static/mindmap.js similarity index 100% rename from website/static/mindmap.js rename to static/mindmap.js diff --git a/website/static/neural-network-background.js b/static/neural-network-background.js similarity index 100% rename from website/static/neural-network-background.js rename to static/neural-network-background.js diff --git a/website/static/style.css b/static/style.css similarity index 100% rename from website/static/style.css rename to static/style.css diff --git a/website/static/three.min.js b/static/three.min.js similarity index 100% rename from website/static/three.min.js rename to static/three.min.js diff --git a/website/templates/admin.html b/templates/admin.html similarity index 100% rename from website/templates/admin.html rename to templates/admin.html diff --git a/website/templates/agb.html b/templates/agb.html similarity index 100% rename from website/templates/agb.html rename to templates/agb.html diff --git a/website/templates/base.html b/templates/base.html similarity index 100% rename from website/templates/base.html rename to templates/base.html diff --git a/website/templates/datenschutz.html b/templates/datenschutz.html similarity index 100% rename from website/templates/datenschutz.html rename to templates/datenschutz.html diff --git a/website/templates/errors/403.html b/templates/errors/403.html similarity index 100% rename from website/templates/errors/403.html rename to templates/errors/403.html diff --git a/website/templates/errors/404.html b/templates/errors/404.html similarity index 100% rename from website/templates/errors/404.html rename to templates/errors/404.html diff --git a/website/templates/errors/429.html b/templates/errors/429.html similarity index 100% rename from website/templates/errors/429.html rename to templates/errors/429.html diff --git a/website/templates/errors/500.html b/templates/errors/500.html similarity index 100% rename from website/templates/errors/500.html rename to templates/errors/500.html diff --git a/website/templates/impressum.html b/templates/impressum.html similarity index 100% rename from website/templates/impressum.html rename to templates/impressum.html diff --git a/website/templates/index.html b/templates/index.html similarity index 100% rename from website/templates/index.html rename to templates/index.html diff --git a/website/templates/layout.html b/templates/layout.html similarity index 100% rename from website/templates/layout.html rename to templates/layout.html diff --git a/website/templates/login.html b/templates/login.html similarity index 100% rename from website/templates/login.html rename to templates/login.html diff --git a/website/templates/mindmap.html b/templates/mindmap.html similarity index 100% rename from website/templates/mindmap.html rename to templates/mindmap.html diff --git a/website/templates/my_account.html b/templates/my_account.html similarity index 100% rename from website/templates/my_account.html rename to templates/my_account.html diff --git a/website/templates/profile.html b/templates/profile.html similarity index 100% rename from website/templates/profile.html rename to templates/profile.html diff --git a/website/templates/register.html b/templates/register.html similarity index 100% rename from website/templates/register.html rename to templates/register.html diff --git a/website/templates/search.html b/templates/search.html similarity index 100% rename from website/templates/search.html rename to templates/search.html diff --git a/website/templates/settings.html b/templates/settings.html similarity index 100% rename from website/templates/settings.html rename to templates/settings.html diff --git a/website/utils/__init__.py b/utils/__init__.py similarity index 100% rename from website/utils/__init__.py rename to utils/__init__.py diff --git a/website/utils/__pycache__/__init__.cpython-311.pyc b/utils/__pycache__/__init__.cpython-311.pyc similarity index 100% rename from website/utils/__pycache__/__init__.cpython-311.pyc rename to utils/__pycache__/__init__.cpython-311.pyc diff --git a/website/utils/__pycache__/db_fix.cpython-311.pyc b/utils/__pycache__/db_fix.cpython-311.pyc similarity index 100% rename from website/utils/__pycache__/db_fix.cpython-311.pyc rename to utils/__pycache__/db_fix.cpython-311.pyc diff --git a/website/utils/__pycache__/db_rebuild.cpython-311.pyc b/utils/__pycache__/db_rebuild.cpython-311.pyc similarity index 100% rename from website/utils/__pycache__/db_rebuild.cpython-311.pyc rename to utils/__pycache__/db_rebuild.cpython-311.pyc diff --git a/website/utils/__pycache__/db_test.cpython-311.pyc b/utils/__pycache__/db_test.cpython-311.pyc similarity index 100% rename from website/utils/__pycache__/db_test.cpython-311.pyc rename to utils/__pycache__/db_test.cpython-311.pyc diff --git a/website/utils/__pycache__/server.cpython-311.pyc b/utils/__pycache__/server.cpython-311.pyc similarity index 100% rename from website/utils/__pycache__/server.cpython-311.pyc rename to utils/__pycache__/server.cpython-311.pyc diff --git a/website/utils/__pycache__/user_manager.cpython-311.pyc b/utils/__pycache__/user_manager.cpython-311.pyc similarity index 100% rename from website/utils/__pycache__/user_manager.cpython-311.pyc rename to utils/__pycache__/user_manager.cpython-311.pyc diff --git a/website/utils/db_fix.py b/utils/db_fix.py similarity index 100% rename from website/utils/db_fix.py rename to utils/db_fix.py diff --git a/website/utils/db_rebuild.py b/utils/db_rebuild.py similarity index 100% rename from website/utils/db_rebuild.py rename to utils/db_rebuild.py diff --git a/website/utils/db_test.py b/utils/db_test.py similarity index 100% rename from website/utils/db_test.py rename to utils/db_test.py diff --git a/website/utils/server.py b/utils/server.py similarity index 100% rename from website/utils/server.py rename to utils/server.py diff --git a/website/utils/user_manager.py b/utils/user_manager.py similarity index 100% rename from website/utils/user_manager.py rename to utils/user_manager.py diff --git a/website/README.md b/website/README.md deleted file mode 100644 index cf56801..0000000 --- a/website/README.md +++ /dev/null @@ -1,134 +0,0 @@ -# MindMapProjekt - Roadmap - -## Projektübersicht -Das MindMapProjekt ist eine interaktive Plattform zum Visualisieren, Erforschen und Teilen von Wissen. Das Projekt wird umfassend überarbeitet, um ein modernes, benutzerfreundliches Design und erweiterte Funktionalitäten zu bieten. - -## Technischer Stack -- **Backend**: Python/Flask -- **Frontend**: - - Tailwind CSS für moderne UI - - SVG-Bibliotheken für Visualisierungen (D3.js) - - JavaScript/Alpine.js für interaktive Komponenten -- **Datenbank**: SQLite mit SQLAlchemy -- **KI-Integration**: OpenAI API für intelligente Assistenz - -## Installation und Verwendung - -### Installation -1. Repository klonen -2. Virtuelle Umgebung erstellen: `python -m venv venv` -3. Virtuelle Umgebung aktivieren: - - Windows: `venv\Scripts\activate` - - Unix/MacOS: `source venv/bin/activate` -4. Abhängigkeiten installieren: `pip install -r requirements.txt` -5. Datenbank initialisieren: `python TOOLS.py db:rebuild` -6. Admin-Benutzer erstellen: `python TOOLS.py user:admin` -7. Server starten: `python TOOLS.py server:run` - -### Standardbenutzer -- **Admin-Benutzer**: Username: `admin` / Passwort: `admin` -- **Testbenutzer**: Username: `user` / Passwort: `user` - -### Verwaltungswerkzeuge mit TOOLS.py -Das Projekt enthält ein zentrales Verwaltungsskript `TOOLS.py`, das verschiedene Hilfsfunktionen bietet: - -#### Datenbankverwaltung -- `python TOOLS.py db:fix` - Reparieren der Datenbankstruktur -- `python TOOLS.py db:rebuild` - Datenbank neu aufbauen (löscht alle Daten!) -- `python TOOLS.py db:test` - Datenbankverbindung und Modelle testen -- `python TOOLS.py db:stats` - Datenbankstatistiken anzeigen - -#### Benutzerverwaltung -- `python TOOLS.py user:list` - Alle Benutzer anzeigen -- `python TOOLS.py user:create -u USERNAME -e EMAIL -p PASSWORD [-a]` - Neuen Benutzer erstellen -- `python TOOLS.py user:admin` - Admin-Benutzer erstellen (admin/admin) -- `python TOOLS.py user:reset-pw -u USERNAME -p NEWPASSWORD` - Benutzerpasswort zurücksetzen -- `python TOOLS.py user:delete -u USERNAME` - Benutzer löschen - -#### Serververwaltung -- `python TOOLS.py server:run [--host HOST] [--port PORT] [--no-debug]` - Entwicklungsserver starten - -Für detaillierte Hilfe: `python TOOLS.py -h` - -## Roadmap der Überarbeitung - -### Phase 1: Grundlegende Infrastruktur ✅ -- [x] Bestandsaufnahme des aktuellen Projekts -- [x] Erstellung der Roadmap -- [x] Aktualisierung der Abhängigkeiten -- [x] Integration von Tailwind CSS -- [x] Einrichtung der SVG-Bibliotheken (D3.js) -- [x] Favicon erstellen -- [x] Setup-Skript für einfache Installation - -### Phase 2: Design-Überarbeitung 🔄 -- [x] Implementierung des Dark Mode -- [x] Erstellung eines modernen, minimalistischen UI mit Tech-Ästhetik -- [x] Responsive Design für alle Geräte -- [ ] Gestaltung der Landing Page mit großer Typografie - -### Phase 3: Mindmap-Funktionalitäten 🔄 -- [x] Verbesserte Visualisierung mit SVG und D3.js -- [x] Implementierung der Mouseover-Funktion -- [x] Entwicklung der Suchfunktion für Knoten -- [ ] Tagging-System für Inhalte -- [ ] Quellenmanagement und -verlinkung -- [ ] Upload-Funktionalität an Knotenpunkten - -### Phase 4: Kernseitenentwicklung -- [ ] Überarbeitung der Startseite mit neuen Features -- [ ] Entwicklung der "Wer sind wir?"-Seite -- [ ] Implementierung von Impressum und Datenschutzerklärung -- [ ] Erstellung der Kontaktseite mit FAQs -- [ ] Überarbeitung des Benutzerprofilbereichs - -### Phase 5: Community-Features -- [ ] Entwicklung des Autorenbereichs -- [ ] Implementierung von Community-Bereichen für Themenbereiche -- [ ] Verbesserter Kommentarbereich -- [ ] Benutzerrechtemanagement - -### Phase 6: KI-Integration -- [ ] Implementierung des Frage-Antwort-Systems -- [ ] KI-generierte Themeneinleitungen -- [ ] Intelligente Suchunterstützung -- [ ] Geführte Pfade durch Themenbereiche -- [ ] Vorgeschlagene Chat-Möglichkeiten - -### Phase 7: Benutzerprofilfunktionen -- [ ] Speichern von Thematiken -- [ ] Persönliche Mindmap/Pinboard -- [ ] Beitragsmanagement -- [ ] Benutzerstatistiken und -aktivitäten - -### Phase 8: Testing und Optimierung -- [ ] Umfassende Tests aller Funktionen -- [ ] Performance-Optimierung -- [ ] SEO-Implementierung -- [ ] Barrierefreiheit prüfen und verbessern - -### Phase 9: Dokumentation und Einführung -- [ ] Erstellung von Benutzeranleitungen -- [ ] Entwicklerdokumentation -- [ ] Administratorenhandbuch -- [ ] Guided Tour für neue Benutzer - -## Aktueller Status -- **Phase 1**: ✅ Abgeschlossen -- **Phase 2**: 🔄 In Bearbeitung (75% abgeschlossen) -- **Phase 3**: 🔄 In Bearbeitung (50% abgeschlossen) - -## Aktuelle Fortschritte -- Grundlegende UI modernisiert mit Tailwind CSS und Dark Mode -- Neues Favicon für bessere visuelle Identität erstellt -- Setup-Prozess vereinfacht mit einem Shell-Skript -- Mindmap-Visualisierung komplett überarbeitet mit D3.js für eine interaktivere Erfahrung -- Responsive Design für optimale Darstellung auf allen Geräten - -## Nächste Schritte -- Fertigstellung der Landing Page -- Erstellung der "Wer sind wir?"-Seite -- Implementierung des Tagging-Systems für Gedanken -- Verbesserung der Gedankenansicht im Mindmap-Bereich - -*Zuletzt aktualisiert: 01.06.2024* \ No newline at end of file diff --git a/website/cookies.txt b/website/cookies.txt deleted file mode 100644 index c31d989..0000000 --- a/website/cookies.txt +++ /dev/null @@ -1,4 +0,0 @@ -# Netscape HTTP Cookie File -# https://curl.se/docs/http-cookies.html -# This file was generated by libcurl! Edit at your own risk. - diff --git a/website/instance/mindmap.db b/website/instance/mindmap.db deleted file mode 100644 index 12d2fece7052ef198ea98cd6b153ee5a47a9b593..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49152 zcmeI)+iM%y9S86kNwz#roY|#oL)TS6d8B4@RBY)5v|xGjje99e^< zkuo!K;ykp->F)o~_ig`!(ueLtA^TJoN-6ZE6bjw9LLWAzE$vIs8B4ZCm29^x0hjNf z+g#4=^P3szjK^p5(W(_xY&ELw{S|b*F^6#e-j5jkNbF0 zSo&msM*fFzVX`b-`nmjT`KL3#zqm8~i>Wu$KS=&+vYgx>mlVq(009U<;9LkCEKVm= zw{MHDnt@?9sN1q>HK?~bJN2My_@N@S~eceO;uZAETOOW``l zCgruQ(t}cktgUa6wa2Tg3uIdA7dU41My33)SlK2krEPMfm(Kz@PBhQ+SYEG`$`97~ zM*VH(Nu{)0s+895l{QJ!aqVi;Xjgd#rHpkE6MG@GU8sx_nvu(X}uDR;$^hZqR$1j_~#ta?LSPR?7`o zYO+;&%5(>XohJ1IquD0+S-7^!4@+lo@A%ZKjwvY;lm88KIBLD(B2nYZdh)NPlF8Kk zy!i1-2-T04$M#QmCptG3VT-OiL9f5zm?odZ;n4=&GhB;SeXHfsk$bu2Q6r#smHl8F z48kbMd+TePTa_X^R!GNno^_6o$;0N7$7|(Bk4xmnag`TH-*4FUc$)}qZ}G@Op`X>@ zaWD{yTT_#%_4#oJLBG7is#ep{dFj>sWHPn5D1I^#jU#P@XPTp}d-KWBvFxoqA)0=x zn$Zt8GS!}J5suny0Y{BYT&`_EgR?H`qvVM+K3tJP?ERf~UR^!I{XxS|)L$o`Qz zOmkXvPdT`{+lgdqZcaRS7Me%Cw<0qW5&y`l6QbZ6&EvMDhh^G^$G$%X_FIl{T7!-f zMRud13bF5q>G^I$Or~aM#aFk&ws8smj73_)mz>Z5zB>0n*5#*Pb{>I)gK>z{}fB*y_009U<00Izz00h21 zfgi?`LTawNJ!MmGpIyrIgFF0XiCvd&o4a;Rz3JBtHIu!mW)(JFZ!K>>`R>ZbmbUtQ zd2Rj4-RnA4as^5)(8ytrPgsTn<;F6dcZ z)ihemXLOxrvjsD)=W?c^SgOKmr)rjIWlcM46b#eI=JHxDPgOfhX*Vu1g%7&hQh1#p zd^xoi!QJgAruWgkw%*Qe?(Kbe-OOdO8BNzzofTlKmd5n*mZ{fFJ)g-dilJM&W!2J} zqGmOf=4&}a)pJJ1vd@4RG@~a)Osd(z}vcqBj|8qh9v;4XIySG~}lm-C^KmY;|fB*y_ z009U<00Izzz}W@fjn9dZn<(P%#TUbV{^0!tvG?L19QOGKm-74nC*_|A@?YgY$-j|* zDgTVkV1fVyAOHafKmY;|fB*y_009U<;Oz@snoI~+r3civ>W)?>_AW9e0Nf1!@zg&PEq4cKqj#x677Mml&NITf^=SCr_y72d_VMZP)P$yK|gW zsKExPef?>$q$+A=QPCGwov7)XY5rKsv&Ru=2lQah|+nWggD9u2}#Gg+m0=|h<<4b3l*jrzXt>@FNv^O~kDFK2Qa z_m>Z@h|J__@tXL(?&ZzPSGdWt$2^E@ut6c41~1&DjRtL!yYzX-_XD4@QTrS}AT{R1 z203&Cqd{t~Kl6yqLCcG!pziFBmdFgxKmY;|fB*y_009U<00Izz00hpXz*TWlkR-7< zG4cXHLD4mZkN+pi{}R{(69gat0SG_<0uX=z1Rwwb2tWV=|9=9Bgd|Df|NqOk1o_A8 z1rr1y009U<00Izz00bZa0SG_<0>c8|k0ph!SQMpj&;siFe8>Z`!TyE6O?LxlkCK<2 z;js&%10h@;`FHtzA)C#{D7%ZlJ6n`a%>9g`3yd#EJM90z5#)c$Z-yI)c?duN0uX=z z1Rwwb2tWV=5P$##&aJ>iEG~-iSVD}8QjFjKACtf0{r|7dZHrKG2tWV=5P$##AOHaf ZKmY;|fB*!B1d<7ncmHD(2~m<_{{|5;)%gGb diff --git a/website/requirements.txt b/website/requirements.txt deleted file mode 100644 index 7db9aa5..0000000 --- a/website/requirements.txt +++ /dev/null @@ -1,14 +0,0 @@ -flask==2.2.5 -flask-login==0.6.2 -flask-wtf -email-validator -python-dotenv -werkzeug==2.2.3 -flask-sqlalchemy==3.0.5 -openai==1.3.0 -requests==2.31.0 -flask-cors==4.0.0 -gunicorn==21.2.0 -#pillow==10.0.1 -pytest==7.4.0 -pytest-flask==1.2.0 \ No newline at end of file diff --git a/website/setup.sh b/website/setup.sh deleted file mode 100755 index 32dcdf1..0000000 --- a/website/setup.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash - -# Farben für Ausgaben -GREEN='\033[0;32m' -BLUE='\033[0;34m' -RED='\033[0;31m' -YELLOW='\033[0;33m' -NC='\033[0m' # No Color - -echo -e "${GREEN}==== MindMap Projekt Setup ====${NC}" - -# Verzeichnis erstellen, wenn nicht vorhanden -echo -e "${BLUE}Überprüfe Verzeichnisstruktur...${NC}" -mkdir -p static/css/src -mkdir -p static/img -mkdir -p static/js -mkdir -p bin - -# Überprüfe, ob .env-Datei existiert und erstelle sie, wenn nicht -echo -e "${BLUE}Überprüfe .env-Datei...${NC}" -if [ ! -f ".env" ]; then - echo -e "${YELLOW}Keine .env-Datei gefunden. Erstelle neue .env-Datei aus example.env...${NC}" - cp example.env .env - echo -e "${YELLOW}Bitte bearbeiten Sie die .env-Datei und setzen Sie die erforderlichen Werte.${NC}" - echo -e "${YELLOW}Insbesondere müssen Sie einen gültigen API-Schlüssel für OpenAI setzen.${NC}" -else - echo -e "${GREEN}.env-Datei existiert bereits.${NC}" -fi - -# Python-Abhängigkeiten installieren -echo -e "${BLUE}Installiere Python-Abhängigkeiten...${NC}" -pip install -r requirements.txt - -# Zusätzliche Abhängigkeiten für Favicon-Erstellung -echo -e "${BLUE}Installiere Abhängigkeiten für Favicon-Erstellung...${NC}" -pip install pillow cairosvg - -# Tailwind CSS mit Python-Skript kompilieren -echo -e "${BLUE}Kompiliere Tailwind CSS...${NC}" -python build_css.py - -# Favicon generieren -echo -e "${BLUE}Generiere Favicon...${NC}" -python static/img/favicon-gen.py - -# Erstelle die Datenbank -echo -e "${BLUE}Initialisiere die Datenbank...${NC}" -python init_db.py - -echo -e "${GREEN}==== Setup abgeschlossen ====${NC}" -echo -e "${GREEN}Starte die Anwendung mit: python run.py${NC}" -echo -e "${GREEN}Für Entwicklung mit CSS-Autoreload: python dev.py${NC}" \ No newline at end of file diff --git a/website/tailwind.config.js b/website/tailwind.config.js deleted file mode 100644 index b2b3908..0000000 --- a/website/tailwind.config.js +++ /dev/null @@ -1,100 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -module.exports = { - darkMode: 'class', - content: [ - "./templates/**/*.{html,jinja,jinja2}", - "./static/**/*.js" - ], - theme: { - extend: { - colors: { - primary: { - 50: '#eef5ff', - 100: '#d9e7ff', - 200: '#bcd4ff', - 300: '#8eb8ff', - 400: '#5a93ff', - 500: '#2970ff', - 600: '#1654f6', - 700: '#1142e2', - 800: '#1336b7', - 900: '#153390', - }, - secondary: { - 50: '#f5f2ff', - 100: '#ece8ff', - 200: '#ddd5ff', - 300: '#c4b3ff', - 400: '#a685ff', - 500: '#8b55ff', - 600: '#7833f8', - 700: '#6924e2', - 800: '#5720b8', - 900: '#481c96', - }, - dark: { - 50: '#f8f8f9', - 100: '#e7e7ea', - 200: '#d1d1d8', - 300: '#aeaeba', - 400: '#8a8a99', - 500: '#6f6f7e', - 600: '#5b5b69', - 700: '#49494f', - 800: '#2c2c33', - 900: '#18181c', - } - }, - fontFamily: { - 'sans': ['Inter', 'ui-sans-serif', 'system-ui', '-apple-system', 'BlinkMacSystemFont', 'sans-serif'], - 'mono': ['JetBrains Mono', 'ui-monospace', 'SFMono-Regular', 'monospace'] - }, - backgroundImage: { - 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))', - 'gradient-conic': 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))', - 'gradient-tech': 'linear-gradient(to right, var(--tw-gradient-stops))', - }, - animation: { - 'pulse-slow': 'pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite', - 'float': 'float 6s ease-in-out infinite', - }, - keyframes: { - float: { - '0%, 100%': { transform: 'translateY(0)' }, - '50%': { transform: 'translateY(-10px)' }, - } - }, - typography: { - DEFAULT: { - css: { - color: 'rgb(31, 41, 55)', - a: { - color: 'rgb(41, 112, 255)', - '&:hover': { - color: 'rgb(22, 84, 246)', - }, - }, - }, - }, - dark: { - css: { - color: 'rgb(229, 231, 235)', - a: { - color: 'rgb(90, 147, 255)', - '&:hover': { - color: 'rgb(142, 184, 255)', - }, - }, - }, - }, - }, - boxShadow: { - 'soft': '0 4px 15px rgba(0, 0, 0, 0.05)', - 'glow': '0 0 15px rgba(32, 92, 245, 0.3)' - } - }, - }, - plugins: [ - // Typography and forms plugins removed, we'll implement their basic functionality in CSS - ], -} \ No newline at end of file