Update README
All checks were successful
Build and Push Docker Image / build_and_push (push) Successful in 1m53s

This commit is contained in:
Arnaud Delcasse
2026-01-05 14:57:42 +01:00
parent e0882db1bc
commit 606b84a60a

132
README.md
View File

@@ -1,11 +1,131 @@
# COOPGO Solidarity Transport
COOPGO Solidarity Transport is a solidarity transport management microservice. It handles :
A microservice for managing solidarity transport, enabling volunteer drivers to provide rides to passengers in need. Part of the COOPGO cooperative mobility platform.
- driver availabilities declarations
- passenger journeys requests
- matching between passenger journeys requests and driver availabilities
## Features
## TO DO
- **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
- Save passenger trip requests
## 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
```yaml
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
```bash
go build
```
### Docker
```bash
docker build -t solidarity-transport \
--build-arg ACCESS_TOKEN_USR=<git_username> \
--build-arg ACCESS_TOKEN_PWD=<git_token> .
```
## Running
```bash
./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
```bash
go test ./...
```
## License
COOPGO