{"id":20581279,"url":"https://github.com/jonathas/casadocodigo","last_synced_at":"2026-04-11T18:06:11.234Z","repository":{"id":141967197,"uuid":"65381019","full_name":"jonathas/casadocodigo","owner":"jonathas","description":"Code from the Node.js course by alura.com.br + some improvements I implemented / Código relativo ao curso \"Node.js: Inovando com Javascript no backend\" da Alura + algumas melhorias que eu implementei","archived":false,"fork":false,"pushed_at":"2016-08-18T13:17:04.000Z","size":441,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-06T12:16:44.711Z","etag":null,"topics":["alura","javascript","mysql","nodejs"],"latest_commit_sha":null,"homepage":"https://cursos.alura.com.br/course/node-js","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jonathas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2016-08-10T12:33:43.000Z","updated_at":"2017-09-14T09:20:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"ef40aeac-22a7-43ed-9dd5-40323c4922c1","html_url":"https://github.com/jonathas/casadocodigo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jonathas/casadocodigo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathas%2Fcasadocodigo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathas%2Fcasadocodigo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathas%2Fcasadocodigo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathas%2Fcasadocodigo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonathas","download_url":"https://codeload.github.com/jonathas/casadocodigo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathas%2Fcasadocodigo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265966081,"owners_count":23857056,"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":["alura","javascript","mysql","nodejs"],"created_at":"2024-11-16T06:27:50.032Z","updated_at":"2026-04-11T18:06:11.192Z","avatar_url":"https://github.com/jonathas.png","language":"CSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# README #\n\nCódigo relativo ao curso [Node.js: Inovando com Javascript no backend](https://cursos.alura.com.br/course/node-js) da Alura\n\n## Conteúdo detalhado:\n\n#### Node.js, Express e o ambiente de Desenvolvimento\n\n  - Instalação do Node.js\n  - O primeiro código em Node\n  - Utilizando o Express.js para apps web\n  - Utilizando EJS para isolar o HTML do JavaScript\n  - Nodemon para facilitar o deploy durante o desenvolvimento\n\n\n#### Listando os produtos: Conexão com Banco e Boas Práticas\n\n  - Criação de módulos seguindo a CommonJS\n  - Organização da estrutura de diretórios do projeto\n  - Estabelecendo conexão com o banco de dados\n  - Fazendo o select no banco\n  - Exibindo dados dinamicamente na página\n  - Carregamento automático com Express-Load\n\n\n#### Inserindo Dados no Banco\n\n  - Form de cadastro dos produtos\n  - Recebendo os dados do form com body-parser\n  - Insert do produto no banco\n  - Um pouco mais sobre o HTTP\n\n\n#### Trabalhando com Diferentes Formatos de Dados\n\n  - Servindo o conteúdo em diferentes formatos\n  - Tipos diferentes nas requisições\n  - Resposta conforme a requisição: Content Negotiation\n  - Suportando JSON como formato para cadastro\n\n\n#### Validação com express-validator\n\n  - Validando um campo no form\n  - Atribuindo mensagens às validações\n  - Mantendo o estado dos dados do form\n  - Respeitando o Accept da requisição na mensagem de erro\n\n\n#### Um pouco do funcionamento interno do Node.js\n\n  - Como funciona o module.exports\n  - Os callbacks e o funcionamento assíncrono do Node.\n\n\n#### Testes de Integração\n\n  - Implementação dos casos de teste com Mocha\n  - Casos de teste com função de finalização\n  - Padronização dos casos de teste com Assert\n  - Implementação ágil de testes com Supertest\n  - Teste de cadastro de produtos\n  - Trabalhando com ambientes separados: Teste e Dev\n  - Usando o BeforeEach do Mocha\n\n\n#### WebSockets com sockets.io\n\n  - Implementando a home da Casa do Código\n  - Mapeamento de recursos estáticos\n  - Cadastro de uma nova promoção\n  - WebSocket no cliente e no servidor\n\n\n#### Middlewares\n\n  - Entendendo o funcionamento dinâmico do express\n  - Criando um Middleware\n\n\n#### Deploy\n\n  - Deploy no Heroku\n  - Conexão com o banco remoto\n  - Preparando a aplicação para o deploy\n  - Deploy no Heroku através do GIT\n\n***\n\n# Para rodar o projeto:\n\n- Instalar o MySQL\n- Criar banco chamado casadocodigo_nodejs\n- Criar banco chamado casadocodigo_nodejs_test\n\n```bash\ncreate schema casadocodigo_nodejs;\n```\n\nPara os dois bancos:\n\n- Importar create_table_livros.sql de config/sql/\n- Importar populate_table_livros.sql de config/sql/\n\n```bash\n$ mysql -uroot -proot casadocodigo_nodejs \u003c config/sql/create_table_livros.sql\n```\n\nInstale as dependencias:\n\n```bash\n$ npm install\n```\n\nInstale e rode o nodemon no seu sistema:\n\n```bash\n$ sudo npm install -g nodemon\n$ nodemon app\n```\n\n# Para rodar os testes\n\n```bash\n$ NODE_ENV=test node_modules/mocha/bin/mocha\n```\nObs: Não é necessário que o node esteja rodando para isso, pois o teste já inicia tudo que é necessário\n\n- Para http load test, instale o siege:\n\n```bash\n$ sudo pacman -S siege # caso você utilize o Arch Linux ou derivados\n```\n\n```bash\n$ sudo apt-get install siege # caso você não tenha experimentado o Arch Linux ainda :D\n```\n\nE rode com 10 ou mais conexões simultâneas por 1 minuto\n\n```bash\n$ siege -c10 -t1M http://localhost:3000\n```\n\nou utilize o siege instalado pelo npm:\n\n```bash\n$ node test/benchmark.js\n```\n\n# TODO\n\nAqui são coisas que não fazem parte do curso, mas quero fazer para praticar:\n\n- Automatizar isso tudo com Docker (Nginx, MySQL)\n- Renomear tudo pra inglês pra ficar mais acessível (?)\n- Implementar mais testes para as próximas coisas que quero desenvolver na aplicação\n- Implementar Sequelize\n- Implementar autenticação com o Passport\n- Implementar layout com Bootstrap nas áreas de administração\n- Implementar delete e update nos produtos, via form e via API recebendo token\n- Implementar CI com o Travis ou Codeship\n\n\nFront-end:\n\n- Angular com Typescript\n- SASS\n- Bower\n- Gulp\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathas%2Fcasadocodigo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonathas%2Fcasadocodigo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathas%2Fcasadocodigo/lists"}