Ein kleiner Blick hinter die Kulissen

Wir wurden schon mehrfach gefragt, welche Technologien hinter der SpikeTime Zeiterfassung stecken. Dieser Blogpost soll einen kleinen Einblick geben, welche Technologien und Online-Dienste wir für die Entwicklung verwendet haben und wie diese zusammenspielen.

Die SpikeTime Webanwendung

Unsere Webanwendung ist eine ASP .NET MVC Anwendung, geschrieben in der Programmiersprache C#. Ursprünglich war SpikeTime 1.0 ein “Spielprojekt” um ASP .NET MVC kennen zu lernen, da wir vorher hauptsächlich Entwicklungen mit ASP .NET Webforms gemacht haben. SpikeTime 2.0 haben wir von Grund auf neu entwickelt und damit den Code weiter “professionalisiert” 🙂

Alle Daten werden in einem Microsoft SQL Server 2012 gespeichert und den Zugriff darauf haben wir mit dem Entity Framework (in der CodeFirst Variante) realisiert.

Als Grundlage für das Design und einige Javascript Funktionen (wie bspw. die Animationen beim Auf- und Zuklappen eines Projektes etc.) haben wir Twitter Bootstrap verwendet – für das eigentliche Design haben wir uns allerdings dagegen entschieden ein Template zu kaufen, sondern alles selbst umgesetzt. Damit war es auch einfacher möglich die Anpassungen, die jeder Nutzer selbst vornehmen kann (Farben, eigenes Logo, Hintergründe) zu entwickeln.

Natürlich verwenden wir in der Anwendung noch viele weitere Javascript Bibliotheken und Funktionen, die uns bei der Entwicklung das Leben stark erleichtert haben – einige davon habe ich ganz unten aufgelistet.

Die SpikeTime Homepage

Unsere Homepage und dieses Blog haben wir mit WordPress zweisprachig realisiert. Als vorgefertigtes Template haben wir das FlatTheme von shapebootstrap verwendet und dieses nur noch an unsere Bedürfnisse angepasst.

Die SpikeTime API

Unsere API ist ebenso mit C# als ASP .NET WebAPI Projekt entwickelt und greift im Hintergrund auf die selben Funktionen und Prozesse, wie unsere Webanwendung zu.

Mit Hilfe der API kann jeder auf seine Zeiterfassungsdaten in eigenen Anwendungen zugreifen oder bspw. Auswertungen auch mit Excel und Powerquery erstellen.

Die SpikeTime App

Unsere mobile App zur Zeiterfassung ist eine AngularJS Anwendung, entwickelt mit dem ionic-Framework und Apache cordova. Dadurch war es möglich den gleichen Code für sowohl Android als auch iOS Geräte zu verwenden.

Im Grunde ist die App ebenso eine für mobile Geräte optimierte Webseite, nur verpackt als native Anwendung für iOS und Android.

Da die Anwendung zur Zeiterfassung auch offline funktionieren sollte, haben wir einen eigenen Datensynchronisierungsprozess entwickelt, der automatisch und in regelmäßigen Intervallen, alle Daten mit unserem Server abgleicht.

Die Dienste im Hintergrund

Natürlich ist das,  was ein Benutzer von SpikeTime sieht nur die Spitze des Eisbergs 🙂 Im Hintergrund werkeln einige teils selbst entwickelte und einige Online-Dienste.

Beispielsweise versenden wir alle E-Mails, wie die Erinnerungen an die Zeiterfassung oder die Erinnerung an eine noch laufende Stoppuhr mit dem Dienst Mailgun versendet. Mailgun macht es einfach über eine API korrekt formatierte und “Anti-Spam” Anforderungen gerechte E-Mails zu versenden. Außerdem sind die ersten 10.000 damit verschickten E-Mails pro Monat kostenlos.

Für die Abwicklung der Zahlung verwenden wir einerseits Stripe für Kreditkartenzahlungen und andererseits PayPal als zweite direkte Zahlungsmöglichkeit. Für jährliche Abonnements bieten wir auch die Zahlung per Überweisung an.

Als Forum für User-Feedback und -Ideen verwenden wir den von UserVoice bereitgestellten Dienst, der leider jetzt für Neuanmeldungen nicht mehr kostenlos ist.

Zusammenfassung

Ich hoffe ich konnte mit diesem Eintrag einen kleinen Einblick hinter die Kulissen der SpikeTime Zeiterfassung geben – natürlich beantworten wir bei Interesse auch weitergehende Fragen.

Hier noch einige Links zu den von uns verwendeten Anwendungen/ Bibliotheken und Services:

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInEmail this to someone

SpikeTime Banner

Leave a Reply

Your email address will not be published. Required fields are marked *