{"id":30755048,"url":"https://github.com/FlipSoftware/moovolt-csms","last_synced_at":"2025-09-04T10:03:56.665Z","repository":{"id":272009106,"uuid":"860126219","full_name":"FlipSoftware/moovolt-csms","owner":"FlipSoftware","description":"A Universal CSMS for OCPP Protocol: An Integrated Cross-Platform and Cross-Vendor Solution for Electric Vehicle Chargers","archived":false,"fork":false,"pushed_at":"2025-01-28T15:00:29.000Z","size":30,"stargazers_count":2,"open_issues_count":0,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-04-10T20:17:05.627Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FlipSoftware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2024-09-19T21:42:59.000Z","updated_at":"2025-01-28T15:00:32.000Z","dependencies_parsed_at":"2025-04-10T20:02:36.037Z","dependency_job_id":null,"html_url":"https://github.com/FlipSoftware/moovolt-csms","commit_stats":null,"previous_names":["flipsoftware/moovolt-csms"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/FlipSoftware/moovolt-csms","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlipSoftware%2Fmoovolt-csms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlipSoftware%2Fmoovolt-csms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlipSoftware%2Fmoovolt-csms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlipSoftware%2Fmoovolt-csms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FlipSoftware","download_url":"https://codeload.github.com/FlipSoftware/moovolt-csms/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlipSoftware%2Fmoovolt-csms/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273588898,"owners_count":25132857,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-04T02:00:08.968Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-09-04T10:01:24.840Z","updated_at":"2025-09-04T10:03:56.656Z","avatar_url":"https://github.com/FlipSoftware.png","language":"Rust","funding_links":[],"categories":["Tools and Resources"],"sub_categories":["OCPP"],"readme":"\u003e [!NOTE]  \n\u003e Backend CSMS da Moovolt \u003cbr\u003e  \n\u003e Arquivado: https://github.com/FlipSoftware/moovolt-mvp\n\n\u003cdiv align='center'\u003e\n\n  # Moov.olt  \n  A Revolução da Mobilidade Inteligente\n\n\u003c/div\u003e\n\n\u003cbr\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\n![App-workflow](https://github.com/user-attachments/assets/ba5f08f5-4fe9-42f1-981b-d89a39f652f4)\n\n\u003e [!IMPORTANT]  \n\u003e ## Arquitetura do Servidor  \n\u003e A aplicação adere ao protocolo [**OCPP**](https://en.wikipedia.org/wiki/Open_Charge_Point_Protocol). Ela consistirá num esquema cliente-servidor com dois componentes principais: \u003cbr\u003e  \n\u003e 1. [**Serviço de Ponto de Recarga (SPR)**]()  \n\u003e    - Ponto inicial de interação com estações de carregamento físicas (o carregador)  \n\u003e 2. [**Sistema de Gerenciamento (SG)**]()  \n\u003e    - Servidor responsável por permissões, pagamentos, lógica de funcionamento, etc. O [**SG**]() consiste em um modelo [**cliente-servidor**]() com o [**Servidor**]() se comunicando via protocolo [**AMQP**](https://pt.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol) com o [**SPR**]() (clientes)\n\n# Recursos Principais\n\n### **Escalabilidade**  \n- A arquitetura permite fácil escalabilidade adicionando [**SPR**]() adicionais, tornando-a adequada para gerenciar um grande número de estações de carregamento físicas sem depender de um único [**Servidor**]().  \n### **Flexibilidade e Extensibilidade**  \n- A separação de funções entre o [**SPR**]() e o [**SG**]() permite a fácil adição de novos recursos sem alterações significativas na arquitetura geral do sistema.  \n### **Gerenciamento de Desempenho**  \n- O sistema baseado em fila de mensagens, aliado ao backend escrito em [**Rust**](), permite multi-processamento, controle e prioridade de processamento, garantindo uma resposta rápida às solicitações dos clientes.  \n### **Abertura e Extensibilidade**  \n- Utilizando padrões abertos e tecnologias open-source populares, nos permite fácil integração com outros sistemas e serviços, como sistemas de pagamento, plataformas de controle e aplicações de terceiros.\n\n# 1. Estação de Recarga (SPR)\n\n![SPR-API](https://github.com/amindWalker/moov.olt-mvp/assets/66398400/ca002796-e967-4a56-a226-1e0506acd47e)\n\n- Não toma decisões nem contém qualquer lógica, apenas executa tarefas fornecidas pelo [**Servidor**]().  \n- Responsável pela interação direta com as estações de carregamento físicas.  \n- Estabelece conexões [Websocket](https://pt.wikipedia.org/wiki/WebSocket).  \n- Recebe e envia dados de/para as estações de carregamento.\n\n# 2. Sistema de Gerenciamento (SG)\n\n![SG](https://github.com/amindWalker/moov.olt-mvp/assets/66398400/e26be7b5-b054-4b9d-8bc8-a353313181b4)\n\n- Gerencia a lógica de negócios, incluindo permissões, controle do processo de carregamento e pagamentos.  \n- Não tem conhecimento sobre o funcionamento interno da [**SPR**]().  \n- Aceita dados requisitados pelo [**SPR**](), toma decisões e envia tarefas de volta para execução baseada no tipo de mensagem solicitada (mensagens da API do OCPP).  \n- Utiliza o protocolo [**AMQP**]() para comunicação com o [**SPR**]().\n\n\u003e [!IMPORTANT]  \n\u003e # BACKEND\n\n# **Rust**\n\n![Computer](https://github.com/amindWalker/moov.olt-mvp/assets/66398400/497be7d9-ecb9-4a24-8046-c0dea8a0a7b5)\n\n- **Alta performance e vasto ecossistema Web**  \n- **Uso eficiente de recursos do sistema**  \n- **Segurança verificável e garantida**\n\n#### Exemplo - Servidor Axum  \n```rust twoslash  \nuse axum::routing::{get, post};  \nuse serde::{Deserialize, Serialize};  \nuse tokio::net::TcpListener;\n\n#[tokio::main]  \nasync fn main() {  \n    let app = Router::new().route(\"/\", get(root));  \n    let sock = TcpListener::bind(\"0.0.0.0:3000\")  \n      .await.unwrap(); // run async with `hyper`  \n    axum::serve(sock, app).await.unwrap();  \n}  \n// responds with a static string  \nasync fn root() -\u003e \u0026'static str {  \n    \"Hello, World!\"  \n}\n```\n\n# OpenAPI\n\n\u003cimg src=\"https://github.com/amindWalker/moov.olt-mvp/assets/66398400/add86e0d-7bcb-4e48-91c6-1ff9926c7a74\" width=\"500\"\u003e\n\n- **[OpenAPI](https://www.openapis.org/)** é compatível com diversos ferramentas de desenvolvimento oferecendo flexibilidade na seleção de fornecedores.  \n- O conhecimento comum do OpenAPI entre desenvolvedores e engenheiros proporciona flexibilidade na contratação de pessoal.  \n- A abstração multi-linguagem facilita a adoção de inovações nos comportamentos da API, evitando a necessidade de reescritas totais.\n\n# RabbitMQ\n\n\u003cimg src=\"https://github.com/amindWalker/moov.olt-mvp/assets/66398400/7c906ae4-238c-45dd-8466-ad02087e7216\" width=\"500\"\u003e\n\n- O [RabbitMQ](https://www.rabbitmq.com/) suporta vários protocolos padrão abertos, incluindo [**AMQP**](https://pt.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol) e [**MQTT**](https://pt.wikipedia.org/wiki/MQTT). Existem várias bibliotecas de cliente disponíveis, que podem ser usadas com a linguagem de programação de sua escolha. Sem bloqueio de fornecedor!  \n- Oferece muitas opções para definir como suas mensagens vão do publicador (aplicação) para um ou muitos consumidores (roteamento, filtragem, streaming, etc).  \n- Garantia que a troca de mensagens não será interceptada, fornecendo segurança ao consumidores da aplicação.\n\n# PostgreSQL\n\n\u003cimg src=\"https://github.com/amindWalker/moov.olt-mvp/assets/66398400/963d9eba-97a1-4cd4-a7df-f76c8c04e5a1\" width=\"500\"\u003e\n\n- Conformidade com SQL  \n- Variedade rica de tipos de dados proporcionando flexibilidade na criação de diversas estruturas de dados  \n- [**Multi Processamento**](): recursos de indexação, transações e particionamento de tabelas favorecem operações concorrentes e processamento de alta performance.  \n- [**Segurança**](): possui um framework de segurança robusto com suporte para vários métodos de autenticação garantindo integridade e confidencialidade dos dados.\n\n# Docker\n\n![Docker](https://github.com/amindWalker/moov.olt-mvp/assets/66398400/8f2cd365-c604-4f75-b77a-eef6d0207fa9)\n\n- Oferece ambientes isolados ([**Máquinas Virtuais Linux**](https://pt.wikipedia.org/wiki/Virtualiza%C3%A7%C3%A3o)) para aplicativos, garantindo que cada aplicativo execute sem interferência de outros.  \n- Os contêineres compartilham o mesmo kernel do sistema operacional em uso, resultando em uma utilização mais eficiente de recursos em comparação com máquinas virtuais tradicionais.  \n- [**Portabilidade garantida**](): os contêineres podem ser executados em qualquer lugar (`localhost` ou nuvem) mantendo o mesmo comportamento.\n\n\u003e [!IMPORTANT]  \n\u003e # FRONTEND\n\n# TypeScript\n\n![TypeScript](https://github.com/amindWalker/moov.olt-mvp/assets/66398400/5ae875c0-b212-4b69-85a4-0cd1e0751e76)\n\n- [**Integração com JavaScript**](): sendo apenas um superconjunto do [**JavaScript**](), oferece compatibilidade total com o vasto ecossistema [**JavaScript**]().  \n- [**Adição de Tipos**](): com tipagem forte e um conceito de interfaces, o TypeScript torna mais fácil trabalhar em projetos grandes e complexos, fornecendo maior clareza e segurança.  \n- [**Tipagem Estática**](): oferece verificação de tipos estáticos durante o desenvolvimento, detectando erros antes mesmo da execução do código.\n\n# React\n\n![UI-UX](https://github.com/amindWalker/moov.olt-mvp/assets/66398400/cb61cdfc-5a07-46d7-85bc-3fe9bd9fb492)\n\n- [**Componentização**](): permite dividir a interface do usuário em componentes reutilizáveis, facilitando o desenvolvimento e manutenção de aplicações.  \n- [**Fluxo unidirecional**](): simplifica o gerenciamento de estado, tornando-o mais previsível e fácil de depurar. Extensível através do [**Redux**](https://redux-toolkit.js.org/).  \n- [**Virtual DOM**](): oferece uma atualização de página apenas nas partes necessárias da interface, resultando em um melhor desempenho e experiência do usuário.\n\n# TailwindCSS\n\n\u003cimg src=\"https://github.com/amindWalker/moov.olt-mvp/assets/66398400/069243d9-2920-49c5-b7b6-8007502328b8\" width=\"500\"\u003e\n\n- [**Produtividade**](): oferece classes pré-definidas para estilos comuns, acelerando o processo de desenvolvimento e permitindo prototipagem rápida.  \n- [**Customização Flexível**](): com base em classes utilitárias, facilita a personalização de estilos sem a obrigatoriedade de escrever [**CSS**]() personalizado, proporcionando flexibilidade total.  \n- [**Manutenção Simplificada**](): A abordagem baseada em utilitários torna a manutenção do código mais simples, pois as alterações de estilo são centralizadas e facilmente identificáveis.\n\nSe precisar de mais alguma alteração, é só avisar!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFlipSoftware%2Fmoovolt-csms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FFlipSoftware%2Fmoovolt-csms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFlipSoftware%2Fmoovolt-csms/lists"}