{"id":26921499,"url":"https://github.com/odevthomas/api-event","last_synced_at":"2025-04-01T23:34:39.771Z","repository":{"id":285647020,"uuid":"958859669","full_name":"odevthomas/api-event","owner":"odevthomas","description":null,"archived":false,"fork":false,"pushed_at":"2025-04-01T22:30:57.000Z","size":109,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-01T23:28:25.548Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/odevthomas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-04-01T22:05:06.000Z","updated_at":"2025-04-01T22:31:00.000Z","dependencies_parsed_at":"2025-04-01T23:28:36.635Z","dependency_job_id":null,"html_url":"https://github.com/odevthomas/api-event","commit_stats":null,"previous_names":["odevthomas/api-event"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/odevthomas%2Fapi-event","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/odevthomas%2Fapi-event/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/odevthomas%2Fapi-event/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/odevthomas%2Fapi-event/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/odevthomas","download_url":"https://codeload.github.com/odevthomas/api-event/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246730059,"owners_count":20824393,"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":[],"created_at":"2025-04-01T23:34:39.158Z","updated_at":"2025-04-01T23:34:39.732Z","avatar_url":"https://github.com/odevthomas.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📌 API de Gerenciamento de Eventos\n\nEsta API foi desenvolvida utilizando **NestJS** para criação de uma aplicação robusta e escalável com o banco de dados **MongoDB**. A API permite o gerenciamento de eventos, possibilitando operações como a criação de um evento através de um sistema **RESTful**.\n\n![image](https://github.com/user-attachments/assets/e3571493-292e-431d-a495-3f3875a16f57)\n\n![image](https://github.com/user-attachments/assets/58d064b9-2353-4d51-a0bd-245847dd633d)\n\n\n---\n\n## 🚀 Tecnologias Utilizadas\n\n- **NestJS**: Framework de Node.js para construir aplicações escaláveis e eficientes.\n- **MongoDB**: Banco de dados NoSQL utilizado para armazenar as informações dos eventos.\n- **Mongoose**: ODM (Object Document Mapping) para MongoDB e Node.js.\n- **Postman**: Ferramenta para testar a API através de requisições HTTP.\n\n![Solicitação POST](image-1.png)\n\n---\n\n## ⚡ Funcionalidades\n\nA API oferece as seguintes funcionalidades:\n\n- **Create Event**: Criação de eventos com informações como nome, data, hora, descrição e valor.\n\n---\n\n## 📋 Pré-requisitos\n\nAntes de rodar o projeto, você precisa ter o seguinte instalado:\n\n- **Node.js**: Instalar o [Node.js](https://nodejs.org/).\n- **MongoDB**: Você pode usar uma instância local ou um serviço de MongoDB na nuvem, como o [MongoDB Atlas](https://www.mongodb.com/cloud/atlas).\n\n---\n\n## 📥 Instalação\n\n### 1️⃣ Clone o repositório:\n```bash\ngit clone https://github.com/seu-usuario/nome-do-repositorio.git\ncd nome-do-repositorio\n```\n\n### 2️⃣ Instale as dependências:\nCertifique-se de ter o Node.js instalado em sua máquina e depois execute:\n```bash\nnpm install\n```\n\n### 3️⃣ Configuração do MongoDB:\nVocê pode usar uma instância local do MongoDB ou criar uma conta no MongoDB Atlas e obter uma URL de conexão. Caso esteja utilizando o MongoDB Atlas, altere a string de conexão em `app.module.ts`:\n```typescript\nMongooseModule.forRoot('mongodb+srv://username:password@cluster0.mongodb.net/dbname?retryWrites=true\u0026w=majority')\n```\n\n![image](https://github.com/user-attachments/assets/cf9bd5fa-0f57-494e-8bcc-d84bb67b0913)\n\n\n### 4️⃣ Rodar a aplicação:\nPara rodar a aplicação em desenvolvimento:\n```bash\nnpm run start:dev\n```\nA aplicação estará rodando em **http://localhost:3000**.\n\n---\n\n## 🔗 Endpoints da API\n\n### 1️⃣ Criar Evento\n\n- **URL:** `/event/create`\n- **Método:** `POST`\n- **Body (JSON):**\n```json\n{\n  \"name\": \"Festa de Aniversário\",\n  \"date\": \"2025-05-15T20:00:00.000Z\",\n  \"hour\": 20,\n  \"description\": \"Uma grande festa para comemorar o aniversário.\",\n  \"value\": 150.50\n}\n```\n- **Resposta de Sucesso:**\n```json\n{\n  \"name\": \"Festa de Aniversário\",\n  \"date\": \"2025-05-15T20:00:00.000Z\",\n  \"hour\": 20,\n  \"description\": \"Uma grande festa para comemorar o aniversário.\",\n  \"value\": 150.50\n}\n```\n- **Resposta de Erro (Campos obrigatórios faltando):**\n```json\n{\n  \"statusCode\": 400,\n  \"message\": \"Event validation failed: name: Path 'name' is required., ...\",\n  \"error\": \"Bad Request\"\n}\n```\n\n---\n\n## 📂 Estrutura do Projeto\n\n```\n├── src/\n│   ├── event/\n│   │   ├── controllers/\n│   │   │   └── event.controller.ts\n│   │   ├── interfaces/\n│   │   │   └── iEventEntity.ts\n│   │   ├── repositories/\n│   │   │   └── createEvent.repository.ts\n│   │   ├── services/\n│   │   │   └── create-event.services.ts\n│   │   ├── schemas/\n│   │   │   └── event.schema.ts\n│   │   └── event.module.ts\n│   ├── app.controller.ts\n│   ├── app.module.ts\n│   └── app.service.ts\n└── package.json\n```\n\n### 📌 Detalhes de Cada Pasta:\n\n- **controllers**: Contém os controladores, responsáveis por manipular as requisições HTTP.\n- **interfaces**: Define as interfaces utilizadas em todo o projeto.\n- **repositories**: Contém os repositórios responsáveis pela interação com o banco de dados.\n- **services**: Contém os serviços, que contêm a lógica de negócios.\n- **schemas**: Define os esquemas do Mongoose, que representam os documentos no banco de dados.\n\n---\n\n## 🛠️ Testando a API\n\nUse o **Postman** ou qualquer outro cliente HTTP para testar os endpoints da API.\n\n### Exemplo de requisição:\n- **URL:** `http://localhost:3000/event/create`\n- **Método:** `POST`\n- **Body (com o tipo raw e JSON):**\n```json\n{\n  \"name\": \"Festa de Aniversário\",\n  \"date\": \"2025-05-15T20:00:00.000Z\",\n  \"hour\": 20,\n  \"description\": \"Uma grande festa para comemorar o aniversário.\",\n  \"value\": 150.50\n}\n```\n\n---\n\n## 🤝 Contribuição\n\nSe você deseja contribuir com o projeto, siga os seguintes passos:\n\n1. Faça um **fork** deste repositório.\n2. Crie uma **branch** para suas modificações:\n   ```bash\n   git checkout -b feature/novos-recursos\n   ```\n3. Faça o **commit** das suas mudanças:\n   ```bash\n   git commit -m 'Adicionando novos recursos'\n   ```\n4. Faça o **push** para a branch:\n   ```bash\n   git push origin feature/novos-recursos\n   ```\n5. Abra uma **pull request**.\n\n---\n\n## 📜 Licença\n\nEste projeto está licenciado sob a **MIT License**.\n\n---\n\n## 📖 Como Usar o Postman para Testar\n\n1. **Abra o Postman**.\n2. Selecione o método **POST** e insira a URL do endpoint: `http://localhost:3000/event/create`.\n3. Na aba **Body**, selecione a opção **raw** e defina o tipo como **JSON**.\n4. Cole o corpo da requisição no formato JSON, como mostrado acima.\n5. Clique em **Send** para enviar a requisição.\n\n---\n\n🔹 **Desenvolvido com ❤️ e NestJS**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fodevthomas%2Fapi-event","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fodevthomas%2Fapi-event","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fodevthomas%2Fapi-event/lists"}