Dieses Tool dient der Synchronisierung von Projektdaten aus Moco in die Timing App. Es hilft dabei, die Projektstruktur aktuell zu halten und manuelle Arbeit zu vermeiden.
Hand aufs Herz: Zeiterfassung ist nervig. Zwar bietet Moco eine integrierte Erfassung, aber im Agentur-Alltag mit ständigen Kontextwechseln, Telefonaten und Meetings ist die Timing App mein absoluter Lebensretter. Sie trackt im Hintergrund jeden Schritt und hilft mir, am Ende des Tages nichts zu vergessen.
Mein Problem war der "Gap" dazwischen: Ich wollte sicherstellen, dass meine aktive Projektlandschaft aus Moco automatisch in Timing verfügbar ist, ohne manuelle Pflege. Ich wollte einen Workflow, der "just works".
Als kleiner Code-Fetischist konnte ich es nicht lassen, mir dafür eine eigene Lösung zu bauen. Das Ergebnis ist dieses Tool: Ein Bindeglied, das meine Moco-Projekte sauber ins Timing-Universum spiegelt: automatisiert, intelligent und stressfrei.
Das Tool vergleicht die aktiven Projekte und Kunden, die in Moco hinterlegt sind, mit der Ordnerstruktur in der Timing App. Es bietet eine webbasierte Oberfläche, um Unterschiede zu erkennen und gezielt Änderungen vorzunehmen. Dabei werden Projekte niemals gelöscht, sondern sicherheitshalber nur archiviert.
-
Selektiver Abgleich (Sync)
- Scannen: Analyse beider Systeme.
- Erstellen (CREATE): Neue Moco-Projekte werden in Timing angelegt.
- Archivieren (ARCHIVE): Nicht mehr existierende Projekte werden archiviert.
-
Namens-Mapping
- Kürzen Sie lange Kundennamen (z.B. "Firmenname GmbH" -> "Firma") über das "Manage Mappings ⚙️" Menü.
-
Automatische Umbenennung & Linking
- Linking (LINK): Verknüpft bestehende Projekte beim ersten Scan.
- Renaming (RENAME): Erkennt Umbenennungen in Moco anhand der ID und aktualisiert Timing automatisch.
-
Aufräumen inaktiver Projekte (Cleanup)
- Prüft Projekte auf Zeiteinträge in einem gewählten Zeitraum (z.B. letztes Jahr).
- Schlägt ungenutzte Projekte zur Archivierung vor.
- Konfiguration:
.envDatei erstellen (siehe.env.example).MOCO_DOMAIN="ihredomain" MOCO_API_KEY="ihr_key" TIMING_API_KEY="ihr_key"
- (Optional) Mappings vorbereiten:
cp mappings.json.example mappings.json
- (Optional) Mappings vorbereiten:
- Starten
npm install node server.js
- Öffnen: http://localhost:3001
A robust utility to keep your Moco project structure perfectly synchronized with the Timing App. Automate your workflow, eliminate manual maintenance, and ensure your time tracking is always ready to go.
Let's be honest: time tracking is annoying. While Moco offers integrated tracking, in everyday agency life with constant context switching, calls, and meetings, the Timing App is my absolute lifesaver. It tracks every step in the background and helps me ensure nothing is forgotten at the end of the day.
My problem was the "gap" in between: I wanted to ensure my active project landscape from Moco was automatically available in Timing, without manual maintenance. I wanted a workflow that "just works".
As a bit of a code fetishist, I couldn't resist building my own solution for this. The result is this tool: A link that cleanly mirrors my Moco projects into the Timing universe: automated, intelligent, and stress-free.
This tool acts as a bridge between Moco and Timing. It analyzes your active clients and projects, compares them with your Timing folders, and provides a sleek "Scan & Execute" interface to handle updates.
Philosophy: We prioritize data safety. Projects are never deleted, only archived.
-
Smart Selective Sync
- Scan: Instantly analyze discrepancies.
- Create (CREATE): Builds structure in Timing.
- Archive (ARCHIVE): Archives inactive projects safely.
-
Intelligent Mapping
- Map complex names (e.g., "Agency GmbH") to clean folders (e.g., "Agency") via the UI settings.
-
Auto-Link & Rename
- Deep Linking (LINK): Links projects by ID on first run.
- Auto-Rename (RENAME): Updates names in Timing automatically if they change in Moco.
-
Inactive Project Cleanup
- Analyzes time entries for a given date range.
- Suggests archiving projects with zero activity.
- Setup:
- Configure
.env(copy from.env.example). - (Optional) Prepare mappings:
cp mappings.json.example mappings.json
- Configure
- Run:
npm install node server.js
- Open: http://localhost:3001
Developed with ❤️ by Waterproof Web Wizard GmbH
Built by Dennis Huettner