{"id":29571711,"url":"https://github.com/oxdrtech/gerenciador-escolar-backend","last_synced_at":"2026-04-14T04:31:21.532Z","repository":{"id":264717844,"uuid":"894190885","full_name":"oxdrtech/gerenciador-escolar-backend","owner":"oxdrtech","description":null,"archived":false,"fork":false,"pushed_at":"2024-12-17T01:17:44.000Z","size":155,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-26T16:42:31.915Z","etag":null,"topics":["docker","jest","nestjs","postgresql","prisma"],"latest_commit_sha":null,"homepage":"","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/oxdrtech.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":"2024-11-25T23:12:38.000Z","updated_at":"2024-12-20T03:14:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"e0ced01e-e53c-4685-8b9d-81f057e29a6b","html_url":"https://github.com/oxdrtech/gerenciador-escolar-backend","commit_stats":null,"previous_names":["ddr23/rid-95554---desafio-07","ddr23/gerenciador-escolar-backend","oxdrtech/gerenciador-escolar-backend"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/oxdrtech/gerenciador-escolar-backend","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxdrtech%2Fgerenciador-escolar-backend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxdrtech%2Fgerenciador-escolar-backend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxdrtech%2Fgerenciador-escolar-backend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxdrtech%2Fgerenciador-escolar-backend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oxdrtech","download_url":"https://codeload.github.com/oxdrtech/gerenciador-escolar-backend/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxdrtech%2Fgerenciador-escolar-backend/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31782736,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T02:24:21.117Z","status":"ssl_error","status_checked_at":"2026-04-14T02:24:20.627Z","response_time":153,"last_error":"SSL_read: 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":["docker","jest","nestjs","postgresql","prisma"],"created_at":"2025-07-19T04:07:40.257Z","updated_at":"2026-04-14T04:31:21.513Z","avatar_url":"https://github.com/oxdrtech.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## IMPORTANTE\nEsse repositório foi criado e desenvolvido para o Backend do desafio 07 da escola DNC. Este é um aplicativo NestJS que fornece APIs para gerenciar alunos. O projeto utiliza Prisma como ORM e PostgreSQL como banco de dados.\n\nNesse `README.dm` é possivel encontrar informações sobre:\n\n- [Etapas de desenvolvimento do desafio](#desenvolvimento)\n- [Tecnologias usadas](#tecnologias)\n- [Banco de dados](#banco)\n- [Instalações](#instalacoes)\n- [Funcionalidades](#funcionalidades)\n- [Exemplos de uso](#exemplos)\n- [Testes](#testes)\n\n#### URL da API:\nObs: Essa api ainda nao foi hospedada.\n\n#### Branchs:\n- **main**\n- **legacy** - nesta branch está o codigo original/antigo deste projeto\n\n## Leia-me:\n**Nota do aluno**: Depois de ler o contexto, analisar o projeto e entender os requisitos, para esse projeto que ainda estava em fase inicial, eu decidi que fazer uma migração total, não apenas da linguagem, mas de framework, de ORM e de linguagem.\n**Esse projeto foi migrado totalmente** para uma aplicação que usa **NestJS** como framework principal, aplicando conceitos de **SOLID** e **TDD**, para ORM e banco de dados foi escolhido **Prisma** + **PostegreSQL**, e no caso do banco em específico, foi decidido usar uma imagem do **PostegreSQL no docker (postgres:16.4-alpine3.20)**. No que diz respeito a **teste de integração** e **unitários**, era um requisito do projeto ter apenas teste de integração, **porem tambem foram adicionados teste unitários em todas as services** da aplicação pra que o projeto tenha uma abrangencia maior em diversos cenários de teste. **A plicação dessas medidas, ao meu ver, tornará o projeto mais morderno, mais seguro, mais sólido, mais escalável e de melhor manutenção**.\n\n---\n\u003ca id=\"desenvolvimento\"\u003e\u003c/a\u003e\n\n# gerenciador-escolar-backend\n# Desafio-07---Aplique-testes-de-integração-para-uma-API-utilizando-TypeScript---Escola-DNC\n\n🎯Etapas de Desenvolvimento\n\n### ETAPA-01 - Migração para TypeScript\n- Instalação do TypeScript: Certifique-se de que você tem o TypeScript instalado globalmente ou no projeto. Caso não tenha, você pode instalar utilizando o npm: `npm install -g typescript`.\n- Criação do arquivo de configuração TypeScript: Utilize o comando `tsc --init` para criar o arquivo *tsconfig.json*. Neste arquivo, você pode configurar as opções do TypeScript para atender às necessidades do projeto.\n- Migração gradual: Comece a migrar seu código JavaScript para TypeScript, começando pelos principais arquivos e módulos. Isso envolve a adição de anotações de tipo aos seus objetos, funções e variáveis. Lembre-se de atualizar também as importações e exportações de módulos.\n\n### ETAPA-02 - Configuração do Jest\n- Instale o Jest como uma dependência de desenvolvimento no seu projeto: `npm install --save-dev jest @types/jest`.\n- Configuração do arquivo de teste: Crie um arquivo de configuração para o Jest, geralmente chamado de `jest.config.js`. Configure as opções necessárias para o ambiente de teste, como os diretórios de testes, extensões de arquivo e outras configurações específicas do projeto.\n\n### ETAPA-03 - Testes de Integração\n- Estrutura de diretórios: Organize os testes em uma estrutura de diretórios clara e consistente. Separe os testes por módulo ou funcionalidade para facilitar a manutenção.\n- Testes de Unidades vs. Testes de Integração: Certifique-se de que você está focando em testes de integração que abrangem múltiplos componentes e fluxos de funcionalidade. Isso pode incluir testes para chamadas de API, interações com bancos de dados e cenários de uso completos.\n- Cobertura abrangente: Garanta que seus testes cubram diferentes cenários, incluindo entradas válidas e inválidas, para garantir que o sistema seja resiliente.\n\n### ETAPA-04 -  Repositório em JS pronto\n- Aproveite o código existente: Utilize a API em JavaScript que está pronta para transforma-la em TypeScript e logo depois instalar o JEST.\n- Crie seu próprio repositório, se necessário: Se a API em JavaScript não atender às necessidades do projeto ou se for mais vantajoso começar do zero, crie seu próprio repositório. Certifique-se de documentar sua escolha e justificativa.\n\n\u0026nbsp;\n\u003ca id=\"tecnologias\"\u003e\u003c/a\u003e\n\n## Tecnologias usadas\n- Nest.js\n- Prisma\n- PostegreSQL\n- Jest\n- Docker\n\n\u0026nbsp;\n\u003ca id=\"banco\"\u003e\u003c/a\u003e\n\n## Banco de dados\n### Migration de criação da tabela alunos\n```sql\n-- CreateTable\nCREATE TABLE \"alunos\" (\n    \"id\" SERIAL NOT NULL,\n    \"ALUNO_NOME\" TEXT NOT NULL,\n    \"ALUNO_CPF\" TEXT NOT NULL,\n    \"createdAt\" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    \"updatedAt\" TIMESTAMP(3) NOT NULL,\n\n    CONSTRAINT \"alunos_pkey\" PRIMARY KEY (\"id\")\n);\n\n-- CreateIndex\nCREATE UNIQUE INDEX \"alunos_ALUNO_CPF_key\" ON \"alunos\"(\"ALUNO_CPF\");\n\n```\n\n### Diagrama EER\n![imgBB](https://i.ibb.co/jbP34cr/Captura-de-tela-2024-12-02-110037.png)\n\n\u0026nbsp;\n\u003ca id=\"instalacoes\"\u003e\u003c/a\u003e\n\n## Instalações\n\n\u0026nbsp;\nComandos para clonar esse projeto.\n\n - Clone o repositorio:\n\n```bash\n  https://github.com/DDR23/RID-95554---Desafio-07\n```\n- Adicione o arquivo `.env`.\n\n\u003ca id=\"dotenv\"\u003e\u003c/a\u003e\n\n```\nDATABASE_URL=\"postgresql://desafio-07:desafio-07@localhost:5432/desafio-07-db-v1?schema=public\"\n```\n\n- Dentro do repositorio execute:\n```bash\n  npm install\n```\n```bash\n  npx prisma generate\n```\n```bash\n  npx prisma migrate dev\n```\n\n- Execute o `docker-compose.yml`:\n```bash\n  docker-compose up -d\n```\n\n\u0026nbsp;\n\u003ca id=\"funcionalidades\"\u003e\u003c/a\u003e\n\n## Funcionalidades\n\n- `/alunos/create` Cadastra um novo aluno, com CPF unico.\n- `/alunos/:cpf` Retorna o aluno pelo CPF.\n- `/alunos` Retorna todos os alunos cadastrados.\n\n\u0026nbsp;\n\u003ca id=\"exemplos\"\u003e\u003c/a\u003e\n\n## Exemplos de uso\n\n### /alunos/create\n\n\u0026nbsp;\n**POST** - para inserir um novo registro\n```http\nhttps://localhost:8080/alunos/create\n```\n\u0026nbsp;\nÉ necessário passar esse objeto no body da requisição\n```json\n  {\n    \"ALUNO_NOME\": STRING,\n    \"ALUNO_CPF\": STRING\n  }\n```\n\n### /alunos/:cpf\n\n\u0026nbsp;\n**GET** - para listar um aluno por CPF\n```http\nhttps://localhost:8080/alunos/:cpf\n```\n\u0026nbsp;\nObs: lembre-se se subistituir o `:cpf` por um cpf válido\n\n### /alunos\n\n\u0026nbsp;\n**GET** - para um listar todos os alunos\n```http\nhttps://localhost:8080/alunos\n```\n\n\u0026nbsp;\n\u003ca id='testes'\u003e\u003c/a\u003e\n\n## Testes\n\nO projeto inclui testes de ponta a ponta usando Jest e Supertest. Os testes cobrem os pontos de extremidade da API. Além de testes de integração, também foram feitos testes unitários em todos os serviços. use os comandos para executar:\n\n#### Teste e2e (Integração):\n```bash\nnpm run test:e2e\n```\n\n#### Testes unitários:\n```bash\nnpx jest src/modules/alunos/services/\u003cNomeDoArquivo.service.spec.ts\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxdrtech%2Fgerenciador-escolar-backend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foxdrtech%2Fgerenciador-escolar-backend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxdrtech%2Fgerenciador-escolar-backend/lists"}