On this page
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.
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:
| Tab | Content |
|---|---|
| Informes | Building notices (rich-text announcements) and a services grid of linked apps |
| Proyectos | Active building improvement projects with progress bars |
| Encuestas | Resident polls with single-vote enforcement and live result tallies |
| Financiero | Financial 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 entriesprojects— Building improvement trackingpolls/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
| Layer | Choice |
|---|---|
| Framework | React 18 + TypeScript + Vite |
| UI | shadcn/ui + Tailwind CSS |
| State / data | TanStack React Query |
| Auth & DB | Supabase (Auth + PostgreSQL + RLS) |
| Routing | React Router 6 with protected and admin routes |
| Rich text | React Quill (dynamic import wrapper for build safety) |
| Icons | Lucide React |
| Toasts | Sonner |
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, andappstables 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 (
adminvs 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
chapimagenasset 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.


Building Galena AI