Skip to content

A full-stack .NET Apartment Rental System built with N-Tier Architecture, SQL Server, and Swagger API documentation.

License

Notifications You must be signed in to change notification settings

CozyQuest/sakenny

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

190 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🏠 Sakenny (Ψ³ΩƒΩ†Ω‘ΩŠ) – Backend

screencapture-localhost-4200-rent-2025-08-19-20_37_29

A Full-Stack Property Rental Platform built with .NET & Angular
Graduation Project – ITI Alexandria | Full Stack Development Track


πŸ“– Overview

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.

πŸ”‘ Key Highlights

  • πŸ” 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.


πŸŽ₯ Demo

Check out the demo of Sakenny here:
πŸ‘‰ Watch on Google Drive


✨ Features

The Sakenny Backend provides all the core functionalities required to run a property rental platform securely and efficiently.

πŸ”‘ Authentication & Authorization

  • JWT-based authentication for secure API access.
  • Role-based authorization (Customer, Host, Admin).
  • Login & Signup with Google OAuth.

πŸ’³ Payment Integration

  • Stripe integration for safe and reliable payments.
  • Transaction tracking in user booking history.

🏑 Property Management

  • Hosts can submit properties for rental.
  • Properties require Admin approval before being visible to customers.
  • Property availability is automatically managed to prevent double-booking.

πŸ“ Location Services

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

πŸ–ΌοΈ Image Management

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

πŸ“… Booking System

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

πŸ“Š Dashboards

  • Customer Dashboard – Manage bookings & history.
  • Host Dashboard – Manage properties, monitor income.
  • Admin Dashboard – Manage properties, users, approvals, and overall system data.

πŸ› οΈ Clean Architecture & Best Practices

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

πŸ› οΈ Tech Stack

The Sakenny Backend is built with modern technologies to ensure scalability, security, and maintainability.

.NET 8 Entity Framework Core SQL Server Stripe Google Maps API AutoMapper Azure Blob Storage

πŸ“¦ Backend Technologies

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

πŸ—οΈ Architecture & Patterns

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

πŸ—οΈ Architecture

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.

πŸ”Ή Layers Overview

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

πŸ“‚ Folder Structure

Sakenny.Backend/
β”œβ”€β”€ Sakenny.DataAccess/
β”‚   β”œβ”€β”€ Models/
β”‚   β”œβ”€β”€ Configurations/
β”‚   β”œβ”€β”€ Repositories/
β”‚   β”œβ”€β”€ Interfaces/
β”‚   β”œβ”€β”€ UnitOfWork.cs
β”‚   └── AppDbContext.cs
β”‚
β”œβ”€β”€ Sakenny.Application/
β”‚   β”œβ”€β”€ DTOs/
β”‚   β”œβ”€β”€ Services/
β”‚   └── Interfaces/
β”‚
β”œβ”€β”€ Sakenny.API/
β”‚   β”œβ”€β”€ Controllers/
β”‚   └── MappingProfiles/
β”‚
└── Sakenny.sln

πŸ“ Design Principles

  • βœ… 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.

🎨 Frontend Repository

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


πŸ–ΌοΈ Screenshots

Database Schema (SQL Server)

Screenshot 2025-08-19 214024

Swagger UI

screencapture-jdg827ff-7279-uks1-devtunnels-ms-swagger-index-html-2025-08-19-21_41_46

πŸ“œ License

This project is licensed under the MIT License.
You are free to use, modify, and distribute this software, provided that proper attribution is given.

License: MIT


πŸ‘¨β€πŸ’» Team

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

❀️ Made With Love

This project was made with ❀️, β˜•, and a passion for clean architecture.

Releases

No releases published

Packages

No packages published

Contributors 6

Languages