Update README
All checks were successful
Build and Push Docker Image / build_and_push (push) Successful in 1m53s
All checks were successful
Build and Push Docker Image / build_and_push (push) Successful in 1m53s
This commit is contained in:
132
README.md
132
README.md
@@ -1,11 +1,131 @@
|
|||||||
# COOPGO Solidarity Transport
|
# 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
|
## Features
|
||||||
- passenger journeys requests
|
|
||||||
- matching between passenger journeys requests and driver availabilities
|
|
||||||
|
|
||||||
## 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
|
||||||
|
|||||||
Reference in New Issue
Block a user