Desenvolvimento e Integração Contínua (CI/CD)
GitLab Source Repository: O código-fonte do projeto é gerenciado no GitLab, onde os desenvolvedores fazem versionamento e colaboram no desenvolvimento.
GitLab Runner com Docker: Na AWS, uma instância EC2 hospeda um GitLab Runner dentro de um container Docker. Esse Runner é responsável por executar pipelines de CI/CD, que automatizam os processos de build, testes e deploy do aplicativo. Isso garante que novas funcionalidades ou correções de bugs sejam entregues de forma ágil e contínua.
Autenticação
Firebase Authentication: O Firebase é utilizado para autenticar os usuários tanto no aplicativo mobile quanto na versão web. Isso garante que apenas usuários autorizados possam acessar a aplicação e seus dados. A escolha do Firebase simplifica o processo de autenticação, eliminando a necessidade de construir uma solução personalizada de gerenciamento de usuários.
Backend
Backend no Flutter: O backend da aplicação é gerenciado diretamente pelo Flutter, com chamadas diretas aos serviços do Firebase. A integração com o Firebase permite que o Flutter manipule autenticação, consultas de dados e operações diretamente sem a necessidade de um backend separado. Isso simplifica a arquitetura e reduz a complexidade, mantendo a comunicação eficiente entre o frontend e os serviços do Firebase.
Frontend
Flutter Mobile: O aplicativo é desenvolvido com Flutter para rodar nativamente em dispositivos Android e iOS, aproveitando uma única base de código para ambas as plataformas. O Flutter facilita o desenvolvimento multiplataforma, reduzindo o tempo de desenvolvimento e a complexidade de manutenção.
Flutter Web: O frontend web também é desenvolvido com Flutter e pode ser acessado através de navegadores como Chrome, Firefox, Edge e Safari. A aplicação web interage diretamente com o Firebase para realizar operações semelhantes às do aplicativo mobile.
Armazenamento de Dados
Amazon S3 (Simple Storage Service): O S3 é utilizado para armazenar arquivos e dados estáticos, como imagens e documentos. Ele fornece escalabilidade automática, alta durabilidade e segurança para os dados armazenados, e é acessado diretamente pelo backend Flutter para armazenar ou recuperar dados conforme necessário.
Fluxo de Comunicação
Flutter (Mobile/Web) -> Firebase: O fluxo de dados começa com o aplicativo Flutter (mobile ou web) enviando requisições diretas ao Firebase. Essas requisições podem incluir operações como autenticação, envio de dados ou solicitações de arquivos.
Firebase para Autenticação e Armazenamento: O Firebase lida com as requisições, incluindo autenticação e armazenamento de arquivos no Amazon S3. Uma vez processadas, as respostas são enviadas de volta ao frontend Flutter.