Delivery Tracker
Lead Developer
Real-time delivery-dispatch σύστημα που αναθέτει παραγγελίες σε οδηγούς βάσει απόστασης, τρέχοντος φόρτου και ιστορικής απόδοσης. PostGIS spatial queries, Socket.IO driver tracking, scoring-based assignment που iterate-άρισα με την ομάδα του dispatch.
Το σύστημα
Το Delivery Tracker είναι ένα real-time delivery-dispatch σύστημα που αναθέτει εισερχόμενες παραγγελίες σε οδηγούς βάσει απόστασης, τρέχοντος φόρτου και ιστορικής απόδοσης. Κάθε οδηγός τρέχει ένα mobile client που στέλνει GPS position μέσω Socket.IO. Ο dispatcher βλέπει live map. Όταν έρχεται νέα παραγγελία, ένας scoring αλγόριθμος επιλέγει τον καλύτερο οδηγό (πλησιέστερος, ελεύθερος, με καλή βαθμολογία) και η παραγγελία προσφέρεται σε αυτόν. Το PostGIS χειρίζεται τα spatial queries (within-radius, route-distance approximations). Single-tenant, internal-only — χτισμένο για μια ομάδα dispatch ώστε να συντονίζει οδηγούς σε όλη την πόλη.
Αρχιτεκτονική
- API: Fastify (Node 22) + PostgreSQL + PostGIS extension + Drizzle ORM
- Realtime: Socket.IO με ξεχωριστά channels για οδηγούς (position uplink) και dispatchers (live map)
- Spatial layer: PostGIS για within-radius queries και route-distance approximations, indexed για sub-100ms response
- Driver scoring: weighted formula που συνδυάζει straight-line distance, τρέχοντα active load, πρόσφατο rating, και acceptance rate
- Dispatcher frontend: React 19 + TanStack Query, live map rendered με Mapbox GL
Η συνεισφορά μου
Έχτισα το σύστημα μόνος μου. Η αρχιτεκτονική απόφαση που μέτρησε περισσότερο ήταν η χρήση PostGIS για spatial queries αντί για υπολογισμό αποστάσεων σε application code. Σε scale, να τρέχεις haversine math σε Node για κάθε οδηγό σε κάθε νέα παραγγελία θα χτυπούσε το request path. Το PostGIS χειρίζεται within-radius queries σε ταχύτητα indexed database, sub-100ms ακόμα και με εκατοντάδες οδηγούς online. Η formula βαθμολογίας οδηγών iterate-άριστηκε με πραγματική ανατροφοδότηση από την ομάδα dispatch: η πρώτη έκδοση έδινε μεγάλο βάρος στην απόσταση, αλλά πραγματικά tests έδειξαν ότι ο τρέχων φόρτος μετρά περισσότερο (ένας οδηγός ένα τετράγωνο μακριά με 3 ενεργές παραγγελίες είναι χειρότερος από έναν 1km μακριά με μηδέν). Κατέληξα σε weighted blend που η ομάδα dispatch επαλήθευσε έναντι παλιών runs πριν πάμε live.
Αποτελέσματα
- Live map όλων των ενεργών οδηγών, position-streamed μέσω Socket.IO
- Sub-100ms assignment decisions σε νέα παραγγελία, ακόμα και με εκατοντάδες οδηγούς online
- PostGIS-backed spatial queries που scale-άρουν με το μέγεθος της πόλης
- Scoring formula iterate-αρισμένη με πραγματική παραγωγική ανατροφοδότηση από την ομάδα dispatch
Σύνδεσμοι
- Internal-only deployment, no public URL.
Παρόμοια έργα
- TaskFlow: άλλο realtime multi-tenant σύστημα, αλλά task dispatch αντί για delivery dispatch
- Multi-tenant Calendar SaaS: άλλο Fastify + Drizzle + Socket.IO stack, αλλά κρατήσεις ραντεβού αντί για GIS-based dispatch