Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tavareshenrique/ignite-lab-01
O Ignite Lab é um curso bônus da Rocketseat onde construimos uma aplicação utilizando: NestJS, Prisma, Apache Kafka, GraphQL, ReactJS, Next.js e Apollo. 🚀 💜
https://github.com/tavareshenrique/ignite-lab-01
apollo graphql ignite-lab-01 kafka nestjs nextjs prisma reactjs rocketseat typescript
Last synced: 3 days ago
JSON representation
O Ignite Lab é um curso bônus da Rocketseat onde construimos uma aplicação utilizando: NestJS, Prisma, Apache Kafka, GraphQL, ReactJS, Next.js e Apollo. 🚀 💜
- Host: GitHub
- URL: https://github.com/tavareshenrique/ignite-lab-01
- Owner: tavareshenrique
- License: mit
- Created: 2022-04-04T22:14:58.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2022-04-28T20:40:33.000Z (over 2 years ago)
- Last Synced: 2024-11-12T01:35:02.649Z (2 months ago)
- Topics: apollo, graphql, ignite-lab-01, kafka, nestjs, nextjs, prisma, reactjs, rocketseat, typescript
- Language: TypeScript
- Homepage:
- Size: 2.29 MB
- Stars: 2
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
ℹ️ Como Executar? |
🚀 Tecnologias |
💻 Autores |
📝 Licença
O Ignite Lab é um curso bônus da Rocketseat onde construimos uma aplicação utilizando: NestJS, Prisma, Apache Kafka, GraphQL, ReactJS, Next.js e Apollo. A ideia é do projeto é uma plataforma de cursos divididas em microsserviços, um serviço de compras chamado purchases e um serviço de aulas chamado classroom, ambos utilizando autenticação pela plataforma Auth0.
Esses serviços se comunicam utilizando o Apache Kafka como Message Broker, e existe um terceiro serviço chamado gateway que faz a união entre os serviços purchases e classroom utilizando o Apollo Gateway para que somente um End-Point seja necessário ser consumido pelo nosso Front-End que foi construindo utilizando React com NextJS.---
> 🧪 Essa aplicação não possuirá **Testes Unitários**, **Integração** e **E2E** por não ser o foco do estudo, mas está pronta para ser executada. 🧪
# :information_source: Como Executar?
### 1. Configurações Iniciais
> **1.1.** Clone o Repositório:
```bash
git clone https://github.com/tavareshenrique/ignite-lab-01
```> **1.2.** Existe um arquivo [docker-compose.yml](./docker-compose.yml) na raiz do projeto para você utilizar para poder executar os serviços do Kafka e do Postgres, que é o nosso Banco de Dados, na sua máquina local. Acesse ele, e execute o comando:
```bash
docker-compose up --build
```> ℹ️ Caso não possua Docker instalado, na sua máquina, acesse [aqui](https://docs.docker.com/engine/install/) para instalar.
---
> 🚨 Lembrando que para continuar para as etapas seguintes, o [docker-compose.yml](./docker-compose.yml) deve estar rodando, como ensinado no passo **1.2**. 🚨
> 🚨🚨🚨 Antes de continuar, é necessário **configurar as variáveis de ambiente de cada um dos projetos**, acesse a documentação individual de cada um dos projetos para aprender a configurar: [purchases](./purchases/), [classroom](./classroom/) e [web](./web/) 🚨🚨🚨
### 2. Iniciando o Serviço de Purchase
> **2.1.** Acesse o serviço de **purchase**:
```bash
cd purchases
```> **2.2.** Instale as dependências:
```bash
yarn
```> **2.3.** Criando a base de dados de **purchases** no **Postgres** utilizando o [prisma](https://www.prisma.io/), para isso execute o comando:
```bash
npx prisma migrate dev
```> **2.4.** Inicie o Serviço:
```bash
yarn start:dev
```
---### 3. Iniciando o Serviço de Classroom
> **3.1.** Acesse o serviço de **classroom**:
```bash
cd classroom
```> **3.2.** Instale as dependências:
```bash
yarn
```> **3.3.** Criando a base de dados de **classroom** no **Postgres** utilizando o [prisma](https://www.prisma.io/), para isso execute o comando:
```bash
npx prisma migrate dev
```> **3.4.** Inicie o Serviço:
```bash
yarn start:dev
```---
### 4. Iniciando o Serviço de Gateway
> 🚨 Na **etapa 4** será necessário que os serviços de **purchases** e **classrom** estejam rodando **simultaneamente**, então certifique de ter seguido exatamente os passos das **etapas 2 e 3**. 🚨
> **4.1.** Acesse o serviço de **gateway**:
```bash
cd gateway
```> **4.2.** Instale as dependências:
```bash
yarn
```> **4.3.** Inicie o Serviço:
```bash
yarn start:dev
```---
### 5. Acessando Rotas dos Serviços
> 🎉 A parti daqui, você está com todos os serviços rodando.
> **Gateway**
>> Caso queira acessar o **GraphQL** do serviço de **gateway**, basta acessar: [http://localhost:3332/graphql](http://localhost:3332/graphql).> **Purchases**
>> Caso queira acessar o **GraphQL** do serviço de **purchases**, basta acessar: [http://localhost:3333/graphql](http://localhost:3333/graphql).> **Classroom**
>> Caso queira acessar o **GraphQL** do serviço de **classroom**, basta acessar: [http://localhost:3334/graphql](http://localhost:3334/graphql).---
### 6. Iniciando a aplicação web
> 🚨 Na **etapa 6** será necessário que os serviços de **purchases**, **classrom** e **gateway** estejam rodando **simultaneamente**, então certifique de ter seguido exatamente os passos das **etapas 2, 3 e 4**. 🚨
> **4.1.** Acesse o serviço de **gateway**:
```bash
cd web
```> **4.2.** Instale as dependências:
```bash
yarn
```> **4.3.** Inicie o Serviço:
```bash
yarn dev
```> ➡️ Acesse [http://localhost:3000](http://localhost:3000) para acessar a aplicação web.
# :rocket: Tecnologias
- [TypeScript](https://www.typescriptlang.org/)
- [NestJS](https://nestjs.com/)
- [React](https://pt-br.reactjs.org/)
- [NextJS](https://nextjs.org/)
- [Apollo](apollographql.com)
- [Apollo Federation](https://www.npmjs.com/package/@apollo/federation)
- [Apollo Server Express](https://www.npmjs.com/package/apollo-server-express)
- [Apollo Gateway](https://www.npmjs.com/package/@apollo/gateway)
- [Apollo Client](https://www.npmjs.com/package/@apollo/client)
- [GraphQL](https://graphql.org/)
- [Prisma](https://www.prisma.io/)
- [Apache Kafka](https://kafka.apache.org/)
- [Auth0](https://auth0.com/pt)
- [Express JWT](https://www.npmjs.com/package/express-jwt)
- [Slugify](https://www.npmjs.com/package/slugify)
- [TailwindCSS](https://tailwindcss.com/)
- [PostCSS](https://postcss.org/)
- [Next HTTP Proxy Middleware](https://www.npmjs.com/package/next-http-proxy-middleware)
- [GraphQL Codegen Apollo Next SSR](https://www.npmjs.com/package/graphql-codegen-apollo-next-ssr)
- [ESLint](https://eslint.org/)
- [Prettier](https://prettier.io/)# :computer: Autores
Henrique Tavares
@tavareshenrique
💻
Rocketseat
@rocketseat
🚀
# :memo: Licença
Este projeto está licenciado sob a licença MIT - veja o arquivo de [licença](https://github.com/tavareshenrique/go-barber-mobile-ts/blob/master/LICENSE.md) para mais detalhes.