O Storage
é a solução do Firebase
para armazenar arquivos como imagens, vídeos e outros conteúdos. É neste local que os clientes irão fazer o upload de suas mídias para uso na aplicação. Cada mídia carregada gera uma URL
que será posteriormente utilizada no Firestore Database
nas coleções "fotos" e "videos".
⚠️ Atenção: É importante manter os mesmos nomes de coleções e documentos utilizados neste documento, pois eles são utilizados no código para referenciar os dados.
O Authentication é a ferramenta do Firebase
para autenticação de usuários. A estrutura, juntamente com os tipos de dados esperados para cada campo, é a seguinte:
- Identificador (string): Corresponde ao
e-mail
do usuário. - Provedores (array of strings): Inclui os métodos de autenticação usados, neste caso,
e-mail
e senha. - Data de criação (timestamp): Representa a data e a hora em que o documento de autenticação do usuário foi criado.
- Último login (timestamp): Indica a data e a hora do último login do usuário.
- UID do usuário (string): É um
ID
gerado automaticamente peloFirebase
. EsseUID do usuário
deve ser associado aouid
do documento correspondente na coleção de usuários.
Nota: O UID
gerado é essencial, pois ele é utilizado como identificador único em outros lugares, como no Firestore Database
.
Este é o banco de dados em tempo real do Firebase
. Ele é organizado em coleções e documentos. As coleções utilizadas no projeto são:
Cada documento representa um usuário e seu ID
coincide com o UID
do Authentication
. A estrutura, incluindo os tipos de dados esperados para cada campo, é apresentada a seguir:
- ID do Documento (string): ID único gerado pelo
Firebase
para cada documento. - assinaturaAtiva (boolean): Indica se a assinatura do usuário está ativa. Verdadeiro para ativo e falso para inativo.
- dataCriacao (timestamp): Representa a data e a hora em que o documento do usuário foi criado.
- dataExpiracaoAssinatura (timestamp): Indica a data e a hora de expiração da assinatura do usuário.
- email (string): Corresponde ao
e-mail
do usuário. - nome (string): Reflete o nome do usuário.
- uid (string): Esse
uid
deve ser associado aoUID do usuário
correspondente na seção Authentication.
A estrutura, incluindo os tipos de dados esperados para cada campo, é apresentada a seguir:
- ID do Documento (string):
ID
único gerado peloFirebase
para cada documento. - categoriaId (string):
ID
que indica a categoria à qual a foto pertence. - dataCriacao (timestamp): Representa a data e a hora em que o documento da foto foi criado.
- descricao (string, opcional): Uma descrição opcional associada à foto.
- url (string):
URL
direcionando para o local noFirebase Storage
onde a imagem está armazenada.
Estrutura semelhante à coleção "fotos".
Cada categoria é associada a um conjunto de IDs que se referem a fotos e vídeos relacionados. A estrutura, com os tipos de dados esperados para cada campo, é:
- ID do Documento (string):
ID
único gerado peloFirebase
para cada documento. - categoriaId (string):
ID
único designado para identificar distintamente cada categoria.
⚠️ Atenção: Lembrando que este campo deve coincidir com o nome das categorias, que será inserido no.env
dofrontent
. Mais detalhes noREADME
correspondente.
- fotos (array of strings):
Array
contendo osIDs
das fotos que são associadas a essa categoria específica. - videos (array of strings):
Array
contendo osIDs
dos vídeos que são associados a essa categoria.
Para integrar sua aplicação ao Firebase
, é necessário configurar as chaves apropriadas, tanto no frontend
quanto no backend
. Abaixo estão os detalhes para cada caso:
- Acesse o Firebase Console.
- Selecione seu projeto.
- No menu lateral, clique em
Configurações
(ícone de engrenagem) e escolha a opçãoConfigurações do projeto
. - Na aba
Service accounts
, clique no botãoGenerate new private key
. - Um arquivo
.json
será baixado. Este arquivo contém sua chave privada e outras informações importantes para a conexão.
- Renomeie o arquivo baixado para
firebaseKey.json
. - Transfira ou cole este arquivo dentro da pasta
backend/src/database
do seu projeto. - Certifique-se de que o arquivo
firebaseKey.json
esteja na mesma pasta e ao lado dos arquivosconnection.js
eloadFirebaseConfig.js
.
Os arquivos connection.js
e loadFirebaseConfig.js
que já estão presentes em seu projeto backend são responsáveis por estabelecer a conexão entre o Node.js
e o Firebase
. Certificando-se de que a chave firebaseKey.json
esteja na pasta correta, esses arquivos cuidarão do resto!
⚠️ Atenção: Nunca compartilhe ou cometa seu arquivofirebaseKey.json
em repositórios públicos, pois ele contém informações sensíveis.
- Acesse o Firebase Console.
- Selecione seu projeto.
- No menu lateral, clique em
Configurações
(ícone de engrenagem) e escolha a opçãoConfigurações gerais
. - Sob
Firebase SDK snippet
, selecione a opçãoConfig
. - Anote as configurações apresentadas. Elas serão usadas na sua aplicação frontend.
Nota1: No README do (frontend, serão fornecidas instruções detalhadas sobre como inserir estas informações como variáveis de ambiente, garantindo que elas não estejam expostas.
O Firestore
, por padrão, cria índices para cada campo individual em seus documentos. Contudo, ao realizar consultas mais complexas que combinam múltiplos campos para filtrar e ordenar, é preciso configurar índices compostos. Estes otimizam e tornam a consulta eficiente, garantindo uma execução rápida e previsível e mantendo o desempenho à medida que o tamanho do conjunto de dados cresce.
Ao executar o projeto, se você encontrar um erro que indica a necessidade de criar um índice composto, a mensagem de erro fornecerá um link direto para a criação deste índice no Firebase Console
.
- Clique no link fornecido na mensagem de erro. Ele irá redirecionar você para o
Firebase Console
, especificamente na página de criação de índices compostos. - Os campos da consulta que causou o erro já estarão pré-selecionados. Confirme e prossiga com a criação do índice composto.
- Aguarde até que o índice seja construído. Isso pode levar alguns minutos.
Nota: É provável que você precise criar, ao menos, índices compostos para as entidades de fotos, vídeos e categorias. Siga os passos acima para estas e outras entidades, conforme necessário.
⚠️ Atenção: Ao configurar o projeto pela primeira vez ou após realizar mudanças nas consultas do Firestore, é uma boa prática testar todas as funcionalidades e certificar-se de que todas as consultas estão executando corretamente. Isso ajudará a identificar rapidamente a necessidade de índices compostos adicionais.
Com essas configurações, sua aplicação está pronta para se conectar e interagir com o Firebase
.
Nota2: Para mais informações sobre o
Firebase
, acesse a documentação oficial.
⚠️ Atenção: Lembre-se de seguir as instruções detalhadas nos READMEs do frontend e backend, e de definir corretamente as variáveis de ambiente!