Skip to content
AppStudy project2025

Condoview

A condominium app in Flutter: the resident makes a request from their phone, the building manager approves it in the same app

FlutterDartProviderNode.jsExpress
Runs onAndroidREST API
dashboards in the same app: resident and building manager
2
modules in the resident menu
8
events that trigger a push notification
5
validity of the visitor invitation
24 h

01

Overview

Condoview was the capstone project (TCC) of a team of 5 people. The idea is that every condominium request has an owner and a status: the resident books the party room, asks for maintenance or reports an incident through the app, and the building manager receives it, opens the request and approves or rejects it. The same Flutter app shows two dashboards — the role comes from the user's profile at login — and talks to a Node.js/Express API on top of MongoDB, which sends push notifications through Firebase when a notice, meeting, package, chat message or incident comes in.

My role

Mobile & Front-End Developer — Flutter interface, resident and manager flows, API integration. Team project of 5: Lucas (mobile), Adryan Alexander (back end + design), Nicholas Balbino (back end), Edkarllos Fernando and Pedro Henrique Lopes (documentation).


Category

App

Year

2025

Status

Study project

Platforms

AndroidREST API

The Flutter app talks to an Express API that stores everything in MongoDB. When someone publishes a notice, registers a package or sends a message, the API uses Firebase to alert the right phones.

Flutter app

resident and building manager

Providerflutter_secure_storageqr_fluttermobile_scanner

Node.js + Express API

REST em /api/users

JWTexpress-validatorMulter (photos)Nodemailer

MongoDB + Mongoose

10 collections

Users and condominiumsReservations and maintenanceNotices and meetingsPackages and chat

Firebase Cloud Messaging

push to the phone

firebase-admin in the APIfirebase_messaging in the appToken saved in the profile

Sync: Validating the visitor invitation doesn't depend on the API: the date and time travel inside the QR Code itself and the scanner decides at the front desk.


02

The Problem

In many condominiums, management happens in a WhatsApp group, the elevator bulletin board and the front desk notebook. Booking a common area depends on a message to the building manager, maintenance requests get lost in the conversation, nobody knows whether an incident was seen, and visitors are cleared over the intercom.

03 — The Solution

One app with two dashboards on the same foundation: the resident has the day-to-day menu (notices, packages, meetings, reservations, maintenance, incidents, chat and visitors) and the building manager has the administration (publish a notice, register a package, create a meeting, approve reservations and maintenance, validate visitor entry via QR Code and manage residents). Each request keeps a status — pending, approved or rejected — and the resident follows it on their own phone.


04

Inside the product

The real app running with fictional data, recorded on two phones at the same time: the resident on the left, the building manager on the right — no screen is a mockup.

01

Reservations

The resident requests, the manager approves — and both see the status

Bruno picks the party room, describes the event and sets a date and time. The request comes in as pending. On the other side, Carla opens Pending Reservations, checks who made the request and approves it. When Bruno goes back to the list, the reservation already shows as approved.

  • Party room, barbecue area, court and pool
  • Color-coded status: approved, pending or rejected
  • Approve and reject right from the request details
02

Front desk

An invitation with a QR Code, validated at the entrance

The resident fills in the date, time, visitor name and unit, and the app builds the invitation card with the QR Code to send to the visitor. At the front desk, the building manager opens Approve Entry, points the camera at the invitation and the app answers right away: approved, within the 24 hours.

  • Card drawn by the app itself from a template
  • QR with the visit data, shared as an image
  • Scanning with mobile_scanner and 24-hour validity
03

Notices

The notice leaves the manager's phone and reaches everyone's board

Carla writes the notice, picks an icon and publishes. On Bruno's phone, the notice enters the communications history — and searching by title finds it instantly. With Firebase configured, every resident in the condominium also receives the push notification.

  • Eight icons to identify the type of notice
  • History with search by title
  • Push to the residents of the same condominium
04

Maintenance

Maintenance request with type, date and approval

The resident picks the type — painting, cleaning, repair, inspection —, describes the problem and suggests a date. The building manager sees the request in Pending Maintenance, opens it and approves. The resident follows everything through the same list.

  • Optional photo attached to the request
  • Approve or reject with one tap
  • Request history with status
05

Community

Incidents and chat in place of the WhatsApp group

Intercom broken? The resident reports the incident with a reason, description and date, and it appears in the manager's list. For everything else — questions, notes, arrangements — a general condominium chat, with each person's messages identified by name.

  • Incident with optional image
  • Push to the administration on every new incident
  • General chat with notifications for participants

05

6 video walkthroughs

Each video shows a complete task, end to end. Click to watch with controls.


06

Key Features

01

Two dashboards in the same app

The profile loaded at login defines what appears: the resident sees the Full Menu with eight modules; the building manager also sees the Administration — Add, Approve and View.

02

Reservations with approval

The resident picks the area (party room, barbecue area, court or pool), the date and the time; the building manager opens the request and approves or rejects it, and the status shows up in the resident's list.

03

Maintenance and incidents

Maintenance requests by type (painting, cleaning, repair, inspection), with an optional photo and building manager approval; incidents with reason, description, date and image arrive in the administration's list.

04

Visitor invitation with QR Code

The resident fills in the date, time, visitor name and unit, and the app draws an invitation card with a QR Code to share. At the front desk, the app's scanner validates the code within 24 hours.

05

Notices, packages and meetings

The building manager publishes notices with an icon, registers packages with a photo for the right resident and creates meetings; the resident follows along, searches announcements by title and marks the package as picked up.

06

General chat and push notifications

A chat for the whole condominium and notifications via Firebase Cloud Messaging when a notice, meeting, package, message or incident comes in.


07

Product screens

Real screenshots of the product, organized by module. Click any screen to enlarge it.

The same home: the resident sees the Full Menu, the manager gets the Administration
Reservation request, pending queue and the approval screen
Maintenance list with status and the manager's decision
Resident's report, the administration's list and the details
Invitation data, card with QR Code and the entry approved at the front desk
The card the app draws and shares — the QR carries the visit data
New notice with icon, resident's board and search by title
General chat, meetings and the condominium's data
Packages that arrived at the front desk and the details with pickup confirmation
Login, registration and the profile menu

08

On mobile

The app's screens on both sides: the resident first, then the building manager. The data is fictional — Atlas Condominium, resident Bruno and building manager Carla were created just for the demonstration.

Resident · Sign in
Resident · Sign up
Resident · Home
Resident · Notices
Resident · Notice
Resident · Search
Resident · Reservations
Resident · New reservation
Resident · Maintenance
Resident · Packages
Resident · Package
Resident · Meetings
Resident · General chat
Resident · Visitor
Resident · Invitation
Resident · Incident
Resident · Condominium
Resident · Profile
Manager · Administration
Manager · Reservations
Manager · Approve reservation
Manager · Approve maintenance
Manager · Incidents
Manager · Residents
Manager · New notice
Manager · Entry approved

09

Technologies

Front-end

FlutterDartProvider

Back-end

Node.jsExpress

Database

MongoDBMongoose

Integrations

Firebase Cloud MessagingJWTNodemailer

Libraries

qr_fluttermobile_scannerflutter_secure_storageshare_plusMulterexpress-validator

10

Design Decisions

The app has two layers of navigation on the same home screen. For the resident, a grid-style Full Menu with eight large shortcuts — the app is for lookups and quick requests. For the building manager, the same home gains the Administration at the top, split into three verbs: Add (notice, package, meeting), Approve (reservation, maintenance, entry) and View (incidents, residents). Brand purple on bars and buttons, red only on the administration shortcuts, and green/orange/red for request status.

11

Technical Challenges

The visitor invitation was the most interesting flow: the app draws the card on a Canvas from a template, writes the invitation data and paints a QR Code on top with the visit's JSON (date, time, visitor, unit, host), generates a PNG and opens the system share sheet. At the front desk, the mobile_scanner reader decodes the QR, reads the date and time and approves the entry if it is still within 24 hours — without needing to query the server.


12

Results

  • Capstone project approved, with the working system demonstrated in a presentation video
  • One Flutter app with two dashboards — resident and building manager — on top of a custom Node.js/MongoDB API
  • Request, approval and follow-up in the same place: reservations and maintenance with a status visible to the resident
  • Public repositories for the app and the API

13

Learnings

  • Team development with Git: mobile front end and back end moving in parallel, with the API contract agreed on beforehand
  • One app, two products: the same Flutter foundation serving those who request (resident) and those who decide (building manager), separated by the profile role
  • A request's lifecycle must be visible on both sides — that's why every reservation and maintenance request keeps a status, and the resident's list shows pending, approved or rejected
  • Push notification is part of the flow, not decoration: the Firebase token is saved in the profile and the API fires the alert the moment the event happens
  • Looking back at the code today, I would move the role check to the API as well: in the capstone project, the separation between resident and building manager lived only in the interface