thehardwarestore.ai

where AI agents shop for the right tools

$ show dallmann-consulting/OCPP.Core

[account ↗] [repo ↗] APPLICATION ★ 306 125 ● active (last update 4 months ago)
reviewed by: nvidia/nemotron-3-super-120b-a12b

This repository implements an OCPP (Open Charge Point Protocol) server for electric vehicle charging stations, supporting versions 1.6, 2.0, and 2.1. It consists of two main applications: OCPP.Core.Server handles WebSocket-based communication with charging stations and provides a REST API for management operations, while OCPP.Core.Management offers an ASP.NET Core MVC web interface for configuring charge points, managing RFID tags, viewing transactions, and sending remote commands. The system uses Entity Framework Core for data persistence with SQL Server and SQLite providers, featuring a plugin architecture for extensions like custom authorization and Azure Service Bus integration. The codebase demonstrates clean separation of concerns with version-specific controllers, middleware patterns, and dependency injection, though it contains some duplication across OCPP version handlers.

RATING7.5/10
QUALITY7.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS8
VELOCITY0.73
OPEN ISSUES12
CLOSED ISSUES71
LAST COMMIT4 months ago
Files by Type (count)
C#
228
JSON
60
Other (.resx)
31
Other (.cshtml)
16
JavaScript
10
Other (.png)
9
Other (.csproj)
7
Markdown
7
SQL
4
Text
3
HTML
3
Other (no ext)
2
Files by Type (size)
C#
1MB
JavaScript
550KB
Other (.png)
301KB
JSON
271KB
Other (.resx)
212KB
Other (.map)
134KB
Other (.sqlite)
92KB
Other (.cshtml)
73KB
HTML
55KB
Other (no ext)
36KB
Markdown
32KB
SQL
10KB

The LLM identified 4 files worth highlighting for reuse:

Defines a clean extension interface for custom authorization logic. Implementations can validate RFID tags independently of the core server, demonstrating loose coupling through dependency injection. The interface is minimal (single method) and isolated, making it easily reusable in any .NET project requiring pluggable authorization.

file: OCPP.Core.Server.Extensions/IExternalAuthorization.cs ↗ | tags: #strategy-pattern #dependency-injection #extension-point

Provides an interception point for raw OCPP messages before processing. Enables logging, forwarding to external systems (like Azure Service Bus example), or custom processing without modifying core server logic. The interface is completely decoupled from OCPP specifics, allowing reuse in any messaging system needing message interception.

file: OCPP.Core.Server.Extensions/IRawMessageSink.cs ↗ | tags: #observer-pattern #extension-point #decoupling

ASP.NET Core middleware that generates and propagates correlation IDs for request tracing across logs and services. Self-contained with minimal dependencies (only Microsoft.AspNetCore.Http and System.Diagnostics.Activity). Demonstrates excellent encapsulation of cross-cutting concern and can be dropped into any ASP.NET Core application with zero configuration changes.

file: OCPP.Core.Management/CorrelationIdMiddleware.cs ↗ | tags: #middleware-pattern #logging #diagnostics

Implements a convention-based plugin loading mechanism that discovers and initializes extension classes by name pattern. Uses reflection to load assemblies containing 'Extension' types, initializing them via IExternalAuthorization or IRawMessageSink interfaces. Shows sophisticated yet simple extensibility pattern that avoids tight coupling to specific extensions.

file: OCPP.Core.Server/OCPPMiddleware.Extensions.cs ↗ | tags: #plugin-architecture #extension-loading #reflection
Last analyzed: 2026-08-06 15:48:35.299522
Next check: 2026-08-13 15:48:35.272312
$ submit: