Lokale WebApp für Endanwender benutzbar machen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich arbeite in meiner Freizeit an dem Projekt https://github.com/jedie/django-for-runners
Das ist eine Django-App um seine Laufdaten (Jogging) zu verwalten. Also interessant für Leute, die beim Laufen ihre Strecke per GPS / Laufuhr aufzeichnen.

Ich frage mich nun allerdings, wie ich die "Anwendung" am einfachsten für "Otto-Normal-Benutzer" anbieten kann.
Ziel soll dabei nicht das Internet sein, sondern mehr die "Lokale Benutzung". Wenn jemand seine Läuft im Netz veröffentlichen will, kann ja sowas die Strava oder Runtastic nutzten.

z.Z. starte ich immer den Django-Entwicklungsserver und gut. Aber das ist für Normale Benutzer IMHO zu kompliziert.
Außerdem will ich das auch selber im lokalen Netz auf meinem Server betreiben.

Um das wirklich für alle Benutzbar zu machen, müßte man wahrscheinlich die Web-App in einer "lokalen App" verpacken und einen Installer für Windows bauen usw. Aber weil ich Windows so gut wie nicht mehr nutzte, hab ich da weniger Lust zu.

Das einfachste wäre, den Django-Entwicklungsserver einfach weiter zu verwenden und fertig. Beim installieren könnte das ja ein entrypoint in der setup.py sein, sodass man das einfacher starten kann.

Aber ein "richtiger" Server wäre natürlich besser.
Vielleicht wäre es am Einfachsten sich auf eine Raspberry Pi Lösung zu fokussieren?!?

Da gibt es z.B. "HypriotOS" https://blog.hypriot.com/ - Ein minimal Debian optimiert um Docker auf dem Raspberry Pi zu betreiben.
Heißt dann, ich schaue das ich ein docker image bzw. ein docker compose setup aufsetzte und gut.

Hat jemand ein ähnliches Problem? Gibt es Meinungen/Ideen dazu?!?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
__deets__
User
Beiträge: 14480
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dieser Tage ist Electron ja der heisse Scheiss, um Browser-Apps auszuliefern. Slack, Discord, Betaflight (eine Software zur Konfiguration von Flight-Controllern fuer Kopter und Dronen) benutzen das alle.
Benutzeravatar
noisefloor
User
Beiträge: 3829
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

die Hürde ich für Windows-Nutzer IMHO eher, Python zu installieren. Ich weiß nicht, wie es aktuell ist, aber früher musst man Python nach der Installation manuell dem Suchpfad hinzufügen. Was eine nicht unbeachtliche Hürde für "normale" Win-Nutzer sein kann.

Das Prog als ZIP Datei auszuliefern, ein einen beliebigen Ort zu entpacken und dann noch ggf. eine .bat-Datei dazu zu legen, die `python3 manage.py runserver` ausführt, ist IMHO keine Hürde.

Unabhängig ist später IMHO ein Update, weil du ja die Daten des Nutzer migrieren musst. Inkl. mögliche Updates an den Modellen in der models.py und der DB-Struktur. Das ist IMHO nicht einfach zu lösen.

Ich nutze ja auch ein paar selbstgeschriebene Django-Sachen, um meine Daten für meine Hobbys zu verwalten - aber Django ist IMHO keine gute Plattform, um es als lokal installierbare App "für die Masse" auszurollen, sorry to say so.

Gruß, noisefloor
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Electron: Hm ich weiß nicht. Mir scheint der Aufwand beim einarbeiten dann doch recht hoch.

Also Datenmigration sehe ich weniger als Problem. Das macht das Django ORM doch super.

ZIP Datei und Batch/Shell-Script ist eine Idee: Aber dann hat man Probleme mit Abhängigkeiten. Das hatte ich vor zig Jahren mit PyLucid gemacht und nannte sich "PyLucid-Standalone": Man kopiert einfach alle Abhängigkeiten zusammen. Ein bisschen wie ein portables virtualenv nur ohne Interpreter. Aber ist halt auch nur die halbe Miete. Wenn der Python Interpreter da ist, kann man auch direkt ein normales virtualenv machen. Per Bratch/Shell-Skript. Das mache ich bei PyHardLinkBackup: https://github.com/jedie/PyHardLinkBackup#installation

So könnte ich das auch bei Django-ForRunners machen... Aber die eigentliche Frage ist: Django-Dev.-Server weiter verwenden? Ist natürlich das einfachste.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
__deets__
User
Beiträge: 14480
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wie hoch der Aufwand fuer Electron ist kann ich nicht sagen, probiert hab ich es noch nicht. Aber das ist die "Traumloesung", weil halt alles in einem Paket ist.

Den Dev-Server nicht zu verwenden waere voellig ueberkandidelt. Der tut doch was er soll. Das man in Produktionsszenarien nginx oder Apache verwendet hat ja was mit der Durchsatzoptimierung zu tun. Fuer tausende konkurrierende Zugriffe. Das Problem hast du lokal doch nicht.
Benutzeravatar
noisefloor
User
Beiträge: 3829
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Also Datenmigration sehe ich weniger als Problem. Das macht das Django ORM doch super.
Ja, aber: dann musst du IMHO für jedes Update auch ein Update-Skript / Batchdatei mit liefern, die die Migration durchführt. Sonst wird's IMHO für "normale" Nutzer schwierig.

Gruß, noisefloor
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

noisefloor hat geschrieben: Sonntag 2. September 2018, 18:19 Ja, aber: dann musst du IMHO für jedes Update auch ein Update-Skript / Batchdatei mit liefern, die die Migration durchführt. Sonst wird's IMHO für "normale" Nutzer schwierig.
Nein das sehe ich nicht als Problem. Schon jetzt wird beim starten mit run_test_project_dev_server.sh die Migrationen erledigt. z.Z. werden dabei auch bei Model änderungen neue migrationen angelegt. Das soll später natürlich nur beim entwickeln passieren...

Ich hab einfach ein eigenes django manage command gemacht: Vor dem eigentlichen Server start wird "makemigrations", "migrate" und "collectstatic" gemacht. Wenn kein User exisiert, dann noch "createsuperuser" ...
Dazu hab ich einfach von staticfiles.management.commands.runserver geerbt und das dann erweitert, hier: https://github.com/jedie/django-for-run ... _server.py

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
nezzcarth
User
Beiträge: 1631
Registriert: Samstag 16. April 2011, 12:47

jens hat geschrieben: Sonntag 2. September 2018, 14:13 Aber ein "richtiger" Server wäre natürlich besser.
Vielleicht wäre es am Einfachsten sich auf eine Raspberry Pi Lösung zu fokussieren?!?

Da gibt es z.B. "HypriotOS" https://blog.hypriot.com/ - Ein minimal Debian optimiert um Docker auf dem Raspberry Pi zu betreiben.
Heißt dann, ich schaue das ich ein docker image bzw. ein docker compose setup aufsetzte und gut.
Wenn es in diese Richtung gehen soll: Wäre es da nicht einfacher, vollständige Images für z.B. VirtualBox (ggf. in Verbindung mit Vagrant, wenn mehr flexibilität gebraucht wird) o.Ä. anzubieten, die man bloß starten muss (Virtualbox, weil es das auch für WIndows gibt?)? Das scheint mir etwas weniger Aufwand, als Raspberry Pi + Docker.
Tholo
User
Beiträge: 177
Registriert: Sonntag 7. Januar 2018, 20:36

Hast du schon mal über Docker nachgedacht? Du kannst das ja in einem Container abbilden. Das Update würde mit einem pull des Image auch nutzerfreundlicher sein, da du den Start ja als CMD definieren kannst.
Ich würde nicht behaupten wollen das Docker aufwendiger ist in der Installation, da durch Docker tools (ja ich weiß Docker läuft dann quasi in einer VM) die Nutzung auf Windows auch besser geworden ist.
Benutzeravatar
noisefloor
User
Beiträge: 3829
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

@Tholo: Die Frage ist halt, wo man als Entwickler den DAU-Level seiner Zielgruppe des Programms ansetzt. IMHO ist Docker als Voraussetzung eine zu hohe Hürde, im Sinne von Abschreckend. Klar ist Docker im Server- und Entwicklerbereich einer der Standards, aber im Endanwenderbereich ist das IMHO noch lange nicht "angekommen".

Gruß, noisefloor
Tholo
User
Beiträge: 177
Registriert: Sonntag 7. Januar 2018, 20:36

Echt? Ich habe für eines meiner Anwendungen darüber nachgedacht, mittels Docker zu verteilen.
https://docs.docker.com/docker-for-wind ... containers
Diese Doku kam mir als einfache Hürde vor. Da nichts weiter installiert werden muss. Ich hab es allerdings noch nicht getestet. War eine Annahme von mir und das überrascht mich jetzt schon ein bisschen.

Und ein docker-compose up sollte der Anwender doch schreiben können oder?
Ich glaub ich muss es mir erst auf win anschauen...
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mit einem "docker-compose up" ist es ja nicht getan. Beruflich hab ich mit basierend auf python cmd eine bequeme art gebaut, die docker compose Projekte bequem zu betreiben... Alles per Hand ist mit zu doof und die alte Makefile Lösung, die ich abgelöst habe, war mir zu umständlich...

Aber ja, Docker wäre ein Thema und richtig: Das DAU-Level wäre dafür eigentlich zu hoch... Aber genau dafür wäre dann "HypriotOS" https://blog.hypriot.com/ gedacht: Ein SD-Karten Image bereitstellen für jemand der einen Rasberry rumfliegen hat. Wobei das DAU-Level dann immernoch hoch ist.
Der Vorteil wäre allerdings, das zum einen Entwickler eh mit docker umgehen können und man so zwei Zielgruppen gleichzeitig bedient...

Gestern hatte ich allerdings noch die Installation vereinfacht, durch ein Shell-Skript: https://github.com/jedie/django-for-runners#try-out

Damit läuft es auf folgendes hinaus: Aber auch das ist nerdig... Aber halt nicht so aufwendig für mich ;)
Dann stelle ich mir die Frage: Haben DAUs überhaupt noch einen PC ?!? Ich glaube das wird immer weniger, oder?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
noisefloor
User
Beiträge: 3829
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

also wenn ich mich in meinem Verwandten / Bekannten / Arbeitskollegen Kreis umsehe, dann gibt es IMHO nur zwei Wege, um DAU-kompatibel Software zu verteilen:

* ausführbares Binary
* ZIP-Datei einpacken und darin ein Skript ausführen

Wenn man nur Linux-Nutzer als Zielgruppe hätte, dann wäre ein passendes Paket noch ein Option.

Alles andere ist zu aufwendig / kompliziert / abschreckend.

Im gegebenen Fall wäre sicherlich auch ein Portal im Internet gut - aber dann muss man sich halt mir der vollen Ladung DSGVO rum schlagen, was auch nicht soo spaßig für ein Freizeitprojekt ist.

Gruß, noisefloor
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Gerade über mastodon gesehen:
Electron alternative based on Python and Qt

fbs lets you create GUI apps for Windows, Mac and Linux.
It is a lightweight alternative to Electron based on Qt and Python.
...
Instead of reinventing the wheel, fbs builds on well-tested solutions: PyQt to use Qt from Python, PyInstaller for packaging, NSIS for Windows installers, .deb files on Ubuntu.
https://build-system.fman.io/
https://github.com/mherrmann/fbs

Jemand schon einmal ausprobiert?!?

Ist allerdings nur für OpenSource Projekte kostenlos. Wobei: Ist Qt auch nur, oder?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
noisefloor
User
Beiträge: 3829
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

richtig, Qt steht nur für OSS-Projekte unter einer freien Lizenz. Ist gerade auch Thema in diesem thread, da stehen auch Lizenzgebühren drin.

Gruß, noisefloor
Antworten