Building La Palapa Resident Portal

La Palapa Resident Portal is a web app for condominium residents and building administrators. It combines a public marketing landing (building info, committee, operations gallery, contact) with a protected resident area for notices, building projects, polls, financial announcements, and linked third-party services — all backed by Supabase auth and PostgreSQL with row-level security.

Live Demo

Private dashboard as requested by client

What it does

Public landing

Single-page site with scroll-spy navigation across six sections:

  • Quiénes somos — Building introduction and community positioning
  • Acerca de — Property details and resident information
  • Comité — Board/committee member profiles
  • Operación — Image carousel showcasing building operations and amenities
  • Galería — Photo gallery of common areas and events
  • Contacto — Contact form with name, email, and message fields

Residents access the portal via Iniciar sesión; authenticated users are routed to /portal.

Resident portal

Protected dashboard with four tabbed sections:

TabContent
InformesBuilding notices (rich-text announcements) and a services grid of linked apps
ProyectosActive building improvement projects with progress bars
EncuestasResident polls with single-vote enforcement and live result tallies
FinancieroFinancial announcements and fee-related updates

The portal uses an interactive DotGrid background (orange/teal proximity effect) and a responsive tab layout that collapses to a 2×2 grid on mobile.

Profile

Residents manage their profile: full name, unit number, and account settings tied to their Supabase auth identity.

Admin panel

Role-gated (admin) CMS for building managers:

  • Users — Create residents, assign unit numbers, promote/demote admin roles
  • Notices — Rich-text editor (React Quill) for building announcements
  • Projects — CRUD for improvement projects with 0–100% progress tracking
  • Polls — Create polls with multiple options, view vote counts
  • Financial — Publish financial announcements to the resident portal
  • Apps — Manage linked services (launch URLs, icons, SSO capability flags)

Database & security

Supabase migrations define the full schema with RLS policies:

  • profiles — Resident profiles auto-created on signup (name + unit number)
  • notices — Building announcements (admin write, residents read active)
  • apps — Third-party service launcher entries
  • projects — Building improvement tracking
  • polls / poll_options / poll_votes — Independent poll system (decoupled from projects in a later migration)
  • financial_announcements — Fee and budget communications

Admins are identified by a role column on profiles; all write operations check admin membership via RLS.

Tech stack

LayerChoice
FrameworkReact 18 + TypeScript + Vite
UIshadcn/ui + Tailwind CSS
State / dataTanStack React Query
Auth & DBSupabase (Auth + PostgreSQL + RLS)
RoutingReact Router 6 with protected and admin routes
Rich textReact Quill (dynamic import wrapper for build safety)
IconsLucide React
ToastsSonner

The app runs on port 8080 in development and deploys as a static Vite build to CDN hosting (Vercel, Netlify, or DigitalOcean Spaces) with VITE_SUPABASE_* environment variables.

Development process

La Palapa was built with the shadcn/ui Vite template, Supabase for auth and PostgreSQL, and Row Level Security to separate resident and admin access.

Template and auth foundation

  • Started from the shadcn/Vite React TypeScript stack with Tailwind CSS preconfigured.
  • Connected Supabase (initially via Lovable Cloud) and implemented login/signup with Supabase Auth.
  • Created first migration: profiles, notices, and apps tables with RLS policies.
  • Built resident profiles with unit numbers, the notices feed, and the linked-apps launcher.

Admin modules and data model

  • Added admin panel with user management and role assignment (admin vs resident).
  • Shipped building projects (progress bars), polls (options + vote counts), and financial announcements.
  • Wrote SQL migrations for projects, polls, and financial tables.
  • Fixed TypeScript import resolution and build errors for DigitalOcean deployment (three fix commits).

Resident portal main view

  • Commit SuperArregloMainScreen — reworked the main tab layout and navigation flow for residents.
  • Resolved bun/npm lockfile conflicts so CI/CD installs reproduce cleanly.
  • Tested tab switching between Informes, Proyectos, Encuestas, and related sections.

Staging data, assets, and encoding

  • Added a database preseed script for demo/staging environments.
  • Fixed chapimagen asset loading and bun compatibility in the build pipeline.
  • Corrected Spanish accent encoding and Supabase Storage blob handling for uploaded media.

Mobile polish and branding

  • Fixed viewport meta and back-button behavior on the login screen.
  • Shipped new app icon and favicon passes for PWA/home-screen installs.
  • Verified responsive layout on phones for notices and poll voting flows.

Blog

recent-work

Building Galena AI

Synthetic voice detection dashboard — six ONNX detectors behind a FastAPI service, verdict confidence, call history, and interactive model metrics.

Read more →

Galena AI

Synthetic voice detection dashboard — six ONNX detectors via FastAPI, verdict confidence, call history, and interactive model metrics.

How it was built →
border-home1