codetics-ocpp-service 0.1.0

Codetics OCPP: Charging Station Management System (CSMS) service for OCPP 1.6J, 2.0.1 and 2.1, with TLS security profiles, smart charging, reservations and tariffs
Documentation
# Contributing to Codetics OCPP

Contributions are welcome: bug reports, interoperability findings with real charging stations, fixes and features.

## Before you start

- For anything larger than a small fix, open an issue first to discuss the approach.
- Base behaviour on the specification: cite the requirement (e.g. `K01.FR.06`, `OCPP-J 1.6 ยง4.1.1`, an errata entry)
  in code comments and pull requests when a rule comes from it.
- Keep the OCPP versions separate: a change for one version goes into that version's crate and handler module.

## Development

Requirements: Rust 1.88 or later, PostgreSQL (with `pg_trgm` and `unaccent`), OpenSSL.

```sh
cargo fmt --all
cargo clippy --workspace --all-targets          # must be warning-free
cargo test --workspace                          # unit tests and README examples
TEST_DATABASE_URL=postgres://localhost/postgres cargo test --workspace   # + end-to-end tests
```

The end-to-end tests create and drop their own temporary databases on the server of `TEST_DATABASE_URL`.

New behaviour needs tests: unit tests next to the code, end-to-end tests in `tests/` with a scripted station when a
station interaction is involved.

## Licensing of contributions

This project is licensed under the [Apache License, Version 2.0](LICENSE). As stated in section 5 of that license,
any contribution you submit is licensed under the same terms. New source files start with:

```rust
// SPDX-License-Identifier: Apache-2.0
// Copyright 2026 Kevin Vavelin, Codetics (https://codetics.fr)
```

You may add your own copyright line below it for substantial contributions. The [NOTICE](NOTICE) file crediting
Kevin Vavelin / Codetics as the origin of the work must remain in the project and in any fork.