{"id":19905002,"url":"https://github.com/felipesantos92dev/node-tds-alunos","last_synced_at":"2025-05-03T01:33:28.364Z","repository":{"id":206462508,"uuid":"715592364","full_name":"FelipeSantos92Dev/node-tds-alunos","owner":"FelipeSantos92Dev","description":"Repositório modelo em NodeJS para os alunos do curso técnico em desenvolvimento de sistemas - SENAI","archived":false,"fork":false,"pushed_at":"2024-04-13T14:20:36.000Z","size":66,"stargazers_count":57,"open_issues_count":0,"forks_count":66,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-04-14T04:26:08.513Z","etag":null,"topics":["controller","express","javascript","models","nodejs","nodemon","repository","routes"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/FelipeSantos92Dev.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}},"created_at":"2023-11-07T13:04:59.000Z","updated_at":"2024-04-13T14:14:11.000Z","dependencies_parsed_at":"2023-11-21T14:30:00.903Z","dependency_job_id":"ef45086b-ea47-49b2-bee2-1cb200050ca4","html_url":"https://github.com/FelipeSantos92Dev/node-tds-alunos","commit_stats":null,"previous_names":["felipesantos92dev/node-tds-2023-alunos","felipesantos92dev/node-tds-alunos"],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FelipeSantos92Dev%2Fnode-tds-alunos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FelipeSantos92Dev%2Fnode-tds-alunos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FelipeSantos92Dev%2Fnode-tds-alunos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FelipeSantos92Dev%2Fnode-tds-alunos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FelipeSantos92Dev","download_url":"https://codeload.github.com/FelipeSantos92Dev/node-tds-alunos/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224346068,"owners_count":17296143,"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":["controller","express","javascript","models","nodejs","nodemon","repository","routes"],"created_at":"2024-11-12T20:30:51.924Z","updated_at":"2024-11-12T20:32:29.618Z","avatar_url":"https://github.com/FelipeSantos92Dev.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Projeto Inicial NodeJS\n\n## Descrição\n\nPonto de partida para desenvolvimento em NodeJS, integrando Express, Nodemon e dotenv para otimizar a produtividade e permitir que desenvolvedores foquem na lógica do aplicativo.\n\n## Objetivo\n\nEncorajar boas práticas e fornecer uma base que promova a escalabilidade e manutenção, inspirando a criação de funcionalidades inovadoras e soluções para desafios complexos no ecossistema NodeJS.\n\n## Tecnologias\n\n- NodeJS\n- NPM\n- Express\n- Nodemon\n- Git\n\n## Pré-requisitos\n\nPara executar este projeto é necessário ter instalado:\n\n- NodeJS\n- NPM\n\n## Etapas de criação do projeto\n\n1. Criar o arquivo `package.json` com o comando `npm init -y`\n2. Criar o arquivo `.gitignore` com o seguinte conteúdo:\n\n```\nnode_modules\n.env\n```\n\n3. Vincular o projeto ao repositório no Github\n4. Instalar o Express, Nodemon e dotenv com o comando `npm install express nodemon dotenv`\n5. Criação do arquivo `.env` com a variável `PORT=4000`\n6. Criar a pasta `src` e o arquivo `server.js` dentro dela com o código abaixo:\n\n```javascript\nimport express from \"express\"; // O express serve para criar o servidor\nimport { config } from \"dotenv\"; // O dotenv serve para ler as variáveis de ambiente\n\nconfig(); // Carrega as variáveis de ambiente\n\nconst port = process.env.PORT || 5000; // Pega a porta do arquivo .env ou usa a porta 5000\n\nconst app = express(); // Cria o servidor e armazena na variável app\napp.use(express.json()); // Configura o servidor para receber requisições com o formato JSON\n\n// Configura o servidor para responder a requisições na rota /\napp.get(\"/\", (req, res) =\u003e {\n  return res.status(200).send({ message: \"Hello World!\" });\n});\n\n// Inicia o servidor na porta configurada\napp.listen(port, () =\u003e\n  console.log(`⚡ Server started on http://localhost:${port}`)\n);\n```\n\n7. Adicionar o script `dev` no arquivo `package.json` com o comando `nodemon src/server.js`\n8. Adicionar a informação `\"type\": \"module\"` no arquivo `package.json`\n9. Executar o comando `npm run dev` para iniciar o projeto\n\nApós a execução dos passos acima, o projeto estará pronto para ser utilizado e você poderá avançar para a próxima etapa.\n\n## Criação dos arquivos de modelos\n\n1. Criar a pasta `models` e o arquivo `Aluno.js` dentro dela com o código abaixo:\n\n```javascript\nclass Aluno {\n  constructor(nome, idade, curso) {\n    this.id = this.gerarId();\n    this.nome = nome;\n    this.idade = idade;\n    this.curso = curso;\n  }\n\n  gerarId() {\n    return Math.floor(Math.random() * 1000);\n  }\n}\n\nexport default Aluno;\n```\n\n2. Criar a pasta `repositories` e o arquivo `AlunoRepository.js` dentro dela com o código abaixo:\n\n```javascript\nclass AlunoRepository {\n  constructor() {\n    this.alunos = [];\n  }\n\n  cadastrar(aluno) {\n    this.alunos.push(aluno);\n  }\n\n  listar() {\n    return this.alunos;\n  }\n\n  buscarPorId(id) {\n    return this.alunos.find((aluno) =\u003e aluno.id === id);\n  }\n\n  alterar(id, nome, idade, curso) {\n    const aluno = this.buscarPorId(id);\n\n    if (aluno) {\n      aluno.nome = nome;\n      aluno.idade = idade;\n      aluno.curso = curso;\n    }\n\n    return aluno;\n  }\n\n  excluir(id) {\n    const aluno = this.buscarPorId(id);\n\n    if (aluno) {\n      this.alunos = this.alunos.filter((aluno) =\u003e aluno.id !== id);\n    }\n  }\n}\n\nexport default AlunoRepository;\n```\n\n## Criação dos arquivos de controllers\n\n1. Criar a pasta `controllers` e o arquivo `aluno.controller.js` dentro dela com o código abaixo:\n\n```javascript\nimport AlunoRepository from \"../repositories/AlunoRepository.js\";\nimport Aluno from \"../models/Aluno.js\";\n\nconst alunoRepository = new AlunoRepository();\n\nexport const cadastrar(req, res) =\u003e {\n    const { nome, idade, curso } = req.body;\n\n    const aluno = new Aluno(nome, idade, curso);\n\n    alunoRepository.cadastrar(aluno);\n\n    return res.status(201).send(aluno);\n  }\n\nexport const listar(req, res) =\u003e {\n    const alunos = alunoRepository.listar();\n\n    return res.status(200).send(alunos);\n  }\n\nexport const buscarPorId(req, res) =\u003e {\n    const { id } = req.params;\n\n    const aluno = alunoRepository.buscarPorId(Number(id));\n\n    if (!aluno) {\n      return res.status(404).send({ message: \"Aluno não encontrado!\" });\n    }\n\n    return res.status(200).send(aluno);\n  }\n\nexport const alterar(req, res) =\u003e {\n    const { id } = req.params;\n    const { nome, idade, curso } = req.body;\n\n    const aluno = alunoRepository.alterar(Number(id), nome, idade, curso);\n\n    if (!aluno) {\n      return res.status(404).send({ message: \"Aluno não encontrado!\" });\n    }\n\n    return res.status(200).send(aluno);\n  }\n\nexport const excluir(req, res) =\u003e {\n    const { id } = req.params;\n\n    const aluno = alunoRepository.buscarPorId(Number(id));\n\n    if (!aluno) {\n      return res.status(404).send({ message: \"Aluno não encontrado!\" });\n    }\n\n    alunoRepository.excluir(Number(id));\n\n    return res.status(204).send(aluno);\n  }\n```\n\n## Criação dos arquivo de rotas\n\n1. Criar a pasta `routes` e o arquivo `alunos.router.js` dentro dela com o código abaixo:\n\n```javascript\nimport { Router } from \"express\"; // O Router serve para criar as rotas\n\nimport {\n  cadastrar,\n  listar,\n  buscarPorId,\n  alterar,\n  excluir,\n} from \"../controllers/aluno.controller.js\"; // Importa os controllers\n\nconst alunosRouter = Router(); // Cria o roteador do express\n\n// Configura o roteador para responder a requisições na rota /\nalunosRouter.post(\"/\", cadastrar);\nalunosRouter.get(\"/\", listar);\nalunosRouter.get(\"/:id\", buscarPorId);\nalunosRouter.put(\"/:id\", alterar);\nalunosRouter.delete(\"/:id\", excluir);\n\nexport default alunosRouter; // Exporta o roteador\n```\n\n2. Criar o arquivo `index.router.js` dentro da pasta `routes` com o código abaixo:\n\n```javascript\nimport express from \"express\"; // O express serve para criar o servidor\nimport { Router } from \"express\"; // O Router serve para criar as rotas\nimport alunosRouter from \"./alunos.router.js\"; // Importa o roteador de alunos\n\nconst indexRouter = Router(); // Cria o roteador do express\n\n// Configura o roteador para responder a requisições na rota /\nindexRouter.get(\"/\", (req, res) =\u003e {\n  return res.status(200).send({ message: \"Servidor rodando! 🚀\" });\n});\n\n// Configura o roteador para responder a requisições na rota /alunos\nindexRouter.use(\"/alunos\", alunosRouter);\n\nexport default indexRouter; // Exporta o roteador\n```\n\n3. Alterar o arquivo `server.js` para o código abaixo:\n\n```javascript\nimport express from \"express\"; // O express serve para criar o servidor\nimport { config } from \"dotenv\"; // O dotenv serve para ler as variáveis de ambiente\n\nimport indexRouter from \"./routes/index.router.js\"; // Importa o roteador\n\nconfig(); // Carrega as variáveis de ambiente\n\nconst port = process.env.PORT || 5000; // Pega a porta do arquivo .env ou usa a porta 5000\n\nconst app = express(); // Cria o servidor e armazena na variável app\napp.use(express.json()); // Configura o servidor para receber requisições com o formato JSON\napp.use(indexRouter); // Configura o servidor para usar o roteador\n\n// Inicia o servidor na porta configurada\napp.listen(port, () =\u003e\n  console.log(`⚡ Server started on http://localhost:${port}`)\n);\n```\n\n4. Executar o comando `npm run dev` para iniciar o projeto\n\n## Instalação\n\nPara instalar o projeto, siga os passos abaixo:\n\n1. Clone o projeto para sua máquina\n2. Execute o comando `npm install` para instalar as dependências do projeto\n3. Execute o comando `npm run dev` para iniciar o projeto\n\n## Autor\n\n[Felipe Santos](https://github.com/FelipeSantos92Dev)\n\n## Links Úteis\n\n- [NodeJS](https://nodejs.org/en/)\n- [NPM](https://www.npmjs.com/)\n- [Express](https://expressjs.com/)\n- [Nodemon](https://nodemon.io/)\n- [Git](https://git-scm.com/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelipesantos92dev%2Fnode-tds-alunos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffelipesantos92dev%2Fnode-tds-alunos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelipesantos92dev%2Fnode-tds-alunos/lists"}