|
1 | | -# CrazyStack NodeJs |
2 | 1 |
|
3 | | -Aqui é o repositório oficial do Bootcamp do DevDoido. Cada aula terá sua branch correspondente para poder seguir o curso. |
4 | | -NÃO SE ESQUEÇA DE CRIAR E CONFIGURAR O ARQUIVO .ENV |
| 2 | +# CrazyStack Typescript Node.js - Sistema de Agendamentos Online 🚀 |
| 3 | + |
| 4 | +Este repositório faz parte do bootcamp **CrazyStack** do **DevDoido** e implementa uma API completa para gerenciamento de agendamentos online utilizando **Node.js**. O projeto foi desenvolvido com foco em escalabilidade, segurança e alta performance. |
| 5 | + |
| 6 | +## Sumário 📚 |
| 7 | + |
| 8 | +- [Tecnologias Utilizadas](#tecnologias-utilizadas) |
| 9 | +- [Requisitos](#requisitos) |
| 10 | +- [Instalação](#instalação) |
| 11 | +- [Configuração](#configuração) |
| 12 | +- [Comandos Disponíveis](#comandos-disponíveis) |
| 13 | +- [Scripts de Teste](#scripts-de-teste) |
| 14 | +- [Contribuição](#contribuição) |
| 15 | +- [Licença](#licença) |
| 16 | + |
| 17 | +## Tecnologias Utilizadas 🛠️ |
| 18 | + |
| 19 | +Este projeto utiliza as seguintes tecnologias: |
| 20 | + |
| 21 | +- **Node.js** 🟢 para a criação do servidor. |
| 22 | +- **Fastify** ⚡ como framework de servidor web, com suporte a WebSockets. |
| 23 | +- **MongoDB** 🐱💻 para banco de dados, usando MongoDB Memory Server para testes. |
| 24 | +- **KafkaJS** 🐻 para integração com o Apache Kafka. |
| 25 | +- **Redis** 🧊 (via IORedis) para gerenciamento de cache. |
| 26 | +- **JWT (JsonWebToken)** 🔐 para autenticação e autorização. |
| 27 | +- **Axios** 📦 para requisições HTTP. |
| 28 | +- **Stripe** 💳, **Woovi (PIX)** 💸 e **Pagar.me** 💵 para integração com pagamentos. |
| 29 | + |
| 30 | +## Requisitos ✅ |
| 31 | + |
| 32 | +- Node.js v18+ |
| 33 | +- MongoDB |
| 34 | +- Redis |
| 35 | +- Kafka (opcional, se houver necessidade de integração com filas) |
| 36 | + |
| 37 | +## Instalação 🛠️ |
| 38 | + |
| 39 | +1. Clone o repositório: |
| 40 | + |
| 41 | + ```bash |
| 42 | + git clone https://github.com/gumiranda/CrazyStackNodeJs.git |
| 43 | + ``` |
| 44 | + |
| 45 | +2. Acesse a pasta do projeto: |
| 46 | + |
| 47 | + ```bash |
| 48 | + cd CrazyStackNodeJs |
| 49 | + ``` |
| 50 | + |
| 51 | +3. Instale as dependências: |
| 52 | + |
| 53 | + ```bash |
| 54 | + yarn |
| 55 | + ``` |
| 56 | + |
| 57 | +4. Compile o projeto (caso esteja usando TypeScript): |
| 58 | + |
| 59 | + ```bash |
| 60 | + yarn build |
| 61 | + ``` |
| 62 | + |
| 63 | +5. Rode o projeto: |
| 64 | + |
| 65 | + ```bash |
| 66 | + yarn start |
| 67 | + ``` |
| 68 | + |
| 69 | +## Configuração ⚙️ |
| 70 | + |
| 71 | +Crie um arquivo `.env` na raiz do projeto e defina as variáveis de ambiente necessárias. Aqui está um exemplo de configuração: |
| 72 | + |
| 73 | +```env |
| 74 | +# Configurações do MongoDB |
| 75 | +MONGO_URL=mongodb+srv://seuusuario:suasenha@clusterseilaoqdomongo.mongodb.net/nomedobanco?retryWrites=true&w=majority |
| 76 | +MONGO_URL_PROD=mongodb+srv://seuusuario:suasenha@clusterseilaoqdomongo.mongodb.net/nomedobanco?retryWrites=true&w=majority |
| 77 | +
|
| 78 | +# Ambiente de produção |
| 79 | +NODE_ENV=production |
| 80 | +
|
| 81 | +# Segurança e autenticação |
| 82 | +JWT_SECRET=hdfshfhf8ds8fds8fds8f8 |
| 83 | +
|
| 84 | +# Configurações do Redis |
| 85 | +REDIS_PORT=40043 |
| 86 | +REDIS_URL=us1-active-EXAMPLE-40043.upstash.io |
| 87 | +REDIS_PASSWORD=YOUR_PASSWORD |
| 88 | +
|
| 89 | +# API do Google Maps |
| 90 | +GOOGLE_MAPS_API_KEY=YOURGOOGLEMAPSKEY |
| 91 | +
|
| 92 | +# Kafka |
| 93 | +KAFKAJS_NO_PARTITIONER_WARNING=1 |
| 94 | +KAFKA_USERNAME= |
| 95 | +KAFKA_PASSWORD= |
| 96 | +KAFKA_HOST= |
| 97 | +KAFKA_CLIENT_ID= |
| 98 | +
|
| 99 | +# Gateways de pagamento |
| 100 | +WOOVI_KEY=YOUR_WOOVI_KEY |
| 101 | +PAGARME_SECRET_KEY=YOUR_PAGARME_SECRET_KEY |
| 102 | +PAGARME_PUBLIC_KEY=YOUR_PAGARME_PUBLIC_KEY |
| 103 | +PUBLIC_STRIPE_KEY=YOUR_STRIPE_PUBLIC_KEY |
| 104 | +SECRECT_STRIPE_KEY=YOUR_STRIPE_SECRET_KEY |
| 105 | +
|
| 106 | +# Banco de dados Postgres (Neon) |
| 107 | +PGHOST='ep-black-water-a5s6ziyz.us-east-2.aws.neon.tech' |
| 108 | +PGDATABASE='neondb' |
| 109 | +PGUSER='neondb_owner' |
| 110 | +PGPASSWORD='nvi9XBpaRVQ0' |
| 111 | +ENDPOINT_ID='ep-black-water-a5s6ziyz' |
| 112 | +PGPORT=5432 |
| 113 | +FUSORARIOBR="production" |
| 114 | +DATABASE="postgres" |
| 115 | +
|
| 116 | +# Provedores de armazenamento |
| 117 | +UPLOAD_PROVIDER=cloudflare_r2 |
| 118 | +CLOUDFLARE_R2_ACCOUNT_ID=your_account_id |
| 119 | +CLOUDFLARE_R2_ACCESS_KEY_ID=your_access_key_id |
| 120 | +CLOUDFLARE_R2_SECRET_ACCESS_KEY=your_secret_access_key |
| 121 | +CLOUDFLARE_R2_BUCKET_NAME=your_bucket_name |
| 122 | +
|
| 123 | +S3_ACCESS_KEY_ID=your_s3_access_key_id |
| 124 | +S3_SECRET_ACCESS_KEY=your_s3_secret_access_key |
| 125 | +S3_BUCKET_NAME=your_s3_bucket_name |
| 126 | +S3_REGION=your_s3_region |
| 127 | +
|
| 128 | +GCS_PROJECT_ID=your_gcs_project_id |
| 129 | +GCS_BUCKET_NAME=your_gcs_bucket_name |
| 130 | +GCS_KEY_FILENAME=path_to_your_gcs_keyfile |
| 131 | +
|
| 132 | +AZURE_STORAGE_CONNECTION_STRING=your_azure_connection_string |
| 133 | +AZURE_CONTAINER_NAME=your_azure_container_name |
| 134 | +``` |
| 135 | + |
| 136 | + |
| 137 | +## Comandos Disponíveis 🖥️ |
| 138 | + |
| 139 | +- `yarn start`: Inicia a API em produção. |
| 140 | +- `yarn build`: Remove a pasta `dist` e compila o TypeScript. |
| 141 | +- `yarn test`: Executa os testes com o Jest. |
| 142 | +- `yarn format`: Formata o código utilizando Prettier. |
| 143 | +- `yarn generate`: Executa o Plop para gerar componentes ou rotas automaticamente. |
| 144 | + |
| 145 | +## Scripts de Teste 🧪 |
| 146 | + |
| 147 | +- `yarn test:db`: Testa a integração com o banco de dados. |
| 148 | +- `yarn test:all`: Executa todos os testes. |
| 149 | +- `yarn test:spec`: Testa arquivos específicos. |
| 150 | +- `yarn test:t`: Testes personalizados. |
| 151 | +- `yarn test:v`: Testes com output detalhado. |
| 152 | + |
| 153 | +## Contribuição 🤝 |
| 154 | + |
| 155 | +Contribuições são bem-vindas! Se você deseja melhorar este projeto, sinta-se à vontade para abrir uma *issue* ou enviar um *pull request*. |
| 156 | + |
| 157 | +## Licença 📜 |
| 158 | + |
| 159 | +Este projeto está licenciado sob a Licença MIT. Consulte o arquivo [LICENSE](./LICENSE) para mais detalhes. |
| 160 | +``` |
| 161 | +
|
| 162 | +Adicionei emojis para tornar o README mais visualmente atraente e destaquei as bibliotecas e tecnologias utilizadas. Sinta-se à vontade para modificar conforme necessário! |
0 commit comments