Chat Room é uma aplicação interativa criada para facilitar a conexão entre pessoas através de salas de bate-papo em tempo real. Nela, qualquer usuário pode se cadastrar, fazer login e criar sua própria sala, convidando outros participantes para conversas dinâmicas e instantâneas. Com uma interface amigável e funcionalidade intuitiva, o Chat Room é ideal para quem busca interagir e compartilhar ideias em tempo real, proporcionando uma experiência única de troca e colaboração.
O desenvolvimento do Chat Room foi feito com o framework Nest.js, usando Firebase Authenticator para o gerenciamento seguro de usuários e Firebase Storage para armazenamento de imagem. Para viabilizar o bate-papo em tempo real, foi implementado o WebSocket com a biblioteca Socket.io em conjunto com MongoDB, proporcionando interatividade instantânea entre os participantes.
https://chat-room-orcin.vercel.app/home
- NestJS
- Node.js
- WebSocket
- REST API
- Firebase
- Docker
- Cadastro e Login
- Envio de Email
- Chat em tempo real
- Criação de salas
Para utilizar esta API, é importante que você tenha uma noção básica do Firebase. Se você nunca utilizou o Firebase, confira este guia de introdução ao Firebase para aprender a configurar um projeto e ativar os serviços necessários.
-
Criar um projeto no Firebase:
- Acesse o Firebase Console e crie um novo projeto.
-
Ativar Firebase Authentication e Storage:
- No painel do Firebase, ative o Firebase Authentication para o gerenciamento de autenticação de usuários e Firebase Storage para armazenamento de imagens.
- Certifique-se de que esses serviços estejam configurados como públicos para permitir o acesso direto.
Adicione as seguintes variáveis de ambiente no seu arquivo .env
para conectar o projeto com o Firebase e MongoDB:
-
MongoDB URI
MONGO_URI
: URI de conexão com o MongoDB.
-
Parâmetros do Firebase
API_KEY
AUTH_DOMAIN
ADMIN_PROJECT_ID
STORAGE_BUCKET
MESSAGING_SENDER_ID
APP_ID
-
Parâmetros do Firebase Admin
TYPE
PROJECT_ID
PRIVATE_KEY_ID
PRIVATE_KEY
CLIENT_EMAIL
CLIENT_ID
AUTH_URI
TOKEN_URI
AUTH_PROVIDER_X509_CERT_URL
CLIENT_X509_CERT_URL
UNIVERSE_DOMAIN
-
Configuração da Porta
PORT
: Porta para a aplicação (exemplo: 3001).
Essas variáveis são necessárias para autenticação e armazenamento de dados entre o Firebase e o MongoDB.
POST /authentication
body: {
"email": "[email protected]",
"password": "secret_password"
}
Parâmetro | Tipo | Descrição |
---|---|---|
email |
string |
Obrigatório. O email do usuário |
password |
string |
Obrigatório. A senha do usuário |
POST /authentication/sign-in
body: {
"email": "[email protected]",
"password": "secret_password"
}
Parâmetro | Tipo | Descrição |
---|---|---|
email |
string |
Obrigatório. O email do usuário |
password |
string |
Obrigatório. A senha do usuário |
POST /authentication/sign-in/token
body: {
"token": "user_token"
}
Parâmetro | Tipo | Descrição |
---|---|---|
token |
string |
Obrigatório. O token do usuário |
PUT /authentication/update-profile
header: {
"authorization": "Bearer token",
}
body: {
"name": "User Name",
"photoURL": "https://link_da_foto.com"
}
Parâmetro | Tipo | Descrição |
---|---|---|
authorization |
string |
Obrigatório. O token do usuário |
name |
string |
Obrigatório. O nome do usuário |
photoURL |
string |
Obrigatório. A URL da foto de perfil do usuário |
POST /room
body: {
"name": "Room Name",
"subjects": ["subject1", "subject2"]
}
Parâmetro | Tipo | Descrição |
---|---|---|
name |
string |
Obrigatório. O nome da sala |
subjects |
array |
Obrigatório. Lista de assuntos da sala |
GET /room
Parâmetro | Tipo | Descrição |
---|---|---|
- |
- |
Retorna todas as salas disponíveis |
PATCH /room/${id}
body: {
"subjects": ["newSubject1", "newSubject2"]
}
Parâmetro | Tipo | Descrição |
---|---|---|
id |
string |
Obrigatório. O ID da sala |
subjects |
array |
Obrigatório. Nova lista de assuntos da sala |
PATCH /room/${id}
body: {
"name": "New Room Name"
}
Parâmetro | Tipo | Descrição |
---|---|---|
id |
string |
Obrigatório. O ID da sala |
name |
string |
Obrigatório. Novo nome da sala |
DELETE /room/${id}
Parâmetro | Tipo | Descrição |
---|---|---|
id |
string |
Obrigatório. O ID da sala |
Evento: start-chat
data: {
"room": "room_id"
}
Parâmetro | Tipo | Descrição |
---|---|---|
id |
string |
Obrigatório. O ID da sala |
Evento: send-message
data: {
"id": "room_id",
"message": "Sua mensagem aqui"
}
Parâmetro | Tipo | Descrição |
---|---|---|
id |
string |
Obrigatório. O ID da sala |
message |
string |
Obrigatório. O conteúdo da mensagem |
- Portifolio - jhonatas-anicezio
- GitHub - github/JhonatasAnicezio
- Linkedin - @jhonatasanicezio
Chat Room API is MIT licensed.