A comprehensive real estate management Android application built with Java, featuring both customer and admin functionalities for property browsing, reservations, and administration.
- π― Overview
- β¨ Features
- π¬ Demo Video
- π Technical Stack
- β‘ Quick Download APK
- π Installation & Setup
- π API Configuration
- π¦ APK Release
- π Project Structure
- πΎ Database Schema
- π₯ User Roles
- π€ Contributing
- π¨βπ» Contributors
- π License
Luxora is a feature-rich real estate agency application that connects property seekers with available properties. The app provides a seamless experience for browsing properties, making reservations, and managing real estate operations through an intuitive admin panel.
The application supports two main user types:
- Customers: Browse properties, make reservations, manage favorites, and view special offers
- Admins: Manage properties, customers, reservations, special offers, and system analytics
- Property Browsing: Search and filter properties by type, location, price, and features
- Detailed Property Views: High-quality images, comprehensive descriptions, and amenities
- Reservation System: Book property viewings with real-time status tracking
- Favorites Management: Save and organize preferred properties
- Special Offers: Access exclusive deals and discounted properties
- Profile Management: Update personal information and profile pictures
- Authentication: Secure login/registration with "Remember Me" functionality
- Dashboard Analytics: Comprehensive statistics and data visualization
- Property Management: Add, edit, and manage property listings
- Customer Management: View and manage customer accounts
- Reservation Management: Approve, reject, and track property reservations
- Special Offers: Create and manage promotional campaigns
- Admin Management: Add and manage other admin accounts
- Data Import: Fetch properties from external APIs
- Modern Material Design: Clean, intuitive interface following Material Design principles
- Responsive Layouts: Optimized for various screen sizes and orientations
- Smooth Animations: Engaging transitions and interactive elements
- Navigation Drawer: Easy access to all app sections
Luxora_demo.mp4
- Language: Java
- Platform: Android (Min SDK 26, Target SDK 35)
- Database: SQLite with custom helper classes
- Image Loading: Picasso library for efficient image handling
- Architecture: MVC (Model-View-Controller) pattern
- API Integration: RESTful API consumption with JSON parsing
- UI Components: Material Design Components
- Build System: Gradle with Kotlin DSL
The easiest way to get Luxora is through GitHub Releases:
-
Go to Releases:
- Click the "Releases" button on the right side of this GitHub repository page
-
Download Latest APK:
- Find the latest release
- Click on "Luxora-v1.0.0.apk" to download
- The file will be saved to your device's Downloads folder
-
Install the App:
- Open your device's file manager
- Navigate to Downloads folder
- Tap on the APK file and follow installation prompts
- Min Android Version: Android 8.0 (API 26)
- Target Android Version: Android 15 (API 35)
- Architecture: Universal (supports all device architectures)
- File Size: ~15MB (approximate)
Admin Account:
- Email:
admin@admin.com - Password:
Admin123!
Test Customer Account:
- Register a new account through the app's registration flow
- Android Studio (latest version recommended)
- Android SDK API Level 26 or higher
- Java Development Kit (JDK) 11 or higher
- Git
-
Clone the Repository
git clone https://github.com/osaidnur/Real-Estate-Agency.git cd Real-Estate-Agency/Android_Lab -
Open in Android Studio
- Launch Android Studio
- Select "Open an existing Android Studio project"
- Navigate to the cloned repository folder
- Select the
Android_Labdirectory
-
Sync Project
- Android Studio will automatically detect the project
- Click "Sync Now" when prompted to sync Gradle files
-
Build the Project
./gradlew clean build
Or use Android Studio's Build menu.
-
Run the Application
- Connect an Android device or start an emulator
- Click the "Run" button in Android Studio
- The app will install and launch automatically
If you prefer using the command line:
# Clean and build the project
./gradlew clean build
# Install on connected device
./gradlew installDebug
# Or build and install in one command
./gradlew clean installDebugThe application fetches property data from an external API. The API configuration is located in:
File: app/src/main/java/com/example/a1210733_1211088_courseproject/api/PropertyApiClient.java
// Current API URL
private static final String API_URL = "https://mocki.io/v1/c78b9a1b-dfaa-4a45-808d-3ffd83ef5622";π API Content Reference: You can view the complete API response structure and sample data in the
api_contentfile in this repository.
To use a different API endpoint:
-
Locate the PropertyApiClient.java file:
app/src/main/java/com/example/a1210733_1211088_courseproject/api/PropertyApiClient.java -
Update the API_URL constant:
private static final String API_URL = "YOUR_NEW_API_URL_HERE";
-
Ensure API Response Format: Your API should return JSON data in the following format:
[ { "id": 1, "type": "Apartment", "title": "Luxury Downtown Apartment", "description": "Beautiful apartment in the heart of the city", "bedrooms": 2, "bathrooms": 2, "area": 1200.5, "price": 250000.0, "country": "USA", "city": "New York", "imageUrl": "https://example.com/image.jpg" } ] -
Rebuild the project after making changes:
./gradlew clean build
The app includes API testing functionality:
- Launch the app and tap the "Connect" button on the welcome screen
- Monitor the logs for API response details
- Check the database for successfully imported properties
If you want to create your own property data API:
-
Use services like:
- Mocki.io (Free JSON API mock service)
- JSONBin.io
- Your own REST API server
-
JSON Structure Requirements:
- Each property must have all required fields
- Image URLs should be publicly accessible
- Price values should be numeric
- Area values should be numeric (square feet)
-
Test Your API:
- Verify the endpoint returns valid JSON
- Check CORS settings if hosting your own API
- Ensure images load correctly
A pre-built APK file is also available directly in the repository:
Location: app/release/app-release.apk
-
Download the APK:
- Navigate to the
app/release/folder in this repository - Download the
app-release.apkfile
- Navigate to the
-
Enable Installation from Unknown Sources:
- Go to Settings > Security (or Privacy)
- Enable "Install from Unknown Sources" or "Allow from this source"
-
Install the APK:
- Open the downloaded APK file
- Follow the installation prompts
- Launch the app from your app drawer
Android_Lab/
βββ app/
β βββ src/
β β βββ main/
β β β βββ java/com/example/a1210733_1211088_courseproject/
β β β β βββ activities/ # Main application activities
β β β β βββ adapters/ # RecyclerView adapters
β β β β βββ api/ # API client and HTTP management
β β β β βββ auth/ # Authentication management
β β β β βββ database/ # SQLite database helpers
β β β β βββ fragments/ # UI fragments
β β β β βββ models/ # Data models
β β β β βββ utils/ # Utility classes
β β β β βββ views/ # Custom view components
β β β βββ res/ # Resources (layouts, drawables, values)
β β β βββ AndroidManifest.xml
β β βββ test/ # Unit tests
β βββ build.gradle.kts # App-level build configuration
β βββ release/
β βββ app-release.apk # Pre-built APK file
βββ gradle/ # Gradle wrapper files
βββ build.gradle.kts # Project-level build configuration
βββ settings.gradle.kts # Project settings
βββ README.md # This file
- MainActivity: Welcome screen with API connection
- authActivity: Login and registration
- HomeActivity: Customer dashboard with navigation
- AdminActivity: Admin dashboard and management
- Customer Fragments: Home, Properties, Favorites, Reservations, Profile, Contact
- Admin Fragments: Dashboard, Properties Management, Customer Management, Reservations, Special Offers, Admin Management
- DataBaseHelper: SQLite database management
- Models: User, Property, Reservation entities
- Queries: SQL query management classes
-
Users Table
- User authentication and profile information
- Supports both customers and admins
- Fields: userId, email, password, firstName, lastName, gender, country, city, phone, role, profileImage
-
Properties Table
- Property listings and details
- Fields: propertyId, type, title, description, bedrooms, bathrooms, area, price, country, city, imageUrl, isSpecial, discount
-
Reservations Table
- Property reservation tracking
- Fields: reservationId, userId, propertyId, reservationDate, status, notes
-
Favorites Table
- User's favorite properties
- Fields: favoriteId, userId, propertyId, dateAdded
- Browse and search properties
- Make and manage reservations
- Add properties to favorites
- View special offers
- Update profile information
- Full dashboard with analytics
- Manage all properties
- View and manage customers
- Approve/reject reservations
- Create special offers
- Manage other admin accounts
- Import data from APIs
We welcome contributions to improve Luxora! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- π Bug fixes and stability improvements
- β¨ New features and enhancements
- π± UI/UX improvements
- π§ͺ Test coverage expansion
- π Documentation updates
- π Internationalization/Localization
- Test your changes thoroughly
- Follow the existing code style
- Update documentation as needed
- Add tests for new features
- Ensure the app builds successfully
This project is licensed under the MIT License - see the LICENSE file for details.
This project was developed as part of a course project demonstrating Android development skills, database management, and API integration.



