Skip to content

DevPedroHB/nlw-agents

Repository files navigation

NLW Agents - Let me Ask

📋 Índice


📖 Sobre o Projeto

O Let me Ask é uma plataforma interativa projetada para facilitar a criação e gerenciamento de salas de perguntas e respostas. É ideal para eventos, palestras ou qualquer situação onde a interação com o público é fundamental. A aplicação foi construída utilizando uma arquitetura de monorepo com Turborepo, separando o back-end, front-end e pacotes compartilhados.

✨ Funcionalidades

  • Criação de Salas: Usuários podem criar salas temáticas.
  • Sistema de Perguntas: Envio e listagem de perguntas em tempo real.
  • Gravação de Áudio: Grave e transcreva áudios para gerar perguntas automaticamente com IA.
  • Interação: Funcionalidades para destacar ou marcar perguntas como respondidas.

🚀 Tecnologias Utilizadas

O projeto foi desenvolvido com as seguintes tecnologias:

Área Tecnologia Descrição
API Fastify Framework web focado em performance e baixo overhead.
Drizzle ORM ORM TypeScript moderno e seguro para interação com o banco de dados.
PostgreSQL Banco de dados relacional utilizado para persistir os dados.
Gemini API de IA do Google para transcrição de áudio e geração de conteúdo.
TypeScript Superset do JavaScript que adiciona tipagem estática.
WEB React Biblioteca para construção de interfaces de usuário.
Vite Ferramenta de build moderna e ultrarrápida para o desenvolvimento front-end.
TypeScript Garante a segurança e a manutenibilidade do código.
Tailwind CSS Framework CSS utility-first para estilização rápida e customizável.
TanStack Query Gerenciamento de estado de servidor, cache e sincronização de dados.
Monorepo Turborepo Sistema de build de alta performance para monorepos.
pnpm Gerenciador de pacotes rápido e eficiente com o espaço em disco.
Infra Docker Plataforma para desenvolvimento, deploy e execução de aplicações em contêineres.

🏗️ Arquitetura do Projeto

O projeto utiliza uma arquitetura de monorepo para gerenciar o código de forma centralizada, facilitando o compartilhamento de lógica e tipos entre as aplicações.

/
├── apps/
│   ├── api/      # Back-end (Fastify)
│   └── web/      # Front-end (React + Vite)
├── packages/
│   ├── db/       # Configuração do Drizzle ORM e schema do banco
│   └── env/      # Gerenciamento de variáveis de ambiente com Zod
└── ...

🏁 Como Executar

Siga os passos abaixo para executar o projeto em seu ambiente local.

Pré-requisitos:

Passos:

  1. Clone o repositório:

    git clone https://github.com/DevPedroHB/nlw-agents.git
    cd nlw-agents
  2. Instale as dependências:

    pnpm i
  3. Configure as variáveis de ambiente:

    • Copie o arquivo .env.example para .env.
    • Preencha as variáveis de ambiente conforme necessário, incluindo sua chave da API do Gemini.
  4. Inicie o banco de dados com Docker:

    docker-compose up -d
  5. Execute as migrações do banco:

    cd packages/db
    pnpm run db:migrate
  6. Inicie a aplicação:

    pnpm run dev

Após esses passos, a aplicação web estará disponível em http://localhost:5173 e a API em http://localhost:3333.

📝 Licença

Este projeto está licenciado sob a licença do MIT.


Feito com ❤️ por Pedro Henrique Bérgamo 🚀 Never stop learning!

About

Projeto desenvolvido durante um evento da Rocketseat. NLW Agents.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published