Advertisement
  1. Code
  2. PHP

Erstellen Sie Ihr Startup: Die Dashboard Foundation

by
Read Time:13 minsLanguages:
This post is part of a series called Building Your Startup With PHP.
Building Your Startup: Sending Reminders
Building Your Startup: Improving the Mobile Web

German (Deutsch) translation by Władysław Łucyszyn (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating

Dieses Tutorial ist Teil des Build Your Startup mit PHP-Serie auf Envato Tuts +. In dieser Serie führe ich Sie durch die Einführung eines Start-ups von der Idee zur Realität mit meiner Meeting-Planer-App als ein echtes Beispiel.  Bei jedem Schritt werde ich den Meeting-Planer-Code als Open-Source-Beispiele veröffentlichen, von denen Sie lernen können.  Ich werde auch auf geschäftliche Probleme im Zusammenhang mit dem Start eingehen, sobald sie auftreten.

Da der Meeting-Planer sich dem Alpha-Start nähert, brauchen wir eine Möglichkeit, Supportanfragen mit Benutzern zu beantworten und Aktivitäten zu überwachen.  Mit anderen Worten, wir müssen ein administratives Dashboard mit Benutzerverwaltung und Berichterstellung erstellen.  In Gesprächen mit einem Berater haben wir darüber gesprochen, dass ich, wenn ich mich potenziellen Anlegern annähere, über ausgezeichnete Daten verfügen muss, die das Nutzerverhalten und das Wachstum des Dienstes genau beschreiben.

In der heutigen Folge werden wir die Grundlage für unser Verwaltungs-Dashboard bilden und einige der ersten Live- und historischen Berichte übernehmen und erstellen.  Wir wissen zum Beispiel, wie viele Personen sich zu jeder Zeit angemeldet haben, wie viele Meetings geplant wurden und wie viel Prozent der eingeladenen Teilnehmer den Service genug haben, um ein eigenes Meeting zu organisieren.  Es hat wirklich Spaß gemacht, dieses Zeug zu bauen und die Daten zu sehen, selbst wenn wir vor dem Start sind.

Wenn Sie Meeting Planner noch nicht ausprobiert haben (und selbst in den aggregierten Daten angezeigt werden möchten), können Sie Ihr erstes Meeting planen.  Ich nehme an den Kommentarfäden teil, also sag mir, was du denkst!  Sie können mich auch auf Twitter @reifman erreichen.  Ich bin besonders interessiert, wenn Sie neue Funktionen oder Themen für zukünftige Tutorials vorschlagen möchten.

Zur Erinnerung: Der gesamte Code für Meeting Planner ist in das Yii2 Framework für PHP geschrieben.  Wenn Sie mehr über Yii2 erfahren möchten, schauen Sie sich unsere Parallel-Serie Programmierung mit Yii2 an.

Aufbau der Grundlage des Dashboards

Die Yii Erweiterte Vorlage

Yii2 bietet Front- und Back-Office-Websites im Rahmen seiner erweiterten Anwendungskonfiguration. Sie können mehr darüber in meinem Envato Tuts + Tutorial, Programmieren mit Yii2: Verwenden der Advanced Application Template lesen.  Im Wesentlichen bietet die Front-End-Site der erweiterten Vorlage Funktionen für Personen, und die Back-End-Site ist für das Dashboard und die Administrations-Site eines Services vorgesehen.

Um es zu aktivieren, musste ich nur Apache-Sites in meiner MAMP-Localhost-Umgebung und auf meinem Produktions-Ubuntu-Server einrichten.  Zum Beispiel, hier ist die Apache-Konfiguration auf dem Produktionsserver zum Laden der /backend/web:

Konfigurieren unserer Back-End-Site

Als Nächstes habe ich ein neues Layout für die Back-End-Site basierend auf der Front-End-Site erstellt, jedoch mit anderen Menüoptionen.  Ich entschied, dass die Homepage auf eine Seite mit Echtzeitstatistiken umgeleitet werden würde.  Und die Menüs würden Links zu Echtzeitdaten, Daten von gestern um Mitternacht und historischen Daten bieten.  Ich werde ein bisschen mehr davon erklären, während wir fortfahren.

Meeting Planner Dashboard - Menu LayoutMeeting Planner Dashboard - Menu LayoutMeeting Planner Dashboard - Menu Layout

Hier ist das \ backend \ views \ layouts \ main.php mit dem Menü:

Erstellen der Erstberichterstellung

Bei meiner anfänglichen Statistikberichterstattung habe ich mich auf einfache Echtzeitdaten und detaillierte historische Daten konzentriert.  Bei meiner anfänglichen Statistikberichterstattung habe ich mich auf einfache Echtzeitdaten und detaillierte historische Daten konzentriert. 

Echtzeitdaten würden beispielsweise die Anzahl der Benutzer und Besprechungen anzeigen, die auf dem System erstellt wurden, und deren Status. Die historischen Daten würden Ihnen sagen, wie viele Benutzer und Meetings im Laufe der Zeit abgeschlossen wurden, sowie andere interessante Daten - insbesondere Wachstumskurven, die ich und potenzielle Investoren interessieren könnten.

Echtzeitdaten

Die Echtzeitdatenseite muss einen Live-Snapshot dessen anzeigen, was auf der Site passiert. Anfangs wollte ich wissen:

  • Wie viele Meetings gibt es im System? 
  • Wie viele Benutzer gibt es?
  • Wie ist ihr Status? 

Um dies zu erreichen, habe ich ein Back-End-Modell DataController.php und Data.php erstellt.  Ich machte auch einen Schritt vorwärts und anstatt HTML-Rohdaten in meiner Ansicht zu erstellen, um dies anzuzeigen, habe ich ActiveDataProvider aus meinen Abfragen erstellt und sie Yi's Grid-Widgets zugeführt. 

Das Ergebnis sieht besser aus und ist einfacher zu erstellen und zu warten. Dieser Code fragt die Anzahl der Besprechungen im System nach ihrem Status ab:

Dieser Code in /backend/views/data/current.php zeigt es an:

Es sieht so aus (die Daten sind klein, da die Site noch nicht gestartet wurde!)

Meeting Planner Dashboard - Real Time Meeting DataMeeting Planner Dashboard - Real Time Meeting DataMeeting Planner Dashboard - Real Time Meeting Data

Dann habe ich ein paar weitere Echtzeitabfragen erstellt und der Rest der Seite sieht folgendermaßen aus: 

Meeting Planner Dashboard - Real Time Data People and PlacesMeeting Planner Dashboard - Real Time Data People and PlacesMeeting Planner Dashboard - Real Time Data People and Places

Wenn Sie in den oben aufgeführten Spalten "Aktive Personen" und "Via Einladung" eine Person zu einer Besprechung einladen, zählen wir sie als Benutzer über die Einladung, bis sie ein Kennwort erstellen oder ihr soziales Konto verknüpfen.  Bis dahin haben sie nur Zugriff auf den Besprechungsplaner E-Mail-Einladungslink und seine Authentifizierungs-ID Natürlich werde ich die Echtzeit-Reporting-Optionen erweitern, während sich das Projekt weiterentwickelt. 

Natürlich werde ich die Echtzeit-Reporting-Optionen erweitern, während sich das Projekt weiterentwickelt.

Historische Daten melden

Die Erstellung historischer Berichte für systemweite Aktivitäten erwies sich als etwas komplizierter. Ich beschloss, einige abhängige Datenerfassungsschichten zu erstellen. 

Die unterste Ebene ist eine UserData-Tabelle, die den Status der bisherigen Kontoaktivität einer Person bis zu einem bestimmten Tag um Mitternacht zusammenfasst.  Im Wesentlichen werden wir das jeden Abend machen. 

Die oberste Ebene ist die Tabelle "HistoricalData", die ihre Berechnungen mit der Tabelle "UserData" der vorherigen Nacht erstellt. 

Ich musste auch einen Code schreiben, der die beiden Tabellen von Grund auf neu erstellte, da unser Dienst einige Monate lang aktiv war.

Ich werde dich durch das führen, wie ich das gemacht habe.  Das Ergebnis ist ganz gut ausgegangen. 

Tabellenmigrationen erstellen

Hier ist die Tabellenmigration für UserData. Sie enthält die Daten, die ich nachts berechnen möchte, um die historischen Berechnungen zu unterstützen: 

Beispiel: count_meeting_participant_last30 gibt an, zu wie vielen Besprechungen diese Person in den letzten 30 Tagen eingeladen wurde. 

Hier ist die Tabellenmigration für HistoricalData - fast alle Spalten in dieser Tabelle müssen aus verschiedenen Datenschichten berechnet werden:

Im Gespräch mit meinem Berater haben wir festgestellt, dass potenzielle Investoren wissen möchten, wie die Leute auf die Website reagieren. Ich habe eine Messung für eine Metrik namens percent_invited_own_meeting erstellt, kurz für den Prozentsatz der zu ihrer ersten Besprechung eingeladenen Benutzer, denen der Dienst so gut gefallen hat um in Zukunft ein eigenes Treffen zu planen. Ich werde mehr über die Berechnungen ein wenig weiter unten lesen.

Die Migrationen befinden sich alle in /console/migrations.  So sieht es aus, wenn Sie die Datenbankmigrationen ausführen. 

Sammeln der Berichtsdaten

Jede Nacht nach Mitternacht berechnet eine Hintergrundaufgabe die Statistiken der vorherigen Nacht.  Hier ist die Hintergrundmethode: 

Ich habe einen Cron-Job eingerichtet, um ActionOvernight täglich um 1:15 Uhr zu starten. Hinweis: Wenn Sie sich bei Tag und Nacht intensiv auf einen Startup-Vorgang konzentrieren, geht es bei einem Cron-Job um all die Action, die Sie über Nacht bekommen. 

Um die Geschichte der Vergangenheit aufzubauen, habe ich eine one-timerecalc() -Funktion erstellt.  Dies spült die Tische und baut jeden Tisch so auf, als ob er Tag für Tag passiert.

Hinweis: Die Nachlaufzeit ist eine Problemumgehung, um einige der frühen Benutzer auszuschließen, die sich angemeldet haben, bevor sie ein Meeting planen konnten.  Ich wollte, dass die historischen Daten eine genauere Darstellung der letzten Aktivität widerspiegeln (derzeit gibt es ein paar hundert ältere Konten ohne) Aktivität).  Ich werde das wahrscheinlich zu einem späteren Zeitpunkt entfernen.

Berechnung der Benutzerdatentabelle

Hier ist der Code, der die UserData-Tabelle jeden Abend füllt:

Es ist meist nur die Summen für Benutzer von Meetings, Orten, Freunden und in einigen Fällen in Zeitbereichen der letzten 30 Tage. 

Hier ist der Code, der feststellt, ob dieser Benutzer nach der Einladung ein Meeting mit dem Dienst geplant hat: 

Die HistoricalData berechnen

Hier ist der Code, der UserData zum Auffüllen vonHistoricalData nutzt:

Es fasst Summen zusammen und berechnet Prozentsätze und Durchschnittswerte. 

So sieht das fertige Produkt aus:

Meeting Planner Dashboard - Final Historical DataMeeting Planner Dashboard - Final Historical DataMeeting Planner Dashboard - Final Historical Data

Obwohl wir die Analyse nur der Verwendung vor dem Alpha sehen, sind die Daten faszinierend, und die potenzielle Nützlichkeit scheint hervorragend zu sein.  Und natürlich wird es einfach sein, die Datensammlung und Analyse mit dem Grundlagentext, den ich heute mit Ihnen geteilt habe, zu erweitern.

Der Prozentsatz der eingeladenen Benutzer, die ihre eigenen Meetings planen, beträgt übrigens etwa 9% (aber es ist ein kleiner Datensatz). 

Sie fragen sich wahrscheinlich, ob wir diese Spalten darstellen können. Ich hoffe, dass ich das in einem Nachfolge-Tutorial anspreche, das immer eine Interaktion mit den redaktionellen Göttinnen erfordert.  Just FYI, nicht jeder geht von diesen Gesprächen weg.  Ich werde sie auch bitten, mir zu erlauben, über Verwaltungsfunktionen wie das Deaktivieren von Benutzern, das erneute Senden von Passwörtern usw. zu schreiben.

Meeting Planner Dashboard - Game of Thrones MelisandreMeeting Planner Dashboard - Game of Thrones MelisandreMeeting Planner Dashboard - Game of Thrones Melisandre

Wenn du nicht mehr von mir hörst, dann wisse, dass der Herr des Lichts einen Nutzen für mich gefunden hat. 

Was kommt als nächstes?

Wie bereits erwähnt, arbeite ich fieberhaft daran, Meeting Planner für die Alpha-Version vorzubereiten.  Ich konzentriere mich hauptsächlich auf die wichtigsten Verbesserungen und Funktionen, die das Alpha-Release reibungslos funktionieren lassen. 

Ich verfolge jetzt alles in Asana, worüber ich in einem kommenden Tutorial schreiben werde; es war unglaublich hilfreich. Es sind auch einige interessante neue Features auf dem Weg. (Als Yogalehrerin denke ich, dass Asana der schlechteste Produktname aller Zeiten ist.  Sie haben im Yoga einen Ausdruck genommen, der āsana oder ah-sana ausgesprochen hat und die Aussprache in a-sauna geändert hat - und dies in ihren Einführungsvideos  war letztes Jahr nicht einfach, mit den Teammitgliedern darüber zu sprechen, was sie in eine Sauna getan haben und mit Yogis über Āsana gesprochen haben.  Aber ich schweife ab.)

Ich fange auch an, mich mehr auf das bevorstehende Sammeln von Investitionen mit Meeting Planner zu konzentrieren. Ich fange gerade an, mit WeFunder zu experimentieren, basierend auf der Implementierung der neuen Crowdfunding-Regeln der SEC.  Bitte beachten Sie unser Profil.  Darüber werde ich in einem zukünftigen Tutorial noch mehr schreiben. 

Während Sie auf weitere Folgen warten, planen Sie Ihr erstes Meeting und testen Sie die Vorlagen mit Ihren Freunden mit Google Mail-Postfächern.  Ich würde es auch schätzen, wenn Sie Ihre Erfahrungen in den Kommentaren teilen und ich bin immer an Ihren Vorschlägen interessiert.  Sie können mich auch auf Twitter @reifman direkt erreichen.  Sie können sie auch auf der Meeting Planner-Support-Website veröffentlichen

Achten Sie auf kommende Tutorials in der Build Your Startup With PHP-Serie

verwandte Links • 

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.