{"id":23733789,"url":"https://github.com/davbauer/ocpp-manager","last_synced_at":"2026-02-14T21:32:00.709Z","repository":{"id":270405213,"uuid":"903517087","full_name":"davbauer/ocpp-manager","owner":"davbauer","description":"OCPP Manager is an open-source EV charging station management platform built with HonoJS and SvelteKit. It supports charging station monitoring, RFID card management, and transaction tracking with a simple web interface.","archived":false,"fork":false,"pushed_at":"2025-11-27T15:04:53.000Z","size":3940,"stargazers_count":5,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-11-30T07:52:58.436Z","etag":null,"topics":["authorization","charging-stations","docker","ev-charging","honojs","management","ocpp","ocpp16j","postgresql","sveltekit"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/davbauer.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-12-14T19:57:51.000Z","updated_at":"2025-11-27T15:04:57.000Z","dependencies_parsed_at":"2025-05-26T10:05:44.618Z","dependency_job_id":null,"html_url":"https://github.com/davbauer/ocpp-manager","commit_stats":null,"previous_names":["davbauer/ocpp-manager"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/davbauer/ocpp-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davbauer%2Focpp-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davbauer%2Focpp-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davbauer%2Focpp-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davbauer%2Focpp-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davbauer","download_url":"https://codeload.github.com/davbauer/ocpp-manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davbauer%2Focpp-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29456239,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T21:29:27.764Z","status":"ssl_error","status_checked_at":"2026-02-14T21:28:11.111Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["authorization","charging-stations","docker","ev-charging","honojs","management","ocpp","ocpp16j","postgresql","sveltekit"],"created_at":"2024-12-31T05:19:34.629Z","updated_at":"2026-02-14T21:32:00.703Z","avatar_url":"https://github.com/davbauer.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# davbauer/ocpp-manager\n\n\u003cdiv style=\"text-align: center;\"\u003e\n  \u003cimg src=\"./assets/Logo.svg\" alt=\"OCPP Manager Logo\" height=\"80\"\u003e\n\u003c/div\u003e\n\n## Build Status\n\n| Branch | Build Status                                                                                                                 |\n| ------ | ---------------------------------------------------------------------------------------------------------------------------- |\n| main   | ![Build Status - main](https://github.com/davbauer/ocpp-manager/actions/workflows/push-image-main.yml/badge.svg?branch=main) |\n\n## Preview\n\n![Preview](./assets/preview.webp)\n\n## Overview\n\n\u003e [!WARNING]  \n\u003e This project is newly created and in its early stages of development. It may undergo significant changes, and there may still be unresolved issues or incomplete features.\n\u003e Use at your own risk and feel free to contribute or report any issues you encounter!\n\nOCPP Manager is an application built with [HonoJS](https://hono.dev/) for the backend and [SvelteKit](https://svelte.dev/) for the frontend.\n\n### Features:\n\n- **Charging Station Management**: Add and monitor charging stations and their associated connectors in real-time.\n- **RFID Card Setup**: Manage RFID cards with friendly names and set up expiring or permanent authorizations.\n- **Charge Authorization Control**: Fine-grained access control - assign specific chargers to RFID cards, with optional expiry dates.\n- **Transaction Records**: Track all charging sessions with detailed energy consumption, duration, and cost estimates.\n- **CSV Export**: Export transaction data to CSV format for accounting, billing, or analysis purposes.\n- **Real-time Monitoring**: Live updates on charger status, connector availability, and ongoing transactions.\n- **Administration Tools**: Configure system settings and manage application-wide preferences.\n- **Comprehensive Logging**: Built-in logging system for troubleshooting and audit trails.\n\n## Docker Compose Example\n\nFor a simpler setup, use the following `docker-compose.yml` configuration:\n\n```yaml\nservices:\n  ocpp-manager:\n    container_name: ocpp-manager-server\n    image: ghcr.io/davbauer/ocpp-manager:latest\n    environment:\n      DATABASE_URL: postgres://root:password@postgres:5432/app\n      NODE_ENV: production\n    ports:\n      - \"3000:3000\"\n    depends_on:\n      - postgres\n    volumes:\n      - logs_data:/workspace/api/logs\n    restart: unless-stopped\n    networks:\n      - ocpp_net\n\n  postgres:\n    container_name: ocpp-manager-postgres\n    image: postgres:18-alpine\n    environment:\n      POSTGRES_USER: root\n      POSTGRES_PASSWORD: password\n      POSTGRES_DB: app\n    volumes:\n      - postgres_data:/var/lib/postgresql\n    restart: unless-stopped\n    networks:\n      - ocpp_net\n\nvolumes:\n  postgres_data:\n    name: ocpp-manager_postgres_data\n  logs_data:\n    name: ocpp-manager_logs_data\n\nnetworks:\n  ocpp_net:\n    driver: bridge\n```\n\nThis will pull the latest image of the OCPP Manager from GitHub Container Registry and set up the required PostgreSQL database.\n\n1. **Accessing the Server:** Once the services are running, the OCPP Manager server will be available shortly at `http://HOSTED_IP:3000`. You can replace `3000:3000` in the `docker-compose.yml` file with your desired port to change the exposed port.\n2. **Startup Delay:** The PostgreSQL database may require a few seconds to initialize. Allow the webserver an additional ~10 seconds for the webserver to come online to accomodate for the database startup.\n\n## Connecting Chargers and Using Authorization\n\n### Steps to Connect Chargers from Vendors (e.g., go-e or ABL)\n\nNavigate to the monitoring page and click on the tutorial button.\nThe OCPP endpoint will be displayed. The tutorial will mention a `shortcode`.\n\n**What is a Shortcode?**\n\nA `shortcode` is a unique identifier that can be a charging station's serial number or a newly created name. Make sure to append this `shortcode` to the OCPP endpoint.\n\nOnce set up, the charging station will start sending heartbeat requests to the OCPP Manager. Within a few minutes, the charger should appear in the interface.\n\nClick `\"Edit\"` on the charger to accept it. After some minutes, the current state of the connectors and the charger itself should appear.\n\n_Your charger is now connected!_\n\n### How to Use Authorization\n\nThe authorization system allows you to control which RFID cards can access which charging stations, with optional expiry dates for time-limited access.\n\n**Managing RFID Tags:**\n- Navigate to the \"RFID Tags\" page to view all registered cards\n- Edit tags to update friendly names\n- View when each tag was issued and last used\n\n**Setting Up Charge Authorizations:**\n- Go to the \"Charge Authorizations\" page\n- Tags are grouped by card for easy management\n- Add charger access for each RFID tag individually\n- Set optional expiry dates for temporary access\n- Edit or remove access at any time\n\n#### Anonymous Charging\n\nStart charging. It will fail the first time, and a virtual RFID tag will appear in the RFID tag tab.\n\nAssign this virtual tag to a charge authorization.\n\nOnce the authorization is added, you should be allowed to charge.\n\n#### RFID Charging\n\nHold the RFID tag near the charging station. It should appear shortly in the interface, just like the anonymous tag.\n\nAssign the tag to a charge authorization, and you're ready to go!\n\n#### Transactions\n\nWhile transactions are running, they will be estimated in real-time based on meter values.\n\nOnce completed or aborted, the charger will update the transaction with the actual energy consumption and final details.\n\n**Transaction Features:**\n- View all transactions with filtering by charger, connector, RFID tag, and date range\n- Export filtered transactions to CSV for billing or analysis\n- Real-time energy consumption estimates for active charging sessions\n- Detailed meter readings (start/stop values in Wh)\n- Duration tracking and payment status\n- Delete transactions with confirmation prompts\n\n## Development Setup\n\n1. Rename `.env.example` files in both the `app` and `api` directories to `.env`.\n\n2. Install dependencies and build the frontend:\n\n   ```bash\n   cd app\n   yarn\n   yarn build\n   cd ../\n   ```\n\n3. Start the local development PostgreSQL database:\n\n   ```bash\n   cd local\n   docker compose up\n   ```\n\n4. In a new terminal, apply database migrations and start the API:\n\n   ```bash\n   cd api\n   yarn\n   yarn migrate:run\n   yarn dev\n   ```\n\nNow you're ready to start developing!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavbauer%2Focpp-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavbauer%2Focpp-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavbauer%2Focpp-manager/lists"}