Web application to manage a real estate apartment catalog, built with Vue 3 + Vite on the frontend and Firebase (Firestore + Storage) on the backend. The system is deployed on Vercel using serverless functions.
- Home: Consulting company landing page
- Catalog: List of available properties with filters by price and number of bedrooms
- Admin: Add, edit, and delete properties
- Contact & About: Information about the company, mission, and values
- Carousel: Dynamic image carousel integrated with Firebase Storage
- Firebase Admin SDK
- Firestore (database)
- Storage (image hosting)
- Vercel Serverless Functions (
/api/*.js)
frontend/
├── public/ # Static assets
├── src/
│ ├── components/ # Reusable UI components
│ ├── views/ # Main views (pages)
│ ├── router/ # Vue Router config
│ ├── firebase.js # Firebase client init
│ ├── App.vue
│ └── main.client.js # Entry point (renamed to avoid conflict)
├── index.html
├── vite.config.js
└── tailwind.config.js
api/
├── imoveis.js # GET list of properties
├── carrossel.js # GET image carousel
└── index.js # GET filtered property search
.vercel/
└── project.json # Vercel configuration
Hosted on Vercel:
🔗 Production: https://consultoria-monica.vercel.app
🔗 Preview (pull requests): automatically created by Vercel
- Node.js 18+
- Firebase account
- Vercel account (optional, for local API emulation)
git clone https://github.com/bckohn-dev/Consultoria-Monica.git
cd frontend
npm install
npm run devvercel devFIREBASE_ADMIN_PROJECT_ID=
FIREBASE_ADMIN_CLIENT_EMAIL=
FIREBASE_ADMIN_PRIVATE_KEY=
VITE_FIREBASE_API_KEY=
VITE_FIREBASE_AUTH_DOMAIN=
VITE_FIREBASE_PROJECT_ID=
VITE_FIREBASE_STORAGE_BUCKET=
VITE_FIREBASE_MESSAGING_SENDER_ID=
VITE_FIREBASE_APP_ID=
VITE_prefix is required for frontend access to environment variables.
| Method | Route | Description |
|---|---|---|
| GET | /api/imoveis |
Get list of all properties |
| GET | /api/carrossel |
Get carousel images |
| GET | /api?quartos=&precoMin=&precoMax= |
Filtered property search |
- Firebase Auth with protected admin area
- Image upload directly from frontend
- Dashboard and analytics
- CMS or dynamic content editor