Easy-to-manage touch screens
무료 오픈소스 터치스크린으로 USB 설정 가이드, 드래그‑드롭 편집기, 로컬 제어를 제공하며 Home Assistant용으로 제작되었습니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Euer privates digitales Erinnerungsbuch — eine Web-App für Paare, um gemeinsame Erinnerungen, Fotos und Meilensteine festzuhalten, visualisiert als wachsender interaktiver Baum. Die App ist nach Paaren getrennt: jedes Paar hat seine eigenen Erinnerungen, Fotos und Einstellungen und sieht nichts von den anderen. Eine offene Registrierung gibt es bewusst nicht — neue Konten entstehen nur über einen Einladungscode, den der Betreiber mit python scripts/create_invite.py erzeugt. Screenshots DashboardREADME 전문 보기 ↗
Euer privates digitales Erinnerungsbuch — eine Web-App für Paare, um gemeinsame Erinnerungen, Fotos und Meilensteine festzuhalten, visualisiert als wachsender interaktiver Baum.
Die App ist nach Paaren getrennt: jedes Paar hat seine eigenen Erinnerungen, Fotos und Einstellungen und sieht nichts von den anderen. Eine offene Registrierung gibt es bewusst nicht — neue Konten entstehen nur über einen Einladungscode, den der Betreiber mit
python scripts/create_invite.pyerzeugt.
git clone https://github.com/User420-bit/MemoryTree.git
cd MemoryTree
# 1. Einmalig: Skript ausführbar machen
chmod +x start.sh stop.sh
# 2. App starten (erledigt beim ersten Mal alles automatisch)
./start.sh
Das Skript richtet beim ersten Start alles automatisch ein:
.venv).env-KonfigurationAuf macOS öffnet sich http://localhost:8000 automatisch im Browser. Auf Linux/Windows den Link manuell aufrufen.
Ab dem zweiten Start reicht: ./start.sh
Unter Windows läuft Memory Tree am einfachsten in einem Docker-Container — keine Python-Installation, kein venv, keine Pfad-Probleme.
# 1. Konfiguration anlegen (einmalig)
copy .env.example .env
# 2. SECRET_KEY in .env eintragen — sicheren Wert generieren mit:
docker run --rm python:3.11-slim python -c "import secrets; print(secrets.token_urlsafe(64))"
# 3. App bauen und starten
docker compose -f docker-compose.yml up --build
Anschließend http://localhost:8000 im Browser öffnen.
# In einem zweiten Terminal, während die App läuft:
docker compose -f docker-compose.yml exec app python scripts/create_users.py
# Im laufenden Terminal: Ctrl+C
# Oder aus einem anderen Terminal:
docker compose -f docker-compose.yml down
Die SQLite-Datenbank und alle hochgeladenen Bilder bleiben im Ordner
./data/ auf dem Host erhalten und überstehen jeden Container-Rebuild.
Hinweis: Die Datei
compose.yamlist die Production-Variante für den Raspberry Pi (mit Caddy als Reverse-Proxy). Für lokale Entwicklung unter Windows/macOS/Linux immerdocker-compose.ymlmit dem-f-Flag verwenden.
# Option A: Im Terminal, wo der Server läuft
CTRL+C
# Option B: Aus einem anderen Terminal
./stop.sh
Nach dem Start http://localhost:8000 im Browser öffnen.
| Benutzername | Passwort |
|---|---|
partner_a | test1234 |
partner_b | test1234 |
⚠️ Diese Zugangsdaten gelten nur wenn
DEBUG=truein der.envgesetzt ist (Standard nach Erstinstallation).
In Production (DEBUG=false) werden diese Accounts nicht automatisch angelegt — eigene Accounts überpython scripts/create_users.pyanlegen.
DenSECRET_KEYin der.env-Datei vor dem produktiven Einsatz ändern.
python scripts/create_invite.py --name "Anna & Ben" # Paar + Code anlegen
python scripts/create_invite.py --list # offene Codes anzeigen
Das Skript druckt einen Registrierungslink (/auth/register?code=…). Der Code
ist zweimal einlösbar — der erste Einlöser wird Partner A, der zweite Partner B —
und standardmäßig 30 Tage gültig.
Für einen frischen Klon lassen sich fiktive, anonyme Demo-Erinnerungen und -Meilensteine einspielen, um die App direkt vollständig auszuprobieren:
python scripts/seed_demo_data.py
⚠️ Das Skript löscht alle bestehenden Erinnerungen, Meilensteine und Fotos und ersetzt sie durch Demo-Daten. Nur in Entwicklungsumgebungen ausführen.
⇧⌘B (Shift+Cmd+B) → startet die App direkt aus VS Code.
Oder: Terminal → Aufgabe ausführen → ▶ Memory Tree starten
F5 → startet die App im Debug-Modus mit Breakpoint-Unterstützung.
memory-tree/
├── main.py # FastAPI Einstiegspunkt
├── models.py # SQLAlchemy Datenmodelle
├── database.py # DB-Verbindung & Session
├── auth.py # JWT-Authentifizierung
├── config.py # App-Konfiguration
├── schemas.py # Pydantic Request/Response Schemas
├── routers/
│ ├── auth.py # Login/Logout
│ ├── memories.py # CRUD Erinnerungen
│ ├── photos.py # Foto-Upload
│ └── milestones.py # Meilensteine
├── templates/ # Jinja2 HTML-Templates
├── static/ # CSS, JS, Bilder, Uploads
├── start.sh # App starten
├── stop.sh # App stoppen
└── requirements.txt # Python-Abhängigkeiten
| Komponente | Technologie |
|---|---|
| Backend | FastAPI (Python 3.11+) |
| Datenbank | SQLite + SQLAlchemy 2.0 |
| Templates | Jinja2 + Tailwind CSS |
| Auth | JWT (python-jose) + bcrypt |
| Visualisierung | D3.js (Baum), Leaflet.js (Karte) |
Die App wird über die .env-Datei konfiguriert:
| Variable | Beschreibung | Standard |
|---|---|---|
SECRET_KEY | JWT-Signaturschlüssel — zwingend ändern | dein-geheimer-schluessel-hier-aendern |
DATABASE_URL | SQLite-Datenbankpfad | sqlite:///./data/memory_tree.db |
ACCESS_TOKEN_EXPIRE_MINUTES | Session-Dauer in Minuten | 480 |
UPLOAD_DIR | Verzeichnis für Foto-Uploads | data/uploads |
MAX_IMAGE_SIZE | Max. Bildbreite/-höhe in Pixeln | 1920 |
Vollständige Vorlage mit allen Pflichtfeldern und Erklärungen: .env.example.
Zwingend anzupassen ist mindestens SECRET_KEY — ohne einen sicheren,
mindestens 32 Zeichen langen Wert startet die App im Production-Modus nicht.
Dieses Projekt steht unter der MIT-Lizenz.