A Full-Stack Property Rental Platform built with .NET & Angular
Graduation Project β ITI Alexandria | Full Stack Development Track
Sakenny (Ψ³ΩΩΩΩ), meaning "House me" in Arabic, is a property rental platform inspired by Airbnb.
It provides a dynamic, secure, and responsive experience for renting properties, managing listings, and handling payments.
The platform supports three types of accounts:
- π€ Customer β Browse and rent properties, manage booking history, make secure payments via Stripe, and view locations on Google Maps.
- π‘ Host β Post properties for rent (pending admin approval), manage listings, track income, and access a personalized dashboard.
- π‘οΈ Admin β Review and approve property requests, manage users & data, and access an advanced analytics dashboard.
- π Authentication & Authorization with JWT + Google Login
- π³ Secure payment processing via Stripe
- π Location services powered by Google Maps API
- π Role-based dashboards (Customer, Host, Admin)
- π Real-time booking validation (dates locked both frontend & backend)
- πΌοΈ Image Storage using Azure Blob Storage (AzStorage via Azurite) β upload, manage, and retrieve property images with secure URLs.
This repository contains the Backend of Sakenny, built with .NET (N-Tier Architecture) following Clean Code principles and the Dependency Inversion Principle.
Check out the demo of Sakenny here:
π Watch on Google Drive
The Sakenny Backend provides all the core functionalities required to run a property rental platform securely and efficiently.
- JWT-based authentication for secure API access.
- Role-based authorization (Customer, Host, Admin).
- Login & Signup with Google OAuth.
- Stripe integration for safe and reliable payments.
- Transaction tracking in user booking history.
- Hosts can submit properties for rental.
- Properties require Admin approval before being visible to customers.
- Property availability is automatically managed to prevent double-booking.
- Google Maps API integration:
- Hosts can select property location when submitting a listing.
- Customers can view property locations on a map.
- Search results support nearby property suggestions.
- Images uploaded by hosts are stored in Azure Blob Storage (Azurite for local development).
- Each image generates a secure URL stored in the database for efficient retrieval.
- Customers can rent properties for specific dates.
- Booked dates become unavailable both in the frontend (date picker disabled) and backend (server validation).
- Rental history is stored per customer.
- Customer Dashboard β Manage bookings & history.
- Host Dashboard β Manage properties, monitor income.
- Admin Dashboard β Manage properties, users, approvals, and overall system data.
- N-Tier Architecture: Data Access Layer, Application Layer, API Layer.
- Dependency Inversion Principle & Clean Code standards.
- Generic repositories with Unit of Work pattern for reusable, maintainable code.
The Sakenny Backend is built with modern technologies to ensure scalability, security, and maintainability.
- .NET 8.0 β API development with ASP.NET Core.
- Entity Framework Core β ORM for database operations.
- SQL Server β Relational database management system.
- AutoMapper β Object-to-object mapping for DTOs and models.
- Stripe API β Secure online payments.
- Google Maps API β Location & geospatial services.
- N-Tier Architecture (Data Access, Application, API Layers).
- Repository & Unit of Work Pattern.
- Dependency Injection for better scalability and testing.
- DTOs & Services for clear separation of concerns.
The Sakenny Backend follows an N-Tier Architecture to separate concerns and improve maintainability.
This structure ensures that each layer has a single responsibility, making the project scalable and easier to test.
-
Data Access Layer (DAL)
- Contains Models, Configurations, Repositories, and the Unit of Work.
- Uses Entity Framework Core to interact with the database.
- Implements generic repositories to avoid repetitive code.
-
Application Layer
- Contains DTOs, Services, and their Interfaces.
- Responsible for business logic and orchestrating data between DAL and API.
-
API Layer
- Exposes RESTful Controllers for communication with the frontend.
- Contains the Mapping Profile (AutoMapper) to map between Models and DTOs.
- Handles Authentication & Authorization using JWT and Google OAuth.
Sakenny.Backend/
βββ Sakenny.DataAccess/
β βββ Models/
β βββ Configurations/
β βββ Repositories/
β βββ Interfaces/
β βββ UnitOfWork.cs
β βββ AppDbContext.cs
β
βββ Sakenny.Application/
β βββ DTOs/
β βββ Services/
β βββ Interfaces/
β
βββ Sakenny.API/
β βββ Controllers/
β βββ MappingProfiles/
β
βββ Sakenny.sln
- β Dependency Inversion Principle (DIP) β High-level modules depend on abstractions, not concrete implementations.
- β Separation of Concerns β Each layer is responsible for a specific aspect of the system.
- β Clean Code Practices β Generic repositories, DTO mappings, and proper layering.
The Sakenny Frontend is built with Angular, styled mainly with Tailwind CSS, and enhanced with PrimeNG components.
It provides a responsive, user-friendly interface that connects seamlessly with this backend API.
π Check it out here: Sakenny Frontend Repository
This project is licensed under the MIT License.
You are free to use, modify, and distribute this software, provided that proper attribution is given.
Meet the people behind this project:
| Avatar | Name | GitHub |
|---|---|---|
| Mohab Wafaie | @MohabWafaie | |
| Ahmed Waleed | @Ahmedabdeen15 | |
| Nancy EL Sherbiny | @NancELSherbiny | |
| Marwan Fawzy Shahat Mahmoud | @ArabianHindi | |
| Rodina Elfeky | @RodinaElfeky | |
| Ahmed Aseel | @Ahmed-Aseel |
This project was made with β€οΈ, β, and a passion for clean architecture.
