https://github.com/marco0antonio0/dirrochacms
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.
https://github.com/marco0antonio0/dirrochacms
api cms collaborate gerenciador-de-conteudo interface-amigavel javascript nextjs nodejs typescript
Last synced: about 1 year ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/marco0antonio0/dirrochacms
- Owner: marco0antonio0
- License: mit
- Created: 2025-02-03T07:27:27.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-16T20:10:57.000Z (over 1 year ago)
- Last Synced: 2025-03-28T23:44:13.082Z (over 1 year ago)
- Topics: api, cms, collaborate, gerenciador-de-conteudo, interface-amigavel, javascript, nextjs, nodejs, typescript
- Language: TypeScript
- Homepage: https://cms-demo.dirrocha.com
- Size: 6.1 MB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# š DirrochaCMS: Sua Solução Leve para Gerenciamento de ConteĆŗdo
DirrochaCMS Ć© 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.
## ā¬ļø InstruƧƵes de Instalação RĆ”pida
Antes de mergulhar nas funcionalidades do DirrochaCMS, siga estas instruƧƵes para configurar o projeto localmente:
1. **Clone o projeto com `degit`:**
```bash
npx degit marco0antonio0/DirrochaCMS meu-projeto
cd meu-projeto
```
* Este comando copia o projeto para uma nova pasta chamada `meu-projeto`. VocĆŖ pode substituir `meu-projeto` pelo nome que preferir.
* Certifique-se de ter o Node.js instalado na sua maquina.
2. **Instale as dependĆŖncias:**
```bash
npm install
# ou
yarn install
```
* Este comando instala todas as bibliotecas e pacotes necessƔrios para o funcionamento do DirrochaCMS.
3. **Configure as VariƔveis de Ambiente:**
* **Crie o arquivo `.env`:** Copie o arquivo `.env.example` para `.env`.
```bash
cp .env.example .env
```
* **Acesse o Firebase:** No [Console do Firebase](https://console.firebase.google.com/), crie um novo projeto ou acesse um projeto existente.
* **Credenciais:** Obtenha as credenciais do seu projeto Firebase (chave de API, ID do projeto, domĆnio de autenticação, etc.) em:
* 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.
* **Preencha o arquivo `.env`:** Substitua os valores de exemplo pelas suas credenciais do Firebase no arquivo `.env`:
```env
NEXT_PUBLIC_FIREBASE_API_KEY=SUA_CHAVE_DE_API_DO_FIREBASE
NEXT_PUBLIC_FIREBASE_APP_ID=SEU_ID_DE_APP_DO_FIREBASE
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=SEU_DOMĆNIO_DE_AUTENTICAĆĆO_DO_FIREBASE
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=SEU_ID_DE_REMETENTE_DE_MENSAGENS_DO_FIREBASE
NEXT_PUBLIC_FIREBASE_PROJECT_ID=SEU_ID_DE_PROJETO_DO_FIREBASE
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=SEU_BUCKET_DE_STORAGE_DO_FIREBASE
NEXT_PUBLIC_ENV=SEU_AMBIENTE (ex: development)
SECRET_KEY=SUA_CHAVE_SECRETA
```
4. **Pronto!** Agora vocĆŖ pode iniciar o projeto.
```bash
npm run dev
```
* Execute o comando para startar o ambiente de desenvolvimento do projeto
---
.png)
## ⨠Principais Funcionalidades
O DirrochaCMS oferece uma variedade de funcionalidades poderosas:
* **Criação de Endpoints Personalizados:** Defina e crie seus próprios endpoints de API para acessar e gerenciar seus dados.
* **Gerenciamento Intuitivo de Dados:** Use uma interface limpa e intuitiva para executar operaƧƵes de Criar, Ler, Atualizar e Excluir (CRUD) em seus dados.
* **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.
* **Leve e de Alto Desempenho:** ConstruĆdo com tecnologias de ponta para garantir alto desempenho e eficiĆŖncia.
* **Integração Descomplicada:** Integre facilmente o DirrochaCMS com suas ferramentas e serviços existentes.
* **Gerenciamento de UsuƔrios:** Crie e gerencie contas de usuƔrio, controle o acesso e configure as definiƧƵes diretamente dentro do CMS.
* **Autenticação:** Proteja seus endpoints com recursos de autenticação integrados, permitindo que vocĆŖ gerencie logins de usuĆ”rio e proteja dados sensĆveis.
* **ConfiguraƧƵes de UsuƔrio:** Defina se deseja usar usuƔrios no sistema, permitindo que os usuƔrios se registrem e faƧam login.
* **Pesquisa:** Pesquise por nome ou e-mail de forma rƔpida e simples.
* **Endpoints Dinâmicos:** Crie endpoints dinamicamente com os campos desejados, facilitando a personalização para suas necessidades.
* **Interface AmigƔvel:** Interface fƔcil de usar e entender.
**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.
## š ļø Stack de Tecnologias
Utilizamos uma poderosa combinação de tecnologias:
* ā
**Firebase API:** Serve como backend para persistência de dados e autenticação. Garante escalabilidade e facilidade de integração.
* ā
**Rotas de API Next.js:** Permite a criação de endpoints de API, oferecendo alto desempenho e uma ótima experiência para o desenvolvedor.
* ā
**Next.js:** O framework para construir a interface de usuÔrio do aplicativo. Ele oferece renderização do lado do servidor e desempenho excepcional.
* ā
**Docker:** Possibilita a conteinerização, garantindo portabilidade e consistência entre diferentes ambientes.
* ā
**Docker Compose:** Simplifica a orquestração de múltiplos contêineres, agilizando o desenvolvimento e a implantação.
* ā
**React:** Usado para construir a interface do usuƔrio.
* ā
**Heroui:** Uma biblioteca de UI para React, facilita o desenvolvimento.
* ā
**Lodash.debounce:** Função para evitar execuções excessivas.
* ā
**React-hot-toast:** Sistema de notificaƧƵes.
## āļø PrĆ©-requisitos e Instalação (Detalhada)
Antes de comeƧar, certifique-se de ter o seguinte instalado:
1. **Node.js (v16+):** O ambiente de execução JavaScript.
* [Baixar Node.js](https://nodejs.org/)
2. **npm ou yarn:** O gerenciador de pacotes para instalar as dependĆŖncias do projeto.
3. **Docker e Docker Compose:** Para conteinerização e gerenciamento de serviços.
* [Instalar Docker](https://docs.docker.com/get-docker/)
### Instalação
1. **Clone o Repositório (Se jÔ tiver feito usando npx degit, pule esse passo):**
```bash
git clone https://github.com/marco0antonio0/DirrochaCMS
cd DirrochaCMS
```
### Opções de Implantação
#### **Implantação em um VPS (Servidor Privado Virtual):**
1. **Instale as DependĆŖncias:**
```bash
npm install
# ou
yarn install
```
2. **Construa a Aplicação:**
```bash
npm run build
# ou
yarn build
```
3. **Inicie o ambiente de desenvolvimento:**
```bash
npm run dev
# ou
yarn dev
```
4. **Execute com Docker:**
```bash
docker build -t dirrocha-cms .
docker run -p 3000:3000 dirrocha-cms .
```
A aplicação estarĆ” acessĆvel em `http://localhost:3000`.
#### **Implantação no Netlify ou Vercel:**
1. **Configure as VariƔveis de Ambiente do Firebase:**
* Crie um projeto no [Console do Firebase](https://console.firebase.google.com/).
* Obtenha as credenciais do seu projeto (chave de API, ID do projeto, etc.).
* Verifique se o arquivo `.env` foi criado e se ele contem todas as credenciais.
2. **Implante:**
* 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.
## š Como Usar o DirrochaCMS
### PƔgina Inicial (index.tsx)

1. **Acesse a Aplicação:** Abra seu navegador e vÔ para `http://0.0.0.0:3000`.
2. **Navegação:** Você serÔ direcionado à pÔgina inicial, onde poderÔ visualizar os endpoints existentes ou gerenciar usuÔrios.
3. **Abas:** Na pÔgina inicial, você pode ver as abas "Endpoints" e "UsuÔrios".
4. **Pesquisa:** Na pÔgina inicial, você tem uma opção de pesquisa para encontrar seus endpoints ou usuÔrios.
#### **Gerenciando Endpoints:**
* **Visualizar Endpoints:** A pƔgina inicial lista todos os endpoints criados.
* **Acessar Dados do Endpoint:** Clique em um endpoint para visualizar e gerenciar seus dados.
* **Criar Novos Endpoints:** Clique em "Configurações" para ir à pÔgina de criação.
* **Logout:** Clique no Ćcone de logout para sair.
* **Documentação:** Clique no link azul para ir para documentação.
#### **Gerenciando UsuƔrios:**
* **Visualizar UsuÔrios:** A pÔgina inicial possui uma aba "UsuÔrios" onde você pode ver todos os usuÔrios registrados.
* **Excluir UsuÔrios:** Na aba "UsuÔrios", você pode excluir usuÔrios.
### PÔgina de Criação de Endpoint (create.tsx)

1. **Acessar a PÔgina:** Clique em "Configurações" na pÔgina inicial para acessar a pÔgina de Criação de Endpoint.
2. **Criar Endpoints:**
* **Nome do Endpoint:** Insira o nome desejado para seu novo endpoint.
* **Selecionar Campos:** Escolha os campos (tipos de dados) que deseja incluir no endpoint.
* **Salvar:** Clique em "Criar endpoint" para criar o novo endpoint.
3. **ConfiguraƧƵes de UsuƔrio:**
* **Acessar Configurações de UsuÔrio:** Clique na aba "Users" na pÔgina de Criação de Endpoint.
* **Habilitar/Desabilitar Login:** Alterne "Login de usuƔrios" para habilitar ou desabilitar o login de usuƔrios.
* **Habilitar/Desabilitar Registro:** Alterne "Registro de usuƔrios" para habilitar ou desabilitar o registro de usuƔrios.
* **Habilitar/Desabilitar logout:** Alterne "Logout de usuƔrios" para habilitar ou desabilitar o logout de usuƔrios.
* **Salvar:** Clique em "Salvar configuração" para salvar suas configurações de usuÔrio.
4. **Validação:** A pÔgina possui um sistema de validação para verificar se você preencheu todos os campos corretamente.
5. **Endpoint:** Na aba "Endpoint" vocĆŖ pode criar o seu endpoint customizado.
### Gerenciar Dados


1. **Acessar um Endpoint:** VƔ para a pƔgina inicial e clique em um endpoint existente.
2. **Adicionar Novos Dados:** Clique no botão "Adicionar" para adicionar uma nova entrada de dados.
3. **Editar Dados:** Clique em uma entrada de dados existente para editĆ”-la.
4. **Excluir Dados:** Ao editar uma entrada de dados, vocĆŖ encontrarĆ” uma opção para excluĆ-la.
**Exemplos de RequisiƧƵes de API:**
Aqui estão alguns exemplos de como interagir com seus endpoints de API personalizados:
* **GET Todos os Posts:**
```bash
curl -X GET http://0.0.0.0:3000/api/posts
```
**Resposta Esperada:**
```json
[
{
"id": "123",
"title": "Primeiro Post",
"content": "ConteĆŗdo do primeiro post",
"author": "John Doe"
},
{
"id": "456",
"title": "Segundo Post",
"content": "ConteĆŗdo do segundo post",
"author": "Jane Smith"
}
]
```
* **POST Um Novo Post:**
```bash
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"title": "Novo Post do Blog",
"content": "Este Ć© o conteĆŗdo do novo post do blog.",
"author": "Seu Nome"
}' \
http://0.0.0.0:3000/api/posts
```
**Resposta Esperada:**
```json
{
"id": "789",
"title": "Novo Post do Blog",
"content": "Este Ć© o conteĆŗdo do novo post do blog.",
"author": "Seu Nome"
}
```
* **PUT (Atualizar) um Post Existente:**
```bash
curl -X PUT \
-H "Content-Type: application/json" \
-d '{
"title": "TĆtulo Atualizado do Post do Blog",
"content": "Este Ć© o conteĆŗdo atualizado."
}' \
http://0.0.0.0:3000/api/posts/789
```
* **DELETE um Post:**
```bash
curl -X DELETE http://0.0.0.0:3000/api/posts/789
```
**Exemplos de Requisições de Autenticação**
* **Login de UsuƔrio:**
```bash
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"email":"teste@teste.com" ,
"password":"senha123"
}' \
http://0.0.0.0:3000/api/user/login
```
**Resposta Esperada:**
```json
{
"token": "..."
}
```
* **Registrar UsuƔrio:**
```bash
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"name":"teste",
"email":"teste@teste.com" ,
"password":"senha123"
}' \
http://0.0.0.0:3000/api/user/register
```
**Resposta Esperada:**
```json
{
"token": "..."
}
```
* **Logout de UsuƔrio:**
```bash
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer eyJhbGciO..."\
http://0.0.0.0:3000/api/user/logout
```
**Resposta Esperada:**
```json
{
"message": "Token invalidado com sucesso."
}
```
## š Estrutura de Diretórios