{"id":20394550,"url":"https://github.com/cafca/mietlimbo","last_synced_at":"2025-05-08T11:34:26.859Z","repository":{"id":48019190,"uuid":"75283014","full_name":"cafca/mietlimbo","owner":"cafca","description":"A web-based assistant for Berlin's rent cap","archived":false,"fork":false,"pushed_at":"2021-08-10T23:18:33.000Z","size":15117,"stargazers_count":2,"open_issues_count":31,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2023-03-22T13:00:54.539Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://mietlimbo.de","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cafca.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-12-01T10:45:12.000Z","updated_at":"2021-08-11T19:59:44.000Z","dependencies_parsed_at":"2022-08-12T16:50:29.251Z","dependency_job_id":null,"html_url":"https://github.com/cafca/mietlimbo","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cafca%2Fmietlimbo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cafca%2Fmietlimbo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cafca%2Fmietlimbo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cafca%2Fmietlimbo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cafca","download_url":"https://codeload.github.com/cafca/mietlimbo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224727092,"owners_count":17359533,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-15T03:53:34.469Z","updated_at":"2024-11-15T03:53:35.301Z","avatar_url":"https://github.com/cafca.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mietlimbo\n\nAlle müssen drunter\n\nDie Mietpreisbreme (MPB) soll in Berlin dafür sorgen, dass die Preise für Wohnraum nicht weiterhin mit atemberaubendem Tempo steigen (ca 45% in 10 Jahren!). In der Praxis wird dieses rechtliche Instrument allerdings kaum genutzt, wie auch in den Medien berichtet wird. Obwohl es Informationsangebote der Stadt Berlin gibt, kostet eine Mietminderung den Mieter weiterhin viel Zeit, Wissen und Initiative. Es fehlt eine interaktive Anleitung, die Schritt für Schritt durch den vollständigen Prozess leitet und an entsprechenden Stellen Möglichkeiten zum Austausch mit Gleichgestellten bietet. Die Mietpreisbremse braucht endlich den Eindruck von Machbarkeit.\n\nMomentan versuche ich selbst, meine überhöhte Miete durch Durchsetzung der MPB zu verringern, und habe nun schon viele Stunden damit verbracht, die rechtliche Grundlage zu verstehen. Ich möchte nun mein neues Wissen weitergeben und eine Webapp entwickeln, die es leichter macht, selbst eine Mietminderung durchzusetzen.\n\nDie mietlimbo-app wird Mieter dabei unterstützen, selbst eine Mietminderung auf Basis der MPB durchzusetzen, indem sie an die bestehenden Online-Angebote der Stadt Berlin anknüpft. Diese Unterstützung besteht aus einer Kombination von Informationsangeboten, sowohl im Allgemeinen, als auch zu Details des Prozesses, einem interaktiven Formular zum Erstellen eines Musterbriefs (“Rüge”), durch welchen der Prozess der Mietminderung in Gang gesetzt wird, sowie einer Frage\u0026Antwort-Plattform auf der sich Mieter zu ihren Erfahrungen bei der Mietminderung austauschen können.\n\nIn der Gestaltung des Angebots möchte ich einen Fokus auf Nutzerfreundlichkeit setzen, da rechtliche Angelegenheiten an sich auf viele Menschen abschreckend und einschüchternd wirken. Das Angebot wird Nutzern ein Gefühl von Machbarkeit und Ermächtigung vermitteln, ein Faktor, der einer flächendeckenden Wahrnehmung der Möglichkeiten der Mietpreisbremse bisher im Wege steht.\n\n## Installation\n\nMietlimbo ist eine mit dem React-Framework geschriebene Web App mit einem Python Backend. Hier möchte ich beschreiben, wie ihr alle Komponenten installieren und bauen könnt.\n\n1. Falls noch nicht vorhanden, Python3, Pipenv, und Node.js mit einem Package Manager installieren. Für Homebrew auf Mac zum Beispiel:\n\n   `$ brew install python3 pipenv node`\n\n2. Jetzt können die Quellen geladen werden\n\n   `$ git clone git@github.com:ciex/mietlimbo.git`\n\n3. Legt ein Virtual Environment für das Backend an.\n\n   `$ cd mietlimbo/api`\n\n   `$ pipenv sync`\n\n4. Das Backend ist jetzt fertig installiert. Mit `pipenv shell` kann die Umgebung aktiviert werden. Oder direkt den Entwicklungs-Server aus dem `api/`-Verzeichnis heraus starten:\n\n   `$ cd api`\n\n   `$ MIETLIMBO_CONFIG=development_config.py pipenv run python main.py`\n\nDer Entwicklungs-Server ist nun über `http://localhost:8000/` erreichbar und kann im Hintergrund weiterlaufen.\n\n6. Um jetzt auch die Web App nutzen zu können, zunächst ein neues Terminal öffnen und dort in den `client`-Ordner wechseln.\n\n   `$ cd ../client`\n\n   `$ yarn install`\n\n7. Jetzt kann auch der Entwicklungs-Server für das Frontend gestartet werden.\n\n   `$ yarn start`\n\nDie Entwicklungs-Version von mietlimbo öffnet sich jetzt in eurem Webbrowser.\n\n### Installation auf einem Server\n\nEs gibt verschiedene Möglichkeiten, mietlimbo über einen Server laufen zu lassen. Je nachdem, was auf eurem Server schon installiert ist werden sich die Schritte zur Einrichtung unterscheiden. Vor allem braucht ihr einen Webserver wie Nginx, der statische Ressourcen zur Verfügung stellt und über WSGI auch den Backend-Server verfügbar macht. Im Weiteren empfehle ich ein SSL-Zertifikat von einem Anbieter wie LetsEncrypt, da über mietlimbo auch persönliche Daten übertragen werden.\n\nAußerdem sollten für den Server-Betrieb zwei Umgebungs-Variablen gesetzt sein:\n`MIETSPIEGEL_SECRET` sollte einen zufälligen Wert enhtalten und `MIETSPIEGEL_CONFIG`\nden absoluten Pfad der Datei `src/api/production_config.py`.\n\nFür beides kann ich die Anleitungen von DigitalOcean empfehlen:\n\n- [How To Secure Nginx with Let's Encrypt on Ubuntu 16.04](https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-16-04)\n- [How To Serve Flask Applications with uWSGI and Nginx on Ubuntu 16.04](https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-uwsgi-and-nginx-on-ubuntu-16-04)\n\nMit dem Script `scripts/deploy.sh` lässt sich, falls mietlimbo aus dem Ordner `/var/www/mietlimbo/` vom Webserver geladen wird, die neuste Version installieren und dabei die alte überschreiben.\n\nAuf [community.mietlimbo.de](https://community.mietlimbo.de/) läuft außerdem eine [Discourse](https://www.discourse.org/)-Instanz, auf die von den Eingabekomponenten für die Merkmale aus verlinkt wird.\n\n## Mitmachen\n\nmietlimbo ist offen für Verbesserungen, Vorschläge, Pull Requests. Kontaktiert mich auch gerne unter [hallo@mietlimbo.de](mailto:hallo@mietlimbo.de), wenn ihr Fragen oder Anmerkungen habt.\n\n### Struktur des Projekts\n\nWie auch in der Installations-Anleitung oben zu sehen ist das Projekt in Client und Server aufgeteilt.\n\n#### Client\n\nIn den Dateien [`src/App.js`](https://github.com/ciex/mietlimbo/blob/master/client/src/App.js) und [`src/index.js`](https://github.com/ciex/mietlimbo/blob/master/client/src/index.js) findet ihr das Setup, mit dem sich der Client später im Browser-DOM installiert.\n\nDas zentrale Modul für mietlimbo ist [`src/Assistant/Assistant.js`](https://github.com/ciex/mietlimbo/blob/master/client/src/Assistant/Assistant.js). Hierin findet ihr den Wrapper, der den Zustand des Assistent auf höchster Ebene verwaltet:\n\n- Dateninitialisierung und Datenspeicherung in Local Storage\n- Aktuelle Stage (Seite des Assistenten-Formulars)\n- Übergang zwischen Stages\n- Neue Eingaben speichern\n- Overflächliche Datenvalidierung (existiert ein benötigter Wert?)\n- Update des Endergebnisses\n\nIn diesen Wrapper werden je nach aktueller Stage weitere Eingabe- oder Präsentationskomponenten gerendert. Diese finden sich in den drei Unter-Verzeichnissen von `src/Assistant/`.\n\n    ├── build\t\t\t\t\tStatische Build-Dateien, die\n    │   └── static \t\t\t\t\tauf dem Webserver öffentlich gemacht\n    │       ├── css \t\t\t\twerden können =\u003e `yarn run build`\n    │       ├── js\n    │       └── media\n    ├── public \t\t\t\t\tStatische Dateien für Entwicklung\n    ├── src\n    │   ├── Assistant \t\t\t\tHauptkomponente Online-Assistent\n    │   │   ├── ApartmentFeatureInputs \t\tZur Abfrage von Wohnungs-Merkmalen\n    │   │   ├── GenericInputs \t\t\tZur Abfrage von allgemeinen Fragen\n    │   │   └── Presentation \t\t\tZur Ergebnis-Darstellung\n    │   ├── Graphics \t\t\t\tIllustrationen, etc.\n    │   ├── I18n \t\t\t\t\tÜbersetzungen als JSON-Datei\n    │   └── Pages \t\t\t\t\tInhalte, die nicht direkt Teil des\n    │\t\t\t\t\t\tAssistenten sind.\n    └── translations \t\t\t\tHilfs-Ordner zur Erstellung der\n        └── messages \t\t\t\tÜbersetzungs-Dateien\n            └── src\n\n### API-Backend\n\nDas API-Backend ist als Flask-Server in [`main.py`](https://github.com/ciex/mietlimbo/blob/master/api/main.py) implementiert, der JSON-codierte Daten über HTTP-Endpunkte anbietet. Die Datei [`model.py`](https://github.com/ciex/mietlimbo/blob/master/api/model.py) lädt entsprechende Daten aus `data/mietspiegel.json` und `data/strassenverzeichnis.sqlite`. Diese wurden mit den Skripten im Verzeichnis `Crawler` erstellt.\n\nKann eine Anfrage an den Server nicht mit den genannten Daten aus dem Model beantwortet werden, geht der Server in ein Fallback über und versucht, über den Crawler ein aktuelles Ergebnis von der Seite der Senatsverwaltung einzuholen.\n\n    ├── crawler \t\t\tStrassenverzeichnis von Senatsverwaltung laden\n    │   ├── README.md\n    │   ├── crawler.py\n    │   └── parser.py\n    ├── data\n    │   ├── README.md\n    │   ├── mietspiegel.json \tMietspiegeltabelle, per Hand erstellt\n    │   └── strassenverzeichnis.sqlite \tAutomatisch erstelltes Strassenverzeichnis\n    ├── development_config.py\n    ├── logger.py\n    ├── main.py \t\t\tBackend-Server\n    ├── model.py \t\t\tDatenmodell für Mietspiegel und Strassen\n    ├── production_config.py\n    ├── tests\n    │   ├── test_flask.py\n    │   └── test_parser.py\n    ├── uwsgi.ini \t\t\tKonfiguration für uWSGI-Server. Pfade anpassen!\n    └── wsgi.py \t\t\tWSGI entry script\n\n# Changelog\n\n| Version | Beschreibung                 |\n| ------- | ---------------------------- |\n| 2.3.0   | Javascript Libraries upgrade |\n\n# Anmerkungen\n\nZum Erstellen des Straßenverzeichnis-Datensatzes wurde der Datensatz\n[\"Straßenverzeichnis\"](https://daten.berlin.de/datensaetze/stra%C3%9Fenverzeichnis)\nverwendet, welcher von Berlin Open Data unter Creative Commons-Lizenz mit\nNamensnennung angeboten wird.\n\nLändericons für Sprachumstellung von:\n\n- Germany free icon - Icon made by Freepik from flaticon.com\n- United Kingdom free icon - Icon made by Freepik from flaticon.com\n\nGefördert vom Bundesministerium für Bildung und Forschung\n\n![](https://raw.githubusercontent.com/ciex/mietlimbo/master/client/src/Graphics/logo-bmbf.svg?sanitize=true)\n![](https://raw.githubusercontent.com/ciex/mietlimbo/master/client/src/Graphics/logo-okfn.svg?sanitize=true)\n\n# Lizenz\n\nCopyright 2016-2019 Vincent Ahrend\nQuellen verfügbar unter GNU Affero General Public License v3, siehe LICENSE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcafca%2Fmietlimbo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcafca%2Fmietlimbo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcafca%2Fmietlimbo/lists"}