{"id":24963792,"url":"https://github.com/marco0antonio0/dirrochacms","last_synced_at":"2025-04-15T18:42:28.908Z","repository":{"id":275546173,"uuid":"926402821","full_name":"marco0antonio0/DirrochaCMS","owner":"marco0antonio0","description":"DirrochaCMS is a lightweight CMS for content management with an API for websites and apps. It supports easy editing, publishing, and deployment on Netlify and Vercel, using Firebase Firestore as a free NoSQL database.","archived":false,"fork":false,"pushed_at":"2025-03-16T20:10:57.000Z","size":6400,"stargazers_count":3,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-28T23:44:13.082Z","etag":null,"topics":["api","cms","collaborate","gerenciador-de-conteudo","interface-amigavel","javascript","nextjs","nodejs","typescript"],"latest_commit_sha":null,"homepage":"https://cms-demo.dirrocha.com","language":"TypeScript","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/marco0antonio0.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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}},"created_at":"2025-02-03T07:27:27.000Z","updated_at":"2025-03-13T20:27:26.000Z","dependencies_parsed_at":"2025-03-09T01:19:53.910Z","dependency_job_id":"a7866b5a-8582-4a17-8fac-326b4b2c0adf","html_url":"https://github.com/marco0antonio0/DirrochaCMS","commit_stats":null,"previous_names":["marco0antonio0/dirrochacms"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marco0antonio0%2FDirrochaCMS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marco0antonio0%2FDirrochaCMS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marco0antonio0%2FDirrochaCMS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marco0antonio0%2FDirrochaCMS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marco0antonio0","download_url":"https://codeload.github.com/marco0antonio0/DirrochaCMS/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249131170,"owners_count":21217684,"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","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":["api","cms","collaborate","gerenciador-de-conteudo","interface-amigavel","javascript","nextjs","nodejs","typescript"],"created_at":"2025-02-03T09:58:26.052Z","updated_at":"2025-04-15T18:42:28.869Z","avatar_url":"https://github.com/marco0antonio0.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 DirrochaCMS: Sua Solução Leve para Gerenciamento de Conteúdo\n\n\u003cdiv style=\"display: flex; flex-direction: row; gap: 10px; align-items: center; margin-bottom: 20px;\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/Next.js-black?style=for-the-badge\u0026logo=next.js\u0026logoColor=white\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/React-20232A?style=for-the-badge\u0026logo=react\u0026logoColor=61DAFB\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/Firebase-039BE5?style=for-the-badge\u0026logo=Firebase\u0026logoColor=white\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/Docker-0db7ed?style=for-the-badge\u0026logo=docker\u0026logoColor=ffffff\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/Node.js-339933?style=for-the-badge\u0026logo=nodedotjs\u0026logoColor=white\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/JavaScript-F7DF1E?style=for-the-badge\u0026logo=javascript\u0026logoColor=black\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/TypeScript-F7DF1E?style=for-the-badge\u0026logo=typescript\u0026logoColor=black\"\u003e\n\u003c/div\u003e\n\nDirrochaCMS é um Sistema de Gerenciamento de Conteúdo (CMS) leve e eficiente, projetado para simplificar a criação de endpoints de API e o gerenciamento de dados para sites e diversas aplicações. Construído pensando em desenvolvedores e equipes, o DirrochaCMS oferece uma solução rápida, personalizável e amigável para gerenciar o conteúdo de seus projetos web. Nosso objetivo é fornecer uma ferramenta intuitiva que torne o gerenciamento de conteúdo direto e descomplicado, economizando seu tempo e recursos.\n\n\u003c!-- [Ir para a documentação](#documentação-do-sistema-dirrochacms) --\u003e\n\n## ⬇️ Instruções de Instalação Rápida\n\nAntes de mergulhar nas funcionalidades do DirrochaCMS, siga estas instruções para configurar o projeto localmente:\n\n1.  **Clone o projeto com `degit`:**\n\n    ```bash\n    npx degit marco0antonio0/DirrochaCMS meu-projeto\n    cd meu-projeto\n    ```\n\n    *   Este comando copia o projeto para uma nova pasta chamada `meu-projeto`. Você pode substituir `meu-projeto` pelo nome que preferir.\n    * Certifique-se de ter o Node.js instalado na sua maquina.\n\n2.  **Instale as dependências:**\n\n    ```bash\n    npm install\n    # ou\n    yarn install\n    ```\n\n    *   Este comando instala todas as bibliotecas e pacotes necessários para o funcionamento do DirrochaCMS.\n\n3.  **Configure as Variáveis de Ambiente:**\n\n    *   **Crie o arquivo `.env`:** Copie o arquivo `.env.example` para `.env`.\n        ```bash\n        cp .env.example .env\n        ```\n    * **Acesse o Firebase:** No [Console do Firebase](https://console.firebase.google.com/), crie um novo projeto ou acesse um projeto existente.\n    * **Credenciais:** Obtenha as credenciais do seu projeto Firebase (chave de API, ID do projeto, domínio de autenticação, etc.) em:\n        *  Vá para as configurações do projeto e na aba **Geral** você encontra as credenciais e na aba **Contas de serviço** você pode gerar uma nova chave.\n    *   **Preencha o arquivo `.env`:** Substitua os valores de exemplo pelas suas credenciais do Firebase no arquivo `.env`:\n\n        ```env\n        NEXT_PUBLIC_FIREBASE_API_KEY=SUA_CHAVE_DE_API_DO_FIREBASE\n        NEXT_PUBLIC_FIREBASE_APP_ID=SEU_ID_DE_APP_DO_FIREBASE\n        NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=SEU_DOMÍNIO_DE_AUTENTICAÇÃO_DO_FIREBASE\n        NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=SEU_ID_DE_REMETENTE_DE_MENSAGENS_DO_FIREBASE\n        NEXT_PUBLIC_FIREBASE_PROJECT_ID=SEU_ID_DE_PROJETO_DO_FIREBASE\n        NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=SEU_BUCKET_DE_STORAGE_DO_FIREBASE\n        NEXT_PUBLIC_ENV=SEU_AMBIENTE (ex: development)\n        SECRET_KEY=SUA_CHAVE_SECRETA\n        ```\n\n4. **Pronto!** Agora você pode iniciar o projeto.\n\n    ```bash\n        npm run dev\n    ```\n    * Execute o comando para startar o ambiente de desenvolvimento do projeto\n\n---\n\n![DirrochaCMS Login Demo](/images/login-demo.dirrocha.com%20(1).png)\n\n## ✨ Principais Funcionalidades\n\nO DirrochaCMS oferece uma variedade de funcionalidades poderosas:\n\n*   **Criação de Endpoints Personalizados:** Defina e crie seus próprios endpoints de API para acessar e gerenciar seus dados.\n*   **Gerenciamento Intuitivo de Dados:** Use uma interface limpa e intuitiva para executar operações de Criar, Ler, Atualizar e Excluir (CRUD) em seus dados.\n*   **Estruturas de Dados Flexíveis:** Projete esquemas de dados personalizados com vários tipos de campos, como texto, números, booleanos e muito mais, para atender às necessidades do seu projeto.\n*   **Leve e de Alto Desempenho:** Construído com tecnologias de ponta para garantir alto desempenho e eficiência.\n*   **Integração Descomplicada:** Integre facilmente o DirrochaCMS com suas ferramentas e serviços existentes.\n*   **Gerenciamento de Usuários:** Crie e gerencie contas de usuário, controle o acesso e configure as definições diretamente dentro do CMS.\n*   **Autenticação:** Proteja seus endpoints com recursos de autenticação integrados, permitindo que você gerencie logins de usuário e proteja dados sensíveis.\n*   **Configurações de Usuário:** Defina se deseja usar usuários no sistema, permitindo que os usuários se registrem e façam login.\n*   **Pesquisa:** Pesquise por nome ou e-mail de forma rápida e simples.\n*   **Endpoints Dinâmicos:** Crie endpoints dinamicamente com os campos desejados, facilitando a personalização para suas necessidades.\n*   **Interface Amigável:** Interface fácil de usar e entender.\n\n**Exemplo Prático:** Imagine construir um blog. Com o DirrochaCMS, você pode facilmente criar endpoints para posts, categorias, autores e comentários, gerenciando todo esse conteúdo por meio de uma interface amigável. Você também pode implementar recursos de gerenciamento de usuários e autenticação para uma experiência de blog mais robusta.\n\n## 🛠️ Stack de Tecnologias\n\nUtilizamos uma poderosa combinação de tecnologias:\n\n*   ✅ **Firebase API:** Serve como backend para persistência de dados e autenticação. Garante escalabilidade e facilidade de integração.\n*   ✅ **Rotas de API Next.js:** Permite a criação de endpoints de API, oferecendo alto desempenho e uma ótima experiência para o desenvolvedor.\n*   ✅ **Next.js:** O framework para construir a interface de usuário do aplicativo. Ele oferece renderização do lado do servidor e desempenho excepcional.\n*   ✅ **Docker:** Possibilita a conteinerização, garantindo portabilidade e consistência entre diferentes ambientes.\n*   ✅ **Docker Compose:** Simplifica a orquestração de múltiplos contêineres, agilizando o desenvolvimento e a implantação.\n* ✅ **React:** Usado para construir a interface do usuário.\n* ✅ **Heroui:** Uma biblioteca de UI para React, facilita o desenvolvimento.\n* ✅ **Lodash.debounce:** Função para evitar execuções excessivas.\n* ✅ **React-hot-toast:** Sistema de notificações.\n\n## ⚙️ Pré-requisitos e Instalação (Detalhada)\n\nAntes de começar, certifique-se de ter o seguinte instalado:\n\n1.  **Node.js (v16+):** O ambiente de execução JavaScript.\n\n    *   [Baixar Node.js](https://nodejs.org/)\n\n2.  **npm ou yarn:** O gerenciador de pacotes para instalar as dependências do projeto.\n3.  **Docker e Docker Compose:** Para conteinerização e gerenciamento de serviços.\n\n    *   [Instalar Docker](https://docs.docker.com/get-docker/)\n\n### Instalação\n\n1.  **Clone o Repositório (Se já tiver feito usando npx degit, pule esse passo):**\n\n    ```bash\n    git clone https://github.com/marco0antonio0/DirrochaCMS\n    cd DirrochaCMS\n    ```\n\n### Opções de Implantação\n\n#### **Implantação em um VPS (Servidor Privado Virtual):**\n\n1.  **Instale as Dependências:**\n\n    ```bash\n    npm install\n    # ou\n    yarn install\n    ```\n\n2.  **Construa a Aplicação:**\n\n    ```bash\n    npm run build\n    # ou\n    yarn build\n    ```\n\n3.  **Inicie o ambiente de desenvolvimento:**\n\n    ```bash\n    npm run dev\n    # ou\n    yarn dev\n    ```\n\n4.  **Execute com Docker:**\n\n    ```bash\n    docker build -t dirrocha-cms .\n    docker run -p 3000:3000 dirrocha-cms .\n    ```\n\n    A aplicação estará acessível em `http://localhost:3000`.\n\n#### **Implantação no Netlify ou Vercel:**\n\n1.  **Configure as Variáveis de Ambiente do Firebase:**\n\n    *   Crie um projeto no [Console do Firebase](https://console.firebase.google.com/).\n    *   Obtenha as credenciais do seu projeto (chave de API, ID do projeto, etc.).\n    *   Verifique se o arquivo `.env` foi criado e se ele contem todas as credenciais.\n\n2.  **Implante:**\n    *   Simplesmente envie os arquivos do seu projeto para um repositório e conecte-o ao Netlify ou Vercel. Eles cuidarão do processo de implantação.\n\n## 🚀 Como Usar o DirrochaCMS\n\n### Página Inicial (index.tsx)\n\n![Página Inicial do DirrochaCMS](/images/4.png)\n\n1.  **Acesse a Aplicação:** Abra seu navegador e vá para `http://0.0.0.0:3000`.\n2.  **Navegação:** Você será direcionado à página inicial, onde poderá visualizar os endpoints existentes ou gerenciar usuários.\n3.  **Abas:** Na página inicial, você pode ver as abas \"Endpoints\" e \"Usuários\".\n4. **Pesquisa:** Na página inicial, você tem uma opção de pesquisa para encontrar seus endpoints ou usuários.\n\n#### **Gerenciando Endpoints:**\n\n*   **Visualizar Endpoints:** A página inicial lista todos os endpoints criados.\n*   **Acessar Dados do Endpoint:** Clique em um endpoint para visualizar e gerenciar seus dados.\n*   **Criar Novos Endpoints:** Clique em \"Configurações\" para ir à página de criação.\n*   **Logout:** Clique no ícone de logout para sair.\n* **Documentação:** Clique no link azul para ir para documentação.\n\n#### **Gerenciando Usuários:**\n\n*   **Visualizar Usuários:** A página inicial possui uma aba \"Usuários\" onde você pode ver todos os usuários registrados.\n*   **Excluir Usuários:** Na aba \"Usuários\", você pode excluir usuários.\n\n### Página de Criação de Endpoint (create.tsx)\n\n![Criar Endpoint no DirrochaCMS](/images/8.png)\n\n1.  **Acessar a Página:** Clique em \"Configurações\" na página inicial para acessar a página de Criação de Endpoint.\n2.  **Criar Endpoints:**\n    *   **Nome do Endpoint:** Insira o nome desejado para seu novo endpoint.\n    *   **Selecionar Campos:** Escolha os campos (tipos de dados) que deseja incluir no endpoint.\n    *   **Salvar:** Clique em \"Criar endpoint\" para criar o novo endpoint.\n3.  **Configurações de Usuário:**\n    *   **Acessar Configurações de Usuário:** Clique na aba \"Users\" na página de Criação de Endpoint.\n    *   **Habilitar/Desabilitar Login:** Alterne \"Login de usuários\" para habilitar ou desabilitar o login de usuários.\n    *   **Habilitar/Desabilitar Registro:** Alterne \"Registro de usuários\" para habilitar ou desabilitar o registro de usuários.\n    * **Habilitar/Desabilitar logout:** Alterne \"Logout de usuários\" para habilitar ou desabilitar o logout de usuários.\n    *   **Salvar:** Clique em \"Salvar configuração\" para salvar suas configurações de usuário.\n4. **Validação:** A página possui um sistema de validação para verificar se você preencheu todos os campos corretamente.\n5. **Endpoint:** Na aba \"Endpoint\" você pode criar o seu endpoint customizado.\n\n### Gerenciar Dados\n\n![Lista de Itens no DirrochaCMS](/images/6.png)\n![Criar Item no DirrochaCMS](/images/7.png)\n\n1.  **Acessar um Endpoint:** Vá para a página inicial e clique em um endpoint existente.\n2.  **Adicionar Novos Dados:** Clique no botão \"Adicionar\" para adicionar uma nova entrada de dados.\n3.  **Editar Dados:** Clique em uma entrada de dados existente para editá-la.\n4.  **Excluir Dados:** Ao editar uma entrada de dados, você encontrará uma opção para excluí-la.\n\n**Exemplos de Requisições de API:**\n\nAqui estão alguns exemplos de como interagir com seus endpoints de API personalizados:\n\n*   **GET Todos os Posts:**\n\n    ```bash\n    curl -X GET http://0.0.0.0:3000/api/posts\n    ```\n\n    **Resposta Esperada:**\n\n    ```json\n    [\n      {\n        \"id\": \"123\",\n        \"title\": \"Primeiro Post\",\n        \"content\": \"Conteúdo do primeiro post\",\n        \"author\": \"John Doe\"\n      },\n      {\n        \"id\": \"456\",\n        \"title\": \"Segundo Post\",\n        \"content\": \"Conteúdo do segundo post\",\n        \"author\": \"Jane Smith\"\n      }\n    ]\n    ```\n\n*   **POST Um Novo Post:**\n\n    ```bash\n    curl -X POST \\\n      -H \"Content-Type: application/json\" \\\n      -d '{\n        \"title\": \"Novo Post do Blog\",\n        \"content\": \"Este é o conteúdo do novo post do blog.\",\n        \"author\": \"Seu Nome\"\n      }' \\\n      http://0.0.0.0:3000/api/posts\n    ```\n\n    **Resposta Esperada:**\n\n    ```json\n    {\n      \"id\": \"789\",\n      \"title\": \"Novo Post do Blog\",\n      \"content\": \"Este é o conteúdo do novo post do blog.\",\n      \"author\": \"Seu Nome\"\n    }\n    ```\n\n*   **PUT (Atualizar) um Post Existente:**\n\n    ```bash\n    curl -X PUT \\\n      -H \"Content-Type: application/json\" \\\n      -d '{\n        \"title\": \"Título Atualizado do Post do Blog\",\n        \"content\": \"Este é o conteúdo atualizado.\"\n      }' \\\n      http://0.0.0.0:3000/api/posts/789\n    ```\n\n*   **DELETE um Post:**\n\n    ```bash\n    curl -X DELETE http://0.0.0.0:3000/api/posts/789\n    ```\n\n**Exemplos de Requisições de Autenticação**\n\n*   **Login de Usuário:**\n    ```bash\n    curl -X POST \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n    \"email\":\"teste@teste.com\" ,\n    \"password\":\"senha123\"\n    }' \\\n    http://0.0.0.0:3000/api/user/login\n    ```\n\n    **Resposta Esperada:**\n\n    ```json\n    {\n      \"token\": \"...\"\n    }\n    ```\n\n*   **Registrar Usuário:**\n    ```bash\n    curl -X POST \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n    \"name\":\"teste\",\n    \"email\":\"teste@teste.com\" ,\n    \"password\":\"senha123\"\n    }' \\\n    http://0.0.0.0:3000/api/user/register\n    ```\n\n    **Resposta Esperada:**\n\n    ```json\n    {\n      \"token\": \"...\"\n    }\n    ```\n\n*   **Logout de Usuário:**\n    ```bash\n    curl -X POST \\\n    -H \"Content-Type: application/json\" \\\n    -H \"Authorization: Bearer eyJhbGciO...\"\\\n    http://0.0.0.0:3000/api/user/logout\n    ```\n\n    **Resposta Esperada:**\n\n    ```json\n    {\n      \"message\": \"Token invalidado com sucesso.\"\n    }\n    ```\n\n## 📁 Estrutura de Diretórios\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarco0antonio0%2Fdirrochacms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarco0antonio0%2Fdirrochacms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarco0antonio0%2Fdirrochacms/lists"}