A comprehensive e-commerce web application tailored for the rental housing market in Ghana
Enabling users to easily find and rent homes or rooms with powerful search, real-time chat, and seamless user experience
- About
- Features
- Screenshots
- Usage
- Technology Stack
- Requirements
- Installation
- Configuration
- Testing
- Deployment
- Contributing
- License
Efiehub is a modern, full-stack rental housing platform specifically designed for the Ghanaian market. The application bridges the gap between property owners and potential renters by providing an intuitive interface for listing, searching, and communicating about rental properties.
Built with Laravel and Vue, Efiehub leverages the power of Inertia.js to deliver a smooth, single-page application experience with server-side rendering capabilities.
- π Property Listings: Create, edit, and manage rental property listings with detailed information
- πΈ Media Upload: Upload multiple images per property with automatic image optimization and orientation correction
- π·οΈ Property Types & Features: Support for various property types (apartments, single rooms, etc.) with customizable features
- π¦ Archive Properties: Temporarily archive/unarchive listings without permanent deletion
- π Slugified URLs: SEO-friendly URLs for all property listings
- π Advanced Filtering: Filter properties by region, type, price range, and amenities
- π° Price Sorting: Sort results by price (low to high, high to low) or by most recent
- π― Similar Properties: Automatic recommendation of similar properties based on location and type
- π Location-based Search: Search properties across different regions in Ghana
- π€ User Authentication: Secure registration, login, and password reset functionality
- βοΈ Email Verification: Email verification for new user accounts
- π¨βπΌ User Profiles: Customizable user profiles with profile picture upload
- β Favorites: Save and manage favorite properties
- π± Request Callback: Request property owners to call back with contact details
- π¬ Real-time Chat: WebSocket-based real-time messaging between users and property owners
- π Notifications: Database-stored notifications for callbacks and important events
- π¨ Private Channels: Secure, private chat channels for one-on-one conversations
- β Property Reviews: Rate and review properties (1-5 stars with optional text)
- π₯ User Reviews: Rate and review property owners
- π Review Display: Display aggregated ratings and individual reviews
- π© Report Properties: Flag inappropriate or fraudulent property listings
- π Report Users: Report suspicious user behavior
- π€ Social Sharing: Share property listings on social media platforms
- π Share Modal: Easy-to-use share functionality for properties
- π Analytics: Track user events and behavior for platform improvement
- π Referral Tracking: Monitor traffic sources and referrals
- π± Responsive Design: Fully responsive mobile-first design with TailwindCSS
- π¨ Modern UI: Clean, intuitive interface with Headless UI components
- β‘ Fast Navigation: SPA experience with Inertia.js for instant page transitions
- π Progress Indicators: Visual feedback during page loads and transitions
- π Toast Notifications: User-friendly notifications with SweetAlert2
- π Google Maps Integration: Interactive maps for property locations
| Homepage |
|---|
![]() |
| Property Page |
|---|
![]() |
| Details | Features | Media |
|---|---|---|
![]() |
![]() |
![]() |
| User Dashboard |
|---|
![]() |
- Browse Properties: Visit the homepage to see the latest listings
- Search & Filter: Use the search bar and filters to find properties matching your criteria
- View Details: Click on any property to see full details, images, and location
- Save Favorites: Register/login to save favorite properties
- Contact Owner: Use the chat feature or request callback to communicate with property owners
- Leave Reviews: Rate and review properties and owners after interactions
- Register Account: Create an account and verify your email
- Create Listing: Click "Add Property" and fill in all required details
- Upload Photos: Add multiple high-quality images of your property
- Manage Listings: Edit, archive, or delete your property listings
- Respond to Inquiries: Use the chat feature to respond to potential renters
- View Notifications: Check notifications for callback requests and messages
- View analytics and user behavior tracking
- Monitor reported properties and users
- Manage property types and features
- Framework: Laravel 9.x (PHP 7.3+ | 8.0+)
- Authentication: Laravel Sanctum
- API: RESTful API architecture
- Real-time: Pusher (WebSocket broadcasting)
- Image Processing: Intervention Image
- Monitoring: Sentry for error tracking
- Routing: Ziggy (Laravel routes in JavaScript)
- Framework: Vue 3 (Composition API)
- SPA Engine: Inertia.js
- Styling: TailwindCSS 2.x with custom forms plugin
- UI Components:
- Headless UI Vue
- Hero Icons
- Vue Final Modal
- SweetAlert2
- Form Validation: Vuelidate
- File Upload: FilePond with plugins (image crop, resize, preview, validation)
- Maps: Google Maps (vue3-google-map)
- Carousel: Swiper.js
- Chat: Laravel Echo with Pusher
- Social: Vue Social Sharing
- Progress: NProgress and Inertia Progress
- Pagination: v-pagination-3
- Rating: Vue Star Rating
- Database: MySQL
- File Storage: Local/Cloud storage support
- Caching: Redis support (optional)
- PHP: 7.3 or higher (8.0+ recommended)
- Composer: Latest version
- Node.js: 14.x or higher
- npm: 6.x or higher
- Database: MySQL 5.7+ / PostgreSQL 9.6+
- Web Server: Apache/Nginx
git clone https://github.com/yourusername/efiehub.git
cd efiehubcomposer installnpm installcp .env.example .envEdit .env file with your configuration (see Configuration section)
php artisan key:generatephp artisan migratephp artisan db:seedphp artisan storage:linkFor development:
npm run devFor production:
npm run productionphp artisan serveThe application will be available at http://localhost:8000
Update your .env file with database credentials:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=efiehub
DB_USERNAME=root
DB_PASSWORD=your_passwordSign up for a free account at Pusher.com and update:
BROADCAST_DRIVER=pusher
PUSHER_APP_ID=your_app_id
PUSHER_APP_KEY=your_app_key
PUSHER_APP_SECRET=your_app_secret
PUSHER_APP_CLUSTER=your_clusterObtain an API key from Google Cloud Console and add to your .env:
GOOGLE_MAPS_API_KEY=your_google_maps_api_keyConfigure your mail settings for email verification and notifications:
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=your_username
MAIL_PASSWORD=your_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=hello@efiehub.com
MAIL_FROM_NAME="${APP_NAME}"SENTRY_LARAVEL_DSN=your_sentry_dsnFor local development:
FILESYSTEM_DISK=publicFor production, configure cloud storage (S3, etc.) as needed.
php artisan testOr with PHPUnit directly:
vendor/bin/phpunitphp artisan test --testsuite=Feature
php artisan test --testsuite=Unitphp artisan test tests/Feature/PropertyControllerTest.phpbash local_deploy.shbash server_deploy.shA docker-compose.yml file is included for containerized deployment:
docker-compose up -d- Set
APP_ENV=productionin.env - Set
APP_DEBUG=falsein.env - Run
php artisan config:cache - Run
php artisan route:cache - Run
php artisan view:cache - Run
npm run production - Configure proper database credentials
- Set up SSL certificate (HTTPS)
- Configure proper file permissions
- Set up queue workers for background jobs
- Configure backup strategy
- Set up monitoring and logging
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow PSR-12 coding standards for PHP
- Use Vue 3 Composition API best practices
- Write tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting PR
This project is open-sourced software licensed under the MIT license.
- Laravel Framework
- Vue.js Community
- TailwindCSS Team
- All open-source contributors
For support, please open an issue in the GitHub repository.
Made with β€οΈ for the Ghanaian rental market







