Architektur Frage...

11/30/2014 01:12 Reav0r#1
Hallo liebe Webentwickler :3

im Moment arbeite ich in einem Langzeit-Praktikum in einer Software Firma, welche so ziemlich alles macht. So kommt es, das ich nun mit einem Firmen internen Projekt beauftragt wurde. Hierbei handelt es sich um ein Tool, welches die Aufnahme der Stunden die an dem Projekt gearbeiteten worden vereinfachen soll, damit am ende die Abrechnung leichter wird. Das ganze soll am ende im Browser für Desktop-Rechner laufen und als App für Handys realisiert werden. So weit so gut. Da die Apps mit den entsprechenden Standardsprachen der jeweiligen Plattform programmiert werden sollen, möchte ich das ganze mit einer API umsetzen.
Da ich aber was Webentwicklung an geht, nicht so viel Erfahrung habe, kenne ich mich hier nicht so gut mit der Architektur aus, wie das ganze aufgebaut wird. Bisher sieht meine Idee so aus:

PHP Backend für die API

Frontend via AJAX mit einem JS MVC Framework.

Allerdings weiß ich jetzt z.B. nicht ob man das Admin-Interface mit im Code des Backends realisiert oder ob man das genauso wie das normale User-Interface dann ganz vom API backend trennt.

Ich fände es recht cool, wenn mir hier jemand ein paar Tipps geben könnte :)
11/30/2014 10:47 MrDami123#2
Mir ist nicht ganz klar, wie du die Zeit berechnen möchtest.
Wenn ich entwickel, arbeite ich mit mehreren Tools und nur teilweise mit dem Browser. Wenn die Zeit aber nur im Browser gezählt wird, ist der Zeitaufwand bereits verfälscht. Wenn man den Browser offen lässt und in die Mittagspause geht, ist die Zeit verfälscht.

Bevor du dich an nem Webserver mit Userlogin und Dashboard machst, solltest du das besser erläutern.
11/30/2014 11:55 Reav0r#3
Quote:
Originally Posted by MrDami123 View Post
Mir ist nicht ganz klar, wie du die Zeit berechnen möchtest.
Wenn ich entwickel, arbeite ich mit mehreren Tools und nur teilweise mit dem Browser. Wenn die Zeit aber nur im Browser gezählt wird, ist der Zeitaufwand bereits verfälscht. Wenn man den Browser offen lässt und in die Mittagspause geht, ist die Zeit verfälscht.

Bevor du dich an nem Webserver mit Userlogin und Dashboard machst, solltest du das besser erläutern.
Das Problem mit dem weiterlaufenden Timer ist mir durchaus bewusst. Allerdings ist für Desktop Rechner eben leider die Umsetzung als Webapplikation Pflicht. Leider wüsste ich jetzt auch nicht wie ich das ganze umgehen sollte, selbst wenn es nicht im Browser läuft. Wenn der User nicht stoppt, kann man das ja nur schwer verhindern.
Die Zeitaufnahmen können zwar im Nachhinein noch bearbeitet werden, aber ja, es ist nicht gerade optimal.
Berechnet werden soll die Dauer aus einem Start- und einem Endzeitpunkt, was serverseitig passiert.
Bisher ist mir leider keine bessere Lösung eingefallen. Auch als ich mir z.B. die Umsetzung von kimai anschaute, nutzten sie letztendlich diese Methode aus Start- und Endzeitpunkt.

Über bessere Lösungsansätze freue ich mich natürlich.
11/30/2014 19:49 MrDami123#4
Quote:
Originally Posted by Reav0r View Post
Allerdings ist für Desktop Rechner eben leider die Umsetzung als Webapplikation Pflicht
Sehe ich nicht so aber okay.

Da du "nur" ein Praktikant bist, wird niemand von dir perfekte Programme erwarten. Wenn du dennoch eine sehr ordentliche Zeitkalkulation haben möchtest, würde ich das Programm von Anfang an so ausrichten, dass mehrere Unterbrechungen eingefügt werden können.
Sobald das Grundgerüst (Deine beschriebene Start und Endzeit) steht, kannst du z.B. als erstes einfügen, dass wenn der PC xMinuten inaktiv ist oder der Bildschrimschoner aktiviert wird, der Counter pausiert.

Quote:
Originally Posted by Reav0r View Post
Berechnet werden soll die Dauer aus einem Start- und einem Endzeitpunkt, was serverseitig passiert.
Wenn ich davon ausgehe, dass du eine Website hast, auf der sich die Nutzer einloggen können, dort Projekte gelistet sind und die Nutzer sich dort für ein Projekt eintragen können, dann sollte dort der User die Möglichkeit haben, ein Projekt auszuwählen, es zu Starten, Pausieren und Beenden zu können.
-> Start des Projekts nachdem der User es ausgewählt hat
-> Ende des Projekts nachdem der User das Ergebnis hochgeladen hat

Das sollte noch das einfachste sein.

Folglich brauchst du ein Dashboard mit:
- Übersicht alle Projekte (global für alle User)
- Möglichkeit zum Eintragen von Projekten (ggf. spezielle Benutzergruppe)
- Übersicht aktive Projekte
- Übersicht erledigte Projekte

Datenbank mit Tabellen: Login, Additional Data, Projekte

Das Admin-Interface würde mit mehr Funktionen ausstatten aber nicht unbedingt an die API binden. Außer du möchtest darüber darüber entwickeln. Bedenke einfach immer was ein gehackter Admin-Acc anrichten könnte. ;)
12/02/2014 13:45 Reav0r#5
Also nach deinem Post würde ich (wie ich es auch in etwa mir vorgestellt hatte), die Application so aufbauen:

Serverseitig würde ich einen reinen API Server entwickeln. Dieser bedient dann das Frontend und später die Mobile App's und evtl. vielleicht auch mal echte Desktop App's, mal schauen.

Dazu würde ich dann ein Frontend auf nem MVC JS Framework aufbauen, was sowohl das normale User-Interface als auch das Admin Interface beinhaltet. Dieses kommuniziert dann über Ajax mit dem API Server.

Wäre das so sinnvoll oder doch lieber noch anders aufbauen?
12/02/2014 18:57 KoKsPfLaNzE#6
via ajax direkt ins backend ist nicht gerade vom vorteil, deine applikation sollte ala wrapper dazwischen stehen
12/02/2014 19:15 MrDami123#7
@Reav0r
Jep genauso so. :)
12/02/2014 21:40 Shawak#8
Das front-end bedient sich am back-end (API) und nicht anders rum, nur zur Verständnis.