Validation library for EU driving and rest-time constraints based on Regulation (EC) No 561/2006.
$ dotnet add package Taskr.DrivingRestTaskr.DrivingRest is a lightweight .NET library that validates driver activity logs against core EU driving and rest-time constraints (Regulation (EC) No 561/2006).
It is designed for:
13 tests currently)using Taskr.DrivingRest;
var dayStart = new DateTime(2026, 1, 5, 0, 0, 0);
var log = new DriverActivityLog
{
DriverId = "driver-42",
Activities =
[
new()
{
Type = DriverActivityType.Rest,
Start = dayStart,
End = dayStart.AddHours(11)
},
new()
{
Type = DriverActivityType.Driving,
Start = dayStart.AddHours(11),
End = dayStart.AddHours(15.5)
},
new()
{
Type = DriverActivityType.Break,
Start = dayStart.AddHours(15.5),
End = dayStart.AddHours(16.25)
},
new()
{
Type = DriverActivityType.Driving,
Start = dayStart.AddHours(16.25),
End = dayStart.AddHours(18.5)
},
]
};
var violations = DrivingRestValidator.Validate(log);
foreach (var v in violations)
Console.WriteLine($"{v.Code} ({v.Article}): {v.Description}");
10.0Install from NuGet:
dotnet add package Taskr.DrivingRest
| Violation code | Regulation article | What is checked |
|---|---|---|
561/2006-ART7 | Article 7 | Max 4h30 continuous driving without qualifying break |
561/2006-ART6-DAILY | Article 6(1) | Daily driving exceeds 10h |
561/2006-ART6-DAILY-EXTENSIONS | Article 6(1) | More than 2 extended driving days (>9h) in one week |
561/2006-ART6-WEEKLY | Article 6(2) | Weekly driving exceeds 56h |
561/2006-ART6-FORTNIGHT | Article 6(3) | Consecutive 2-week driving exceeds 90h |
561/2006-ART8-DAILY-REST-24H | Article 8(2) | Qualifying daily/weekly rest not started within 24h |
561/2006-ART8-REDUCED-DAILY-REST | Article 8(4) | More than 3 reduced daily rests between weekly rests |
561/2006-ART8-WEEKLY-REST-INTERVAL | Article 8(6) | Weekly rest started too late (>6 x 24h interval) |
DATA-DRIVER-ID | Input contract | Missing/blank DriverId |
DATA-ACTIVITY-DURATION | Input contract | Activity with End <= Start |
DATA-ACTIVITY-ORDER | Input contract | Activities not in chronological order |
DATA-ACTIVITY-OVERLAP | Input contract | Overlapping activities |
DrivingRestValidator.Validate(DriverActivityLog driver) -> List<DrivingRestViolation>DriverActivityLog
DriverId (string, required)Activities (List<DriverActivity>)DriverActivity
Type (DriverActivityType)Start / End (DateTime, required)Duration (TimeSpan, computed)DrivingRestViolation
Code, Article, DescriptionWindowStart, WindowEndActual, AllowedDriverActivityType
Driving, Break, Rest, OtherWork, Availabilitydotnet build DrivingRestRegulation.slnx
dotnet test DrivingRestRegulation.slnx
This project is licensed under the MIT License. See LICENSE.