Skip to content

mathcorreia/Projeto_NWL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 

Repository files navigation

NLW Agents - Q&A com IA 🤖

Banner do Projeto de Programação com Luzes RGB

Awesome Theme Project

Um tema moderno, responsivo e personalizável construído com Tailwind CSS e cores OKLCH.



Logo do Tailwind CSS

Awesome Theme Project

Um tema moderno, responsivo e personalizável construído com Tailwind CSS e cores OKLCH.


CSS3 Tailwind CSS PostCSS Light & Dark Theme License MIT PRs Welcome

Badge de Status Badge de Licença

Este projeto é uma aplicação web de Perguntas e Respostas (Q&A) onde os usuários podem entrar em salas temáticas, fazer perguntas e receber respostas geradas por Inteligência Artificial através da API do Gemini.

Este repositório foi desenvolvido durante a Next Level Week (NLW) Agents da Rocketseat.


✨ Funcionalidades Principais

  • Criação de Salas: Os usuários podem criar salas com temas específicos (ex: "React", "Culinária Japonesa").
  • Sistema de Perguntas: Dentro de uma sala, é possível enviar perguntas.
  • Respostas com IA: O backend utiliza a API do Google Gemini para gerar respostas inteligentes e contextuais, baseadas no tema da sala.
  • Listagem e Visualização: Interface limpa para visualizar salas existentes e o histórico de perguntas e respostas.

🚀 Tecnologias Utilizadas

Este projeto é um monorepo dividido em backend e frontend.

Backend

Tecnologia Descrição
Node.js Ambiente de execução JavaScript.
Fastify Framework web focado em performance e baixo overhead.
Prisma ORM para interação com o banco de dados.
Zod Biblioteca para validação de esquemas e tipos.
Google Gemini API de Inteligência Artificial para geração das respostas.
PostgreSQL Banco de dados relacional (utilizado com Docker).
TypeScript Superset do JavaScript que adiciona tipagem estática.

Frontend

Tecnologia Descrição
React Biblioteca para construção de interfaces de usuário.
Vite Ferramenta de build extremamente rápida para o frontend.
TypeScript Garante a tipagem e a segurança do código.
Tailwind CSS Framework CSS utility-first para estilização rápida.
TanStack Query Gerenciamento de estado do servidor, cache e fetching de dados.
React Hook Form Gerenciamento de formulários de forma performática.
Axios Cliente HTTP para fazer requisições ao backend.

🏁 Como Rodar o Projeto

Siga os passos abaixo para configurar e executar a aplicação localmente.

Pré-requisitos

1. Configurando o Backend

# Clone o repositório (se ainda não o fez)
# git clone [https://github.com/seu-usuario/seu-repositorio.git](https://github.com/seu-usuario/seu-repositorio.git)
# cd seu-repositorio

# Navegue até a pasta do backend
cd backend

# Inicie o container do PostgreSQL com Docker
docker-compose up -d

# Instale as dependências
npm install

# Crie o arquivo de variáveis de ambiente
# (renomeie .env.example para .env se houver, ou crie um novo)
touch .env

Adicione as seguintes variáveis ao arquivo .env que você acabou de criar:

# backend/.env
DATABASE_URL="postgresql://docker:docker@localhost:5432/agents?schema=public"
GOOGLE_API_KEY="sua_chave_secreta_do_gemini_aqui"

Continue com os comandos no terminal:

# Execute as migrações do Prisma para criar as tabelas no banco
npx prisma migrate dev

# (Opcional) Execute o seed para popular o banco com dados iniciais
npx prisma db seed

# Inicie o servidor do backend
npm run dev

O servidor backend estará rodando em http://localhost:3333.

2. Configurando o Frontend

Abra um novo terminal e navegue até a pasta do frontend.

# A partir da raiz do projeto, navegue até a pasta do frontend
cd frontend/web

# Instale as dependências
npm install

# Inicie a aplicação frontend
npm run dev

A aplicação frontend estará acessível em http://localhost:5173 (ou outra porta indicada no terminal).


📄 Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published