Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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. 🚀 💜

Awesome Lists containing this project

README

        


Ignite Lab


Last commit on GitHub
Made by Henrique Tavares
Project top programing language
Repository size
GitHub license


ℹ️ 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



Henrique Tavares




@tavareshenrique


💻



Logo da Rocketseat



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.