| ๐ Landing Page | ๐ค Member Dashboard | ๐ก๏ธ Admin Dashboard |
![]() |
![]() |
![]() |
Homy is a comprehensive Building Management System that bridges the gap between tenants and property administrators. It provides a seamless experience for browsing apartments, submitting lease agreements, making rent payments with coupon discounts, and managing the entire tenant lifecycle โ all in one platform.
Built with a focus on security, scalability, and developer experience using a modern full-stack architecture.
- Firebase Authentication with Email/Password and Google Sign-In
- JWT-based API authorization with token storage
- Role-based access control (Guest / Member / Admin)
- Environment-variable-protected credentials
- Paginated apartment listings (6 per page)
- Rent-range search and filtering
- Detailed views with floor, block, and availability info
- Interactive location map powered by Leaflet
- Tenants can apply for apartments in one click
- Admins review, approve, or reject applications
- Prevents duplicate agreements per tenant
- Stripe-integrated rent payment flow (test mode supported)
- Coupon system for percentage-based rent discounts
- Full payment history tracking for members
- Manage all users (promote to member, remove access)
- Apartment and agreement management
- Publish announcements to all members
- Coupon creation and lifecycle management
- Admins broadcast notices to all members
- Members see announcements on their personalized dashboard
| Technology | Purpose |
|---|---|
| React | Component-based UI |
| TailwindCSS | Utility-first styling |
| React Router | Client-side routing |
| TanStack Query | Server state & data fetching |
| Axios | HTTP client |
| Stripe.js | Payment UI integration |
| Framer Motion | Animations & transitions |
| Leaflet | Interactive maps |
| SweetAlert2 | Notification alerts |
| Technology | Purpose |
|---|---|
| Node.js + Express | REST API server |
| MongoDB + Mongoose | Database & ODM |
| Firebase Admin | Authentication verification |
| JWT | Stateless authorization |
| Stripe | Payment processing |
- Node.js v18+
- MongoDB (local or Atlas)
- Firebase project
- Stripe account
git clone https://github.com/your-username/homy-bms.git
cd homy-bmsFrontend โ create .env in /client:
VITE_FIREBASE_API_KEY=your_firebase_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=your_project_id
VITE_STRIPE_PUBLIC_KEY=pk_test_xxxxxxxx
VITE_API_BASE_URL=http://localhost:5000Backend โ create .env in /server:
PORT=5000
MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/homy
JWT_SECRET=your_jwt_secret
STRIPE_SECRET_KEY=sk_test_xxxxxxxx
FIREBASE_ADMIN_SDK=path/to/serviceAccountKey.json# Backend
cd server && npm install
# Frontend
cd ../client && npm install# Start backend
cd server && npm start
# Start frontend (new terminal)
cd client && npm run devFrontend will be live at http://localhost:5173
| Role | Password | |
|---|---|---|
| Admin | abir@gmail.com | Abir@1 |
| Member | (register any account, admin promotes) | โ |
๐ณ Stripe Test Card:
4242 4242 4242 4242โ any future date, any CVC
homy-bms/
โโโ client/ # React frontend
โ โโโ src/
โ โ โโโ components/ # Shared UI components
โ โ โโโ pages/ # Route-level pages
โ โ โ โโโ Admin/ # Admin dashboard pages
โ โ โ โโโ Member/ # Member dashboard pages
โ โ โ โโโ Public/ # Landing, Apartments, etc.
โ โ โโโ hooks/ # Custom React hooks
โ โ โโโ providers/ # Context providers (Auth, etc.)
โ โ โโโ utils/ # Axios instance, helpers
โ โโโ public/
โ
โโโ server/ # Express backend
โโโ routes/ # API route handlers
โโโ middleware/ # JWT verification, role guards
โโโ models/ # Mongoose schemas
โโโ index.js # Entry point
| Method | Endpoint | Access | Description |
|---|---|---|---|
GET |
/apartments |
Public | List all apartments (paginated) |
POST |
/agreements |
Member | Submit lease agreement |
GET |
/agreements |
Admin | View all agreements |
PATCH |
/agreements/:id |
Admin | Accept / reject agreement |
POST |
/payments |
Member | Process rent payment |
GET |
/payments/history |
Member | Member payment history |
GET |
/users |
Admin | All users |
PATCH |
/users/:id/role |
Admin | Update user role |
POST |
/coupons |
Admin | Create discount coupon |
POST |
/announcements |
Admin | Post announcement |
- Two-factor authentication (2FA)
- Real-time notifications (WebSocket / Firebase)
- Coupon wishlist & expiry alerts
- Revenue analytics dashboard for admins
- Batch coupon creation & auto-expiry
- Maintenance request ticketing system
- Mobile app (React Native)
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature-name - Commit your changes:
git commit -m "feat: add your feature" - Push to the branch:
git push origin feature/your-feature-name - Open a Pull Request
Please follow Conventional Commits for commit messages.
This project is licensed under the MIT License โ see the LICENSE file for details.


