Skip to content

DKAbir111/Homy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

54 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Homy BMS Banner

๐Ÿข Homy โ€” Building Management System

A full-stack, production-ready apartment & tenant management platform

Live Demo React Node.js MongoDB Stripe


๐Ÿ“ธ Screenshots

๐Ÿ  Landing Page ๐Ÿ‘ค Member Dashboard ๐Ÿ›ก๏ธ Admin Dashboard
Landing User Dashboard Admin Dashboard

๐Ÿ” Overview

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.


โœจ Key Features

๐Ÿ” Authentication & Security

  • 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

๐Ÿ  Apartment Listings

  • 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

๐Ÿ“‹ Agreement & Lease System

  • Tenants can apply for apartments in one click
  • Admins review, approve, or reject applications
  • Prevents duplicate agreements per tenant

๐Ÿ’ณ Payments & Coupons

  • Stripe-integrated rent payment flow (test mode supported)
  • Coupon system for percentage-based rent discounts
  • Full payment history tracking for members

๐Ÿ‘จโ€๐Ÿ’ผ Admin Dashboard

  • Manage all users (promote to member, remove access)
  • Apartment and agreement management
  • Publish announcements to all members
  • Coupon creation and lifecycle management

๐Ÿ“ข Announcements

  • Admins broadcast notices to all members
  • Members see announcements on their personalized dashboard

๐Ÿ› ๏ธ Tech Stack

Frontend

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

Backend

Technology Purpose
Node.js + Express REST API server
MongoDB + Mongoose Database & ODM
Firebase Admin Authentication verification
JWT Stateless authorization
Stripe Payment processing

๐Ÿš€ Getting Started

Prerequisites

  • Node.js v18+
  • MongoDB (local or Atlas)
  • Firebase project
  • Stripe account

1. Clone the Repository

git clone https://github.com/your-username/homy-bms.git
cd homy-bms

2. Setup Environment Variables

Frontend โ€” 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:5000

Backend โ€” 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

3. Install Dependencies

# Backend
cd server && npm install

# Frontend
cd ../client && npm install

4. Run the App

# Start backend
cd server && npm start

# Start frontend (new terminal)
cd client && npm run dev

Frontend will be live at http://localhost:5173


๐Ÿ”‘ Demo Credentials

Role Email 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


๐Ÿ“ Project Structure

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

๐Ÿ—บ๏ธ API Endpoints (Sample)

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

๐Ÿ”ฎ Roadmap

  • 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)

๐Ÿค Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/your-feature-name
  3. Commit your changes: git commit -m "feat: add your feature"
  4. Push to the branch: git push origin feature/your-feature-name
  5. Open a Pull Request

Please follow Conventional Commits for commit messages.


๐Ÿ“„ License

This project is licensed under the MIT License โ€” see the LICENSE file for details.


Made with โค๏ธ by Abir

โญ If you found this project useful, consider giving it a star!

GitHub stars

About

**HouseEase - MERN Stack House Management App** A web app for managing house rentals with three user roles: Admin, House Owner, and Member (Renter). Features include house listing management, rental applications, payments, and role-based authentication using JWT. Built with React, Node.js, Express.js, and MongoDB.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages