Este repositório é resultado do projeto desenvolvido no curso de formação Javascript fullstack GoStack, atual Ignite da Rocketseat.
O projeto é composto de 3 aplicações: uma api REST, um web app desenvolvido em React e um aplicativo mobile desenvolvido em React Native.
A aplicação foi publicada aqui no Github como um monorepo isolado, isto é, não existe um compartilhamento de código, nem da pasta node_modules.
Optou-se por esta configuração para deixar todas as partes (api, web, mobile) da aplicação reunidas em um único repositório ainda que com código não compartilhado entre as aplicações.
Os deploys da api e web (feitos a partir das github actions
) são individualizados.
Para verificar o funcionamento do projeto clone o repositório
git clone https://github.com/rafaelreisramos/gostack-11-gobarber.git
ou
git clone git@github.com:rafaelreisramos/gostack-11-gobarber.git
Entre no diretório do projeto
cd gostack-11-gobarber
A partir deste diretório você tem acesso às 3 aplicações divididas nas pastas api, web e mobile. As instruções a seguir mostram como rodar cada um dos projetos em sua máquina local.
Assumo aqui que você esteja utilizando Linux, WSL ou um MacOs com acesso a um terminal Unix.
Caso não esteja, podem ocorrer alguns erros com variáves de ambiente na execução dos scripts. Para maiores esclarecimentos você pode consultar o site cross-env, instalar o pacote a aplicar quaisquer modificações que sejam necessárias.
Uma API REST com:
- Node.js
- Framework Express
- Princípios de desenvolvimento SOLID
- Banco de dados PostgresSQL para cadastro de usuários e agendamentos
- Banco de dados MongoDB para armazenamento das notificações e mensagens
- Banco de dados redis para dados de cache e limitação de requisições
- Containers docker com docker compose para desenvolvimento e deploy
- Typescript
- Express
- Envio de emails com AWS SES e Nodemailer
- Templates de e-mail com handlebars
- Upload de arquivos com AWS S3 e Multer
- Integração com AWS SDK
- Autenticação com JWT
- ORM com TypeORM
- Logs com Pino e pino-pretty
- Validação de campos com Celebrate
- Injeção de dependências com decorators usando tsyringe
- Limitação de requisições à API com node-rate-limiter-flexible
- Tratamento de datas com date-fns
- Testes com jest
- Formatação com Prettier e análise estática de código com eslint
- Build do projeto com Babel
- Execução de projeto Typescript com ts-node
- Instale o nvm
- Instale o node na versão 16.x
nvm v16.15.0
- Instale o docker compose
- Instale o yarn
- Vá para o diretório api
cd api
- Copie o arquivo .env.example para um arquivo .env
cp .env.example .env
- Suba os containers de banco de dados (docker compose ou docker-compose)
docker compose up -d
- Verifique se os containers estão ativos
docker ps -a
- Caso não estejam ativos confira os logs substituindo o
container_id
peloid
informado no comando anterior.
docker container container_id logs
- Caso esteja tudo correto instale as dependências com
yarn install
- Inicie a aplicação
yarn dev:server
- Acesse a aplicação no endereço http://localhost:3333
Todo...
O app web do GoBarber foi desenvolvido em React usando o a ferramenta de criação create-react-app.
O app web é voltado para os prestadores de serviço da plataforma GoBarber.
Os prestadores de serviços acessam a área logada e podem verificar os agendamentos dos clientes e configurar o perfil.
Já os clientes acessam o app mobile para agendar os serviços.
- Typescript
- React com uso dos React Hooks
- React Context API com hooks personalizados
- Animações com react-spring
- Formulários com o Unform
- Validação de campos com Yup
- Estilos com styled-Components
- Tratamento de datas com date-fns
- Testes com jest e testing-library
- Requisições http com axios
- Formatação com Prettier e análise estática de código com eslint
- Typescript
- React Native
- React Context API com hooks personalizados
- Navegação com React Navigation
- Animações com React Native Reanimated
- Captura de Imagens com a Câmera ou seleção da Galeria com React Native Image Picker
- Armazenamento local com async-storage
- Ícones com Vector Icons
- Formulários com o Unform
- Validação de campos com Yup
- Estilos com styled-Components
- Tratamento de datas com date-fns
- Testes com jest e testing-library
- Requisições http com axios
- Formatação com Prettier e análise estática de código com eslint