En mobilapplikation til at lave avanceret profitmaksimering, samt forbinde chauffører med virksomheder, der har brug for transporttjenester.
Vi har valgt ikke at implementere en stor global styles fil, da det blev uoverskueligt i takt med udvidelse af projektet. I stedet har vi valgt en komponentbaseret stylingtilgang, hvor hver komponent har styles i samme fil. Til videreudvikling af projektet, kunne en mere modulær opbygning af styles være en fordel ved yderligere skalering.
Applikationen laver ruteoptimering baseret på følgende komponenter:
- Primær: Google Routes Matrix API til præcis afstand og køretid mellem alle punkter
- Fallback: Haversine formel (fugleflugtslinje med jordens krumning) hvis API ikke er tilgængelig
- Vehicle Routing Problem (VRP) løsning via NVIDIA CUOPT
- Tager højde for:
- Tidsvinduer for leveringer
- Køre/hviletidsregler
- Lastkapacitet
- Servicetid ved stop
- Prioriteter på leveringer
- Multiple depoter
- Betaling
- Optimerer for:
- Minimering af total køretid/distance
- Maksimering af antal leverede pakker
- Balancering af arbejdsbyrde mellem chauffører
- Indtastning af personlige oplysninger
- Indtastning af nummerplade
- "Scanning" (billedeupload) af kørekort
- Indtastning af lastkapacitet til rutegenerering
- Visning af nuværende rating
- Indtastning af startlokation og arbejdstid
- Præferenceindstillinger
- Oprettelse af arbejdsopgaver med titel, billede, beskrivelse og pris
- Valg af start- og slutdestination via adresse eller kort
- Angivelse af datofrister
- Modtagelse af chaufførtilbud og accept af enkeltchauffører
- Favoritchauffører liste
- Liste og kortvisning af tilgængelige opgaver
- Detaljeret opgavevisning med placering, estimeret indtjening og virksomhedens rating
- Mulighed for at acceptere eller afvise opgaver
- Statusoverblik og afslutning af opgaver
- Indtastning og visning af eksisterende ruter
- Filtrering af opgaver efter tilgængelig kapacitet
- Push notifikationer om nye opgaver og statusopdateringer
- React Native med Expo
- Firebase
- Authentication
- Realtime Database
- GeoCode Maps API
- Google Maps Distance Matrix API
git clone [repository-url]
cd CargoConnect
npm install- Opret et nyt Firebase projekt på Firebase Console
- Aktiver Authentication med email/password
- Aktiver Realtime Database
- Download Firebase konfigurationsfilen
Opret en .env fil i roden af projektet med følgende variabler:
# Firebase Config
FIREBASE_API_KEY=din-api-nøgle
FIREBASE_AUTH_DOMAIN=dit-projekt.firebaseapp.com
FIREBASE_DATABASE_URL=https://dit-projekt.firebaseio.com
FIREBASE_PROJECT_ID=dit-projekt-id
FIREBASE_STORAGE_BUCKET=dit-projekt.appspot.com
FIREBASE_MESSAGING_SENDER_ID=din-sender-id
FIREBASE_APP_ID=din-app-id
# GeoCode Maps API
GEOCODE_MAPS_APIKEY=din-geocode-api-nøgle
# Google Maps (Valgfrit - bruges til ruteoptimering. Fallback er "Haversine" - fugleflugt med jordens hældning indregnet)
GOOGLE_MAPS_API_KEY=din-google-maps-api-nøgle
npx expo start├── users/
│ └── [userId]/
│ ├── dimensions/
│ │ ├── height
│ │ ├── length
│ │ └── width
│ ├── licensePlate
│ ├── maxCargoWeight
│ ├── role: "trucker" | "company"
│ ├── startLatitude
│ ├── startLongitude
│ └── vehicleId
├── deliveries/
│ └── [deliveryId]/
│ ├── companyId
│ ├── deliveryAddress
│ ├── deliveryDetails
│ ├── deliveryLocation/
│ │ ├── latitude
│ │ └── longitude
│ ├── earliestStartTime
│ ├── height
│ ├── isMandatory
│ ├── latestEndTime
│ ├── length
│ ├── payment
│ ├── pickupAddress
│ ├── pickupLocation/
│ │ ├── latitude
│ │ └── longitude
│ ├── priority
│ ├── prize
│ ├── requests/
│ │ └── [truckerId]/
│ │ ├── licensePlate
│ │ ├── rating
│ │ ├── requestTime
│ │ ├── routeId
│ │ ├── truckType
│ │ ├── truckerName
│ │ └── truckerProfile
│ ├── serviceTime
│ ├── status
│ ├── weight
│ └── width
├── notifications/
│ └── [userId]/
│ └── [notificationId]/
│ ├── deliveryId
│ ├── message
│ ├── status
│ ├── timestamp
│ ├── truckerId
│ └── type
└── routes/
└── [userId]/
├── distances
├── durations
└── locations