← Zurück zu den Projekten
Immobilien & Unternehmensplattformen Fallstudie

Persönliches CRM für Freelancer — Verwaltung von Kunden, Projekten, Aufgaben und Analytik

Ein eigenes CRM-System zur Verwaltung der Freelance-Tätigkeit: Kunden, Projekte, Aufgaben, Zeiterfassung, automatische Berechnung der Arbeitskosten, Analytik zu Einnahmen, Leads und Stellenangeboten. Stack: Symfony, Vue, PostgreSQL, Redis, ElasticSearch, RabbitMQ.

Verfügbare Sprachen
Technologien 8
PHP
JavaScript
Symfony
Vue.js
PostgreSQL
Elasticsearch
Redis
RabbitMQ
Persönliches CRM für Freelancer — Verwaltung von Kunden, Projekten, Aufgaben und Analytik
Ausgezeichnetes Projekt ↗

Über das Projekt

Ein eigenes CRM-System, entwickelt zur Verwaltung meiner Freelance-Tätigkeit. Im System führe ich Kunden, lege für sie Projekte und Aufgaben an, erfasse die Zeit für Aufgaben, und das System berechnet automatisch die Kosten der erledigten Arbeit. Die Daten werden pro Aufgabe, Projekt und Kunde aggregiert, was ein vollständiges Bild der Einnahmen auf allen Ebenen ermöglicht.

Für die Analytik gibt es ein eigenes Dashboard mit Diagrammen und Charts: Ich kann Daten für jeden Tag einsehen — welche Aufgaben erledigt wurden, mit welchen Projekten und Kunden ich gearbeitet habe und wie viel ich pro Tag, Woche oder Monat verdient habe. Darüber hinaus enthält das CRM Module für Lead-Analytik und Stellenangebots-Analytik: Ich kann Leads mit Merkmalen (kalt/warm, Quelle usw.) verwalten und die Konversion in Kunden verfolgen sowie Stellenangebote mit Status und Quellen führen, um zu analysieren, wie relevant die Stellen für meine Fähigkeiten sind, wie gut ich in Vorstellungsgesprächen abschneide und welche Suchkanäle am besten funktionieren.

Das System basiert auf Symfony (Backend), Vue (Frontend), PostgreSQL (Hauptdatenbank), Redis (Cache und Sessions), ElasticSearch (Suche und Analytik) und RabbitMQ (asynchrone Verarbeitung).

Persönliches CRM für Freelancer

Ein eigenes CRM-System, entwickelt zur Verwaltung meiner Freelance-Tätigkeit. Im System führe ich Kunden, lege für sie Projekte und Aufgaben an, erfasse die Zeit für Aufgaben, und das System berechnet automatisch die Kosten der erledigten Arbeit.

Die Daten werden pro Aufgabe, Projekt und Kunde aggregiert, was ein vollständiges Bild der Einnahmen auf allen Ebenen ermöglicht. Da Kunden mehrere Projekte haben können, erfolgt die Aggregation sowohl pro Projekt als auch pro Kunde insgesamt.

Für die Analytik gibt es ein eigenes Dashboard mit Diagrammen und Charts: Ich kann Daten für jeden Tag einsehen — welche Aufgaben erledigt wurden, mit welchen Projekten und Kunden ich gearbeitet habe und wie viel ich pro Tag, Woche oder Monat verdient habe.

Darüber hinaus enthält das CRM Module für Lead-Analytik und Stellenangebots-Analytik:

  • Leads: Hinzufügen von Leads mit Merkmalen (kalt/warm, Quelle usw.), Verfolgung von Status und Konversion in Kunden. Ein eigener Tab im Dashboard zeigt, wie viele Leads gewonnen wurden, welche Status sie haben und wie viele in Kunden konvertiert wurden. Dies ermöglicht die Analyse der Lead-Akquise-Leistung und die Anpassung von Maßnahmen.
  • Stellenangebote: Verwaltung von Stellen mit Status und Quellen, Analyse der Relevanz der Stellen für meine Fähigkeiten und der Erfolgsquote in Vorstellungsgesprächen. Ein eigener Tab im Dashboard hilft zu verstehen, ob ich richtig nach Stellen suche, welche Kanäle am besten funktionieren und wie ich mein Verhalten in Vorstellungsgesprächen anpassen kann.

Meine Rolle im Projekt

Full-Stack-Entwickler und Autor des Projekts: Architekturdesign, Backend-Entwicklung mit Symfony, Frontend mit Vue, Infrastruktur-Setup (PostgreSQL, Redis, ElasticSearch, RabbitMQ).

Technologie-Stack

  • Backend: Symfony (PHP)
  • Frontend: Vue.js
  • Datenbank: PostgreSQL
  • Cache und Sessions: Redis
  • Suche und Analytik: ElasticSearch
  • Queues: RabbitMQ

Zentrale Aufgaben

  • Design des Domänenmodells: Kunden, Projekte, Aufgaben, Zeit, Sätze
  • Zeiterfassung für Aufgaben und automatische Berechnung der Arbeitskosten
  • Datenaggregation pro Aufgabe, Projekt und Kunde
  • Dashboard mit Diagrammen und Charts für Einnahmen-Analytik
  • Lead-Analytik-Modul mit Merkmalen und Konversion
  • Stellenangebots-Analytik-Modul mit Status und Quellen
  • Asynchrone Event-Verarbeitung über RabbitMQ
  • Suche über alle Daten via ElasticSearch
  • Caching und Optimierung der Ausgabe über Redis

Ergebnis

Ein voll funktionsfähiges persönliches CRM, das Kunden-, Projekt- und Aufgabenverwaltung abdeckt, die Einnahmenberechnung automatisiert und Analytik zu Einnahmen, Leads und Stellenangeboten bietet. Das System hilft bei datenbasierten Entscheidungen: welche Lead-Akquise-Kanäle effektiv sind, welche Stellen relevant sind und wie viel pro Tag, Woche oder Monat verdient wurde.

Was ich geliefert habe

01

Es musste ein Modell entworfen werden, das Kunden, Projekte, Aufgaben, Zeiterfassung und S...

Die Herausforderung

Es musste ein Modell entworfen werden, das Kunden, Projekte, Aufgaben, Zeiterfassung und Sätze so verknüpft, dass Daten auf allen Ebenen korrekt und ohne Duplikate aggregiert werden.

Lösung

  • Entwurf der Entitäten: Kunde → Projekt → Aufgabe → Zeiteintrag → Kostenberechnung.
  • Definition von Beziehungen und Regeln für kaskadierendes Verhalten.
  • Flexibilität bei Sätzen (stündlich, fest, pro Projekt) eingeplant.
  • Implementierung von Migrationen und Indizes in PostgreSQL.

Ergebnisse

  • Sauberes und erweiterbares Domänenmodell.
  • Korrekte Datenaggregation pro Aufgabe, Projekt und Kunde.
  • Grundlage für Analytik und Reporting.

02

Die Zeit für Aufgaben sollte bequem erfasst und die Kosten der erledigten Arbeit automatis...

Die Herausforderung

Die Zeit für Aufgaben sollte bequem erfasst und die Kosten der erledigten Arbeit automatisch berechnet werden — ohne manuelle Berechnungen und Fehler.

Lösung

  • Implementierung der Zeiterfassung mit Verknüpfung zu Aufgabe und Datum.
  • Automatische Kostenberechnung auf Basis von Satz und aufgewendeter Zeit.
  • Neuberechnung bei Änderung von Satz oder Zeit.
  • Auslagerung schwerer Neuberechnungen in asynchrone Tasks über RabbitMQ.

Ergebnisse

  • Automatische und präzise Einnahmenberechnung.
  • Transparente Historie von Zeit und Kosten pro Aufgabe.
  • Keine manuellen Berechnungen.

03

Beträge für Arbeiten mussten auf mehreren Ebenen verfügbar sein: pro Aufgabe, pro Projekt,...

Die Herausforderung

Beträge für Arbeiten mussten auf mehreren Ebenen verfügbar sein: pro Aufgabe, pro Projekt, pro Kunde. Ein Kunde kann mehrere Projekte haben, ein Projekt viele Aufgaben.

Lösung

  • Implementierung der Datenaggregation auf Aufgaben-, Projekt- und Kundenebene.
  • Neuberechnung der Aggregate bei Änderungen (Zeit, Sätze, Status).
  • Caching der Aggregate in Redis für schnelle Auslieferung.
  • Sicherstellung der Datenkonsistenz über alle Ebenen.

Ergebnisse

  • Vollständige Einnahmendaten auf allen Ebenen.
  • Schnelle Auslieferung der Aggregate dank Caching.
  • Einheitliches Bild über Kunden und Projekte.

04

Für die Analytik war ein anschauliches Dashboard mit Diagrammen und Charts erforderlich, d...

Die Herausforderung

Für die Analytik war ein anschauliches Dashboard mit Diagrammen und Charts erforderlich, das tägliche Daten zeigt: welche Aufgaben erledigt wurden, mit welchen Projekten und Kunden, und wie viel pro Tag, Woche oder Monat verdient wurde.

Lösung

  • Implementierung von Backend-Aggregationen für Zeitintervalle (Tag/Woche/Monat).
  • Aufbau des Frontends mit Vue und Diagrammen/Charts.
  • Hinzufügen von Filtern nach Kunden, Projekten und Zeiträumen.
  • Optimierung der Abfragen und Caching schwerer Aggregate.

Ergebnisse

  • Anschauliche Einnahmen-Analytik nach Tag, Woche und Monat.
  • Schneller Zugriff auf Daten nach Kunden und Projekten.
  • Grundlage für datenbasierte Entscheidungen.

05

Leads mussten mit Merkmalen (kalt/warm, Quelle usw.) verwaltet werden, und es war zu analy...

Die Herausforderung

Leads mussten mit Merkmalen (kalt/warm, Quelle usw.) verwaltet werden, und es war zu analysieren, wie viele Leads gewonnen wurden, welche Status sie haben und wie viele in Kunden konvertiert wurden.

Lösung

  • Implementierung von CRUD für Leads mit flexiblen Merkmalen.
  • Hinzufügen von Status und Akquise-Quellen.
  • Implementierung der Lead-zu-Kunde-Konversion.
  • Aufbau eines eigenen Lead-Analytik-Tabs im Dashboard.

Ergebnisse

  • Transparenter Lead-Funnel und Konversion in Kunden.
  • Verständnis darüber, welche Akquise-Kanäle am besten funktionieren.
  • Möglichkeit, Maßnahmen zur Lead-Akquise anzupassen.

06

Stellen mussten mit Status und Quellen geführt werden, und es war zu analysieren, wie rele...

Die Herausforderung

Stellen mussten mit Status und Quellen geführt werden, und es war zu analysieren, wie relevant die Stellen für meine Fähigkeiten sind und wie erfolgreich ich in Vorstellungsgesprächen abschneide.

Lösung

  • Implementierung von CRUD für Stellen mit Status und Quellen.
  • Hinzufügen von Phasen-Tracking: Bewerbung → Interview → Ergebnis.
  • Aufbau eines eigenen Stellen-Analytik-Tabs im Dashboard.
  • Hinzufügen von Analytik zu Suchkanälen und Interview-Erfolg.

Ergebnisse

  • Verständnis darüber, ob ich richtig nach Stellen suche.
  • Daten darüber, welche Kanäle am besten für die Stellensuche funktionieren.
  • Möglichkeit, das Verhalten in Vorstellungsgesprächen anzupassen.

07

Aggregat-Neuberechnungen, Analytik-Updates und Kostenberechnungen sind schwere Operationen...

Die Herausforderung

Aggregat-Neuberechnungen, Analytik-Updates und Kostenberechnungen sind schwere Operationen, die nicht synchron im HTTP-Zyklus ausgeführt werden können, ohne die Reaktionsfähigkeit zu verlieren.

Lösung

  • Entwurf von Event-Queues für Änderungen an Zeit, Sätzen und Status.
  • Implementierung von Workern mit Symfony Messenger + RabbitMQ.
  • Hinzufügen von Retry-Policies, Dead-Letter-Queue und Monitoring.
  • Sicherstellung der Idempotenz der Handler.

Ergebnisse

  • Schnelle Interface-Reaktion unabhängig von Hintergrundoperationen.
  • Ausfallsicherheit bei Fehlern und Spitzenlasten.
  • Skalierbare Event-Verarbeitung.

08

Die schnelle Suche über Kunden, Projekte, Aufgaben, Leads und Stellen sowie flexible Analy...

Die Herausforderung

Die schnelle Suche über Kunden, Projekte, Aufgaben, Leads und Stellen sowie flexible Analytik erforderten eine spezialisierte Suchmaschine statt schwerer SQL-Abfragen.

Lösung

  • Konfiguration von ElasticSearch-Indizes für zentrale Entitäten.
  • Implementierung der Datensynchronisation über RabbitMQ-Events.
  • Hinzufügen von Suchabfragen mit Filtern und Aggregationen.
  • Optimierung von Mappings und Reindexierung.

Ergebnisse

  • Schnelle Suche über alle CRM-Entitäten.
  • Flexible Analytik für Dashboards.
  • Reduzierung der Last auf PostgreSQL.

09

Das Dashboard und Aggregate nach Kunden, Projekten und Aufgaben sind häufig angefragte Dat...

Die Herausforderung

Das Dashboard und Aggregate nach Kunden, Projekten und Aufgaben sind häufig angefragte Daten, deren Neuberechnung jedes Mal teuer ist.

Lösung

  • Einführung von Caching heißer Daten und Aggregate in Redis.
  • Konfiguration der Cache-Invalidierung über Events (Änderungen an Zeit, Sätzen, Status).
  • Nutzung von Redis für Sessions und verteilte Sperren.
  • Monitoring von Hit/Miss und Antwortzeiten.

Ergebnisse

  • Schnelle Auslieferung von Dashboard und Aggregaten.
  • Reduzierung der Last auf PostgreSQL.
  • Stabiler Betrieb unter Last.

10

Für Analytik und Klärung von Streitfällen mussten alle Änderungen an Kunden, Projekten, Au...

Die Herausforderung

Für Analytik und Klärung von Streitfällen mussten alle Änderungen an Kunden, Projekten, Aufgaben, Leads und Stellen nachvollziehbar sein.

Lösung

  • Entwurf eines Audit-Log-Schemas mit Verknüpfung zu Entität, Nutzer und Aktion.
  • Implementierung asynchroner Audit-Schreibung über RabbitMQ.
  • Hinzufügen von Tools zur Suche und zum Export von Audit-Logs (ElasticSearch).
  • Sicherstellung der Unveränderlichkeit der Einträge.

Ergebnisse

  • Vollständiges Audit der Änderungen im CRM.
  • Schnelle Klärung von Streitfällen.
  • Grundlage für Verhaltensanalytik.

11

Das CRM wird täglich genutzt, und Störungen bei Queues, Indexierung oder Cache sind kritis...

Die Herausforderung

Das CRM wird täglich genutzt, und Störungen bei Queues, Indexierung oder Cache sind kritisch für Zeiterfassung und Einnahmen.

Lösung

  • Einrichtung der Erfassung von Metriken für RabbitMQ, Redis, ElasticSearch und PostgreSQL.
  • Implementierung von Alerts bei Anomalien (DLQ-Wachstum, Indexierungsverzögerungen, Worker-Fehler).
  • Hinzufügen von Dashboards zur Überwachung des Systemzustands.
  • Integration von Logging kritischer Operationen.

Ergebnisse

  • Schnelles Erkennen und Reagieren auf Incidents.
  • Reduzierung der Ausfallzeiten.
  • Transparenz des Systemzustands.

Technologien & Themen

Projekt-Tags

#Symfony #PHP #Vue.js #PostgreSQL #Redis #ElasticSearch #RabbitMQ #CRM #Freelance #Zeiterfassung #Analytik #Dashboard #Lead-Management #Stellen-Tracking #Symfony Messenger #Asynchrone Verarbeitung #High Load #REST API #Audit Logging
04
Ein Projekt starten

Brauchen Sie einen ähnlichen technischen Ansatz?

Lassen Sie uns Ihr Projekt, die Architektur und den besten Technologie-Stack dafür besprechen.

Lassen Sie uns sprechen ↗