Arnaud Delcasse 606b84a60a
All checks were successful
Build and Push Docker Image / build_and_push (push) Successful in 1m53s
Update README
2026-01-05 14:57:42 +01:00
2025-03-05 00:30:53 +01:00
2025-10-16 17:21:45 +02:00
2025-10-16 17:21:45 +02:00
2025-10-16 17:21:45 +02:00
2025-10-08 09:01:37 +02:00
2025-10-08 09:01:37 +02:00
2025-05-28 07:32:24 +02:00
2025-03-05 00:30:53 +01:00
2025-10-08 09:01:37 +02:00
2025-10-08 09:01:37 +02:00
2025-06-16 13:01:16 +02:00
2026-01-05 14:57:42 +01:00

COOPGO Solidarity Transport

A microservice for managing solidarity transport, enabling volunteer drivers to provide rides to passengers in need. Part of the COOPGO cooperative mobility platform.

Features

  • Driver Availability Management: Drivers can declare their regular weekly availability slots
  • Journey Matching: Automatically matches passenger journey requests with available drivers based on time and location
  • Booking System: Full booking lifecycle management with status tracking
  • Route Calculation: Integration with Valhalla routing service for distance and duration calculations
  • Round-trip Support: Handles both one-way and return journeys with the "noreturn" toggle

Architecture

Components

├── handler/          # Business logic layer
├── servers/grpc/     # GRPC API server
│   ├── proto/        # Protocol buffer definitions
│   ├── server/       # GRPC service implementations
│   └── transformers/ # Type converters (proto <-> internal types)
├── storage/          # Data persistence layer (MongoDB, Memory, Mock)
└── types/            # Domain types

Dependencies

  • Routing Service: Valhalla-based routing for journey calculations
  • Storage: MongoDB (default), in-memory, or mock storage
  • GRPC: Service communication protocol

Configuration

Configuration is managed via Viper. Create a config.yaml file or use environment variables (with _ as separator).

Default Configuration

name: "COOPGO Solidarity Transport"
dev_env: false

storage:
  db:
    type: mongodb
    mongodb:
      host: localhost
      port: 27017
      db_name: coopgo_platform
      collections:
        drivers_regular_availabilities: solidarity_drivers_regular_availabilities
        bookings: solidarity_bookings
        driver_journeys: solidarity_driver_journeys

services:
  grpc:
    enable: true
    port: 8080

routing:
  type: valhalla
  valhalla:
    base_url: https://valhalla.coopgo.io

parameters:
  limits:
    distance:
      min: 4    # Minimum journey distance (km)
      max: 200  # Maximum journey distance (km)

Building

go build

Docker

docker build -t solidarity-transport \
  --build-arg ACCESS_TOKEN_USR=<git_username> \
  --build-arg ACCESS_TOKEN_PWD=<git_token> .

Running

./solidarity-transport

The GRPC server starts on port 8080 by default.

GRPC API

Driver Availabilities

Method Description
AddDriverRegularAvailability Add a single availability slot
AddDriverRegularAvailabilities Add multiple availability slots
GetDriverRegularAvailabilities Get all availabilities for a driver
DeleteDriverRegularAvailability Remove an availability slot

Driver Journeys

Method Description
GetDriverJourneys Search for available driver journeys matching a route and date
GetDriverJourney Get details of a specific journey
ToggleSolidarityTransportNoreturn Toggle round-trip/one-way mode for a journey

Bookings

Method Description
BookDriverJourney Create a booking for a journey
GetSolidarityTransportBookings List bookings (supports status filtering)
GetSolidarityTransportBooking Get a specific booking
UpdateSolidarityTransportBooking Update booking details
UpdateSolidarityTransportBookingStatus Update booking status

Testing

go test ./...

License

COOPGO

Description
No description provided
Readme 272 KiB
Languages
Go 99%
Dockerfile 1%