AppProjeto de Estudo2025

Condoview

App de condomínio em Flutter: o morador pede pelo celular, a síndica aprova no mesmo app

FlutterDartProviderNode.jsExpress
Roda emAndroidAPI REST
painéis no mesmo app: morador e síndica
2
módulos no menu do morador
8
eventos que disparam notificação push
5
de validade do convite de visitante
24 h

01

Visão Geral

O Condoview foi o Trabalho de Conclusão de Curso de uma equipe de 5 pessoas. A ideia é que cada pedido do condomínio tenha dono e status: o morador reserva o salão, pede uma manutenção ou relata uma ocorrência pelo app, e a síndica recebe, abre o pedido e aprova ou rejeita. O mesmo app Flutter mostra dois painéis — o papel vem do perfil do usuário no login — e conversa com uma API Node.js/Express sobre MongoDB, que dispara notificações push pelo Firebase quando chega aviso, assembleia, encomenda, mensagem no chat ou ocorrência.

Meu papel

Desenvolvedor Mobile & Front-End — interface Flutter, fluxos de morador e síndico, integração com a API. Projeto em equipe de 5: Lucas (mobile), Adryan Alexander (back-end + design), Nicholas Balbino (back-end), Edkarllos Fernando e Pedro Henrique Lopes (documentação).


Categoria

App

Ano

2025

Status

Projeto de Estudo

Plataformas

AndroidAPI REST

O app Flutter fala com uma API Express que guarda tudo no MongoDB. Quando alguém publica um aviso, registra uma encomenda ou manda mensagem, a API usa o Firebase para avisar os celulares certos.

App Flutter

morador e síndica

Providerflutter_secure_storageqr_fluttermobile_scanner

API Node.js + Express

REST em /api/users

JWTexpress-validatorMulter (fotos)Nodemailer

MongoDB + Mongoose

10 coleções

Usuários e condomíniosReservas e manutençõesAvisos e assembleiasEncomendas e chat

Firebase Cloud Messaging

push no celular

firebase-admin na APIfirebase_messaging no appToken salvo no perfil

Sincronização: A validação do convite de visitante não depende da API: data e hora vão dentro do próprio QR Code e o leitor decide na portaria.


02

O Problema

Em muito condomínio a gestão acontece em grupo de WhatsApp, mural do elevador e caderno da portaria. Reserva de área comum depende de mensagem para a síndica, pedido de manutenção se perde na conversa, ninguém sabe se a ocorrência foi vista e a liberação de visitante é por interfone.

03 — A Solução

Um app com dois painéis sobre a mesma base: o morador tem o menu do dia a dia (avisos, encomendas, assembleias, reservas, manutenção, ocorrências, chat e visitantes) e a síndica tem a administração (publicar aviso, registrar encomenda, criar assembleia, aprovar reserva e manutenção, validar a entrada de visitante pelo QR Code e gerenciar moradores). Cada pedido guarda status — pendente, aprovada ou rejeitada — e o morador acompanha pelo próprio celular.


04

Por dentro do produto

O app de verdade rodando com dados fictícios, gravado em dois celulares ao mesmo tempo: à esquerda o morador, à direita a síndica — nenhuma tela é mockup.

01

Reservas

O morador pede, a síndica aprova — e os dois veem o status

Bruno escolhe o salão de festas, descreve o evento e marca data e horário. O pedido entra como pendente. Do outro lado, Carla abre Reservas Pendentes, confere quem pediu e aprova. Quando o Bruno volta à lista, a reserva já aparece como aprovada.

  • Salão de festas, churrasqueira, quadra e piscina
  • Status em cor: aprovada, pendente ou rejeitada
  • Aprovar e rejeitar direto no detalhe do pedido
02

Portaria

Um convite com QR Code, validado na entrada

O morador preenche data, hora, nome do visitante e unidade, e o app monta o cartão de convite com o QR Code para mandar ao visitante. Na portaria, a síndica abre Aprovar Entrada, aponta a câmera para o convite e o app responde na hora: aprovado, dentro das 24 horas.

  • Cartão desenhado pelo próprio app a partir de um template
  • QR com os dados da visita, compartilhado como imagem
  • Leitura com mobile_scanner e validade de 24 horas
03

Avisos

O aviso sai do celular da síndica e chega ao mural de todos

Carla escreve o aviso, escolhe um ícone e publica. No celular do Bruno, o aviso entra no histórico de comunicações — e a busca por título encontra na hora. Com o Firebase configurado, cada morador do condomínio ainda recebe a notificação push.

  • Oito ícones para identificar o tipo de aviso
  • Histórico com busca por título
  • Push para os moradores do mesmo condomínio
04

Manutenção

Pedido de manutenção com tipo, data e aprovação

O morador escolhe o tipo — pintura, limpeza, reparo, inspeção —, descreve o problema e sugere a data. A síndica vê o pedido em Manutenções Pendentes, abre e aprova. O morador acompanha tudo pela mesma lista.

  • Foto opcional anexada ao pedido
  • Aprovar ou rejeitar com um toque
  • Histórico de pedidos com status
05

Comunidade

Ocorrências e chat no lugar do grupo de WhatsApp

O interfone quebrou? O morador relata a ocorrência com motivo, descrição e data, e ela aparece na lista da síndica. Para o resto — dúvidas, recados, combinações —, um chat geral do condomínio, com as mensagens de cada um identificadas pelo nome.

  • Ocorrência com imagem opcional
  • Push para a administração a cada nova ocorrência
  • Chat geral com notificação para os participantes

05

6 fluxos em vídeo

Cada vídeo mostra uma tarefa completa, de ponta a ponta. Clique para assistir com controles.


06

Funcionalidades Principais

01

Dois painéis no mesmo app

O perfil carregado no login define o que aparece: o morador vê o Menu Completo com oito módulos; a síndica vê também a Administração — Adicionar, Aprovar e Visualizar.

02

Reservas com aprovação

O morador escolhe a área (salão de festas, churrasqueira, quadra ou piscina), a data e o horário; a síndica abre o pedido e aprova ou rejeita, e o status aparece na lista do morador.

03

Manutenções e ocorrências

Pedido de manutenção por tipo (pintura, limpeza, reparo, inspeção), com foto opcional e aprovação da síndica; ocorrências com motivo, descrição, data e imagem chegam na lista da administração.

04

Convite de visitante com QR Code

O morador preenche data, hora, nome do visitante e unidade, e o app desenha um cartão de convite com QR Code para compartilhar. Na portaria, o leitor do app valida o código dentro de 24 horas.

05

Avisos, encomendas e assembleias

A síndica publica avisos com ícone, registra encomendas com foto para o morador certo e cria assembleias; o morador acompanha, busca os comunicados por título e dá baixa na encomenda.

06

Chat geral e notificações push

Um chat do condomínio inteiro e notificações via Firebase Cloud Messaging quando chega aviso, assembleia, encomenda, mensagem ou ocorrência.


07

Telas do sistema

Capturas reais do produto, organizadas por módulo. Clique em qualquer tela para ampliar.

A mesma home: o morador vê o Menu Completo, a síndica ganha a Administração
Pedido de reserva, fila de pendentes e a tela de aprovação
Lista de manutenções com status e a decisão da síndica
Relato do morador, lista da administração e o detalhe
Dados do convite, cartão com QR Code e a entrada aprovada na portaria
O cartão que o app desenha e compartilha — o QR leva os dados da visita
Novo aviso com ícone, mural do morador e busca por título
Chat geral, assembleias e os dados do condomínio
Encomendas que chegaram na portaria e o detalhe com a baixa
Login, cadastro e o menu do perfil

08

No celular

As telas do app dos dois lados: primeiro o morador, depois a síndica. Os dados são fictícios — o Condomínio Atlas, o morador Bruno e a síndica Carla foram criados só para a demonstração.

Morador · Entrar
Morador · Criar conta
Morador · Início
Morador · Avisos
Morador · Aviso
Morador · Busca
Morador · Reservas
Morador · Nova reserva
Morador · Manutenções
Morador · Encomendas
Morador · Encomenda
Morador · Assembleias
Morador · Chat geral
Morador · Visitante
Morador · Convite
Morador · Ocorrência
Morador · Condomínio
Morador · Perfil
Síndica · Administração
Síndica · Reservas
Síndica · Aprovar reserva
Síndica · Aprovar manutenção
Síndica · Ocorrências
Síndica · Moradores
Síndica · Novo aviso
Síndica · Entrada aprovada

09

Tecnologias

Front-end

FlutterDartProvider

Back-end

Node.jsExpress

Banco de Dados

MongoDBMongoose

Integrações

Firebase Cloud MessagingJWTNodemailer

Bibliotecas

qr_fluttermobile_scannerflutter_secure_storageshare_plusMulterexpress-validator

10

Decisões de Design

O app tem duas camadas de navegação na mesma tela inicial. Para o morador, um Menu Completo em grade com oito atalhos grandes — o app é de consulta e pedido rápido. Para a síndica, a mesma home ganha em cima a Administração, dividida em três verbos: Adicionar (aviso, encomenda, assembleia), Aprovar (reserva, manutenção, entrada) e Visualizar (ocorrências, moradores). Roxo da marca nas barras e botões, vermelho só nos atalhos de administração, verde/laranja/vermelho para o status dos pedidos.

11

Desafios Técnicos

O convite de visitante foi o fluxo mais interessante: o app desenha o cartão num Canvas a partir de um template, escreve os dados do convite e pinta por cima um QR Code com o JSON da visita (data, hora, visitante, unidade, anfitrião), gera um PNG e abre o compartilhamento do sistema. Na portaria, o leitor do mobile_scanner decodifica o QR, lê data e hora e aprova a entrada se ainda estiver dentro de 24 horas — sem precisar consultar o servidor.


12

Resultados

  • TCC aprovado, com o sistema funcionando demonstrado em vídeo de apresentação
  • Um app Flutter com dois painéis — morador e síndica — sobre uma API Node.js/MongoDB própria
  • Pedido, aprovação e acompanhamento no mesmo lugar: reservas e manutenções com status visível para o morador
  • Repositórios públicos do app e da API

13

Aprendizados

  • Desenvolvimento em equipe com Git: front-end mobile e back-end andando em paralelo, com o contrato da API combinado antes
  • Um app, dois produtos: a mesma base Flutter servindo quem pede (morador) e quem decide (síndica), separados pelo papel do perfil
  • O ciclo de um pedido precisa ser visível dos dois lados — por isso cada reserva e manutenção guarda status, e a lista do morador mostra pendente, aprovada ou rejeitada
  • Notificação push faz parte do fluxo, não é enfeite: o token do Firebase fica salvo no perfil e a API dispara o aviso no momento em que o evento acontece
  • Revendo o código hoje, eu levaria a checagem de papel também para a API: no TCC, a separação entre morador e síndica ficou só na interface