Bookify is a comprehensive hotel room booking management system developed as a graduation project for the Digital Egypt Pioneers Initiative (DEPI) program. This web application provides a seamless experience for users to browse, book, and manage hotel room reservations, while offering administrators powerful tools to manage the entire booking ecosystem.
- Features
- Technology Stack
- Prerequisites
- Installation
- Configuration
- Database Setup
- Usage
- Project Structure
- Default Credentials
- Team Members
- Contributing
- License
- User Registration & Authentication: Secure user registration and login system with ASP.NET Core Identity
- Google OAuth Integration: Quick sign-in with Google accounts
- Role-Based Access Control: Admin and User roles with different permissions
- Profile Management: Users can manage their profiles and preferences
- Room Browsing: Browse available rooms with detailed information
- Room Types: Multiple room types (Single, Double, Suite, Deluxe, etc.)
- Room Amenities: View and filter rooms by amenities (WiFi, TV, AC, etc.)
- Room Images: Multiple images per room with gallery view
- Price Management: Dynamic pricing with discount support
- Room Availability: Real-time availability checking
- Online Booking: Easy-to-use booking interface with date selection
- Booking Management: Users can view, manage, and cancel their bookings
- Payment Integration: Multiple payment methods support
- Payment Status Tracking: Track payment status (Pending, Confirmed, Cancelled)
- Booking History: Complete booking history for users
- Date Validation: Prevents double bookings and validates date ranges
- Room Reviews: Users can leave reviews and ratings for rooms
- Review Management: View and manage all reviews
- Wishlist: Users can add rooms to their favorites for easy access
- Favorite Management: View and manage favorite rooms
- Dashboard: Comprehensive admin dashboard with statistics
- Room Management: Add, edit, and delete rooms
- Booking Management: View and manage all bookings
- User Management: Manage user accounts and roles
- Amenity Management: Manage room amenities
- Room Type Management: Create and manage room types
- Responsive Design: Mobile-friendly interface
- Contact Form: Contact page for user inquiries
- About Page: Information about the hotel
- Static File Caching: Optimized performance with browser caching
- Email Notifications: Email sender service for notifications
- Database Seeding: Automatic data seeding for quick setup
- Framework: ASP.NET Core 8.0 (MVC)
- Language: C# 12
- ORM: Entity Framework Core 8.0
- Database: SQL Server
- Authentication: ASP.NET Core Identity
- OAuth: Google OAuth 2.0
- UI Framework: Bootstrap 5
- JavaScript: jQuery
- Validation: jQuery Validation
- Icons: Font Awesome / Bootstrap Icons
- CSS: Custom CSS with Bootstrap
- Pattern: Repository Pattern
- Dependency Injection: Built-in ASP.NET Core DI
- Service Layer: Separation of business logic
- View Models: Data transfer objects for views
- Custom Validation: Attribute-based validation
- IDE: Visual Studio 2022 / Visual Studio Code
- Version Control: Git & GitHub
- Package Manager: NuGet
Before you begin, ensure you have the following installed:
- .NET 8.0 SDK or later
- SQL Server 2019 or later (LocalDB, Express, or full version)
- Visual Studio 2022 or Visual Studio Code (recommended)
- Git for version control
git clone https://github.com/amrnabih113/Bookify.git
cd Bookifycd Bookify/Bookifydotnet restoreOpen appsettings.json and update the connection string to point to your SQL Server instance:
{
"ConnectionStrings": {
"DefaultConnection": "Server=.;Database=Bookify_DB;Integrated Security=True;Connect Timeout=30;Encrypt=False;Trust Server Certificate=True;"
}
}Connection String Options:
- LocalDB:
Server=(localdb)\\mssqllocaldb;Database=Bookify_DB;Trusted_Connection=True; - SQL Server Express:
Server=.\\SQLEXPRESS;Database=Bookify_DB;Integrated Security=True; - SQL Server:
Server=localhost;Database=Bookify_DB;Integrated Security=True;
If you want to enable Google authentication, update the following section in appsettings.json:
{
"Authentication": {
"Google": {
"ClientId": "your-google-client-id",
"ClientSecret": "your-google-client-secret"
}
}
}How to get Google OAuth credentials:
- Go to Google Cloud Console
- Create a new project or select an existing one
- Enable Google Identity Services (OAuth 2.0)
- Create OAuth 2.0 credentials (OAuth client ID)
- Add authorized redirect URI:
https://localhost:5001/signin-google
The application automatically creates and seeds the database on first run. Simply run the application:
dotnet runThe application will:
- Create the database if it doesn't exist
- Apply all migrations
- Seed initial data (roles, admin account, room types, rooms, amenities)
If you prefer manual setup or need to reset the database:
# Create a new migration
dotnet ef migrations add InitialCreate
# Update the database
dotnet ef database updateThe application seeds the following data automatically:
- Roles: Admin, User
- Admin Account: [email protected] / Admin@123
- Room Types: Single, Double, Suite, Deluxe, etc.
- Amenities: WiFi, TV, AC, Mini Bar, etc.
- Sample Rooms: Multiple rooms with images and amenities
-
Using Visual Studio:
- Open
Bookify.sln - Press
F5or click the "Run" button
- Open
-
Using .NET CLI:
dotnet run
-
Using Visual Studio Code:
dotnet watch run
The application will start on:
- HTTPS: https://localhost:5001
- HTTP: http://localhost:5000
- Access the Application: Navigate to
https://localhost:5001 - Register a User: Create a new user account or use Google sign-in
- Browse Rooms: Explore available rooms and their details
- Make a Booking: Select dates and book a room
- Admin Access: Login with admin credentials to access the admin panel
Bookify/
βββ Controllers/ # MVC Controllers
β βββ AccountController.cs # Authentication & user management
β βββ AdminController.cs # Admin panel operations
β βββ BookingController.cs # Booking management
β βββ FavoriteController.cs # Favorites management
β βββ HomeController.cs # Home, About, Contact pages
β βββ ReviewController.cs # Review management
β βββ RoomController.cs # Room browsing & details
βββ Models/ # Data Models
β βββ Amenity.cs
β βββ ApplicationUser.cs
β βββ Booking.cs
β βββ Favorite.cs
β βββ Review.cs
β βββ Room.cs
β βββ RoomAmenity.cs
β βββ RoomImage.cs
β βββ RoomType.cs
β βββ ViewModels/ # View Models for data transfer
βββ Views/ # Razor Views
β βββ Account/ # Login, Register, Profile views
β βββ Admin/ # Admin panel views
β βββ Booking/ # Booking views
β βββ Home/ # Home, About, Contact views
β βββ Room/ # Room listing & details views
β βββ Shared/ # Shared layouts & partials
βββ Data/ # Database Context & Seeders
β βββ ApplicationDbContext.cs
β βββ IdentitySeeder.cs
βββ Repository/ # Repository Pattern Implementation
β βββ IGenericRepository.cs
β βββ GenericRepository.cs
β βββ IRoomRepository.cs
β βββ RoomRepository.cs
β βββ IFavoriteRepository.cs
β βββ FavoriteRepository.cs
βββ services/ # Business Logic Layer
β βββ IServices/ # Service interfaces
β βββ BookingService.cs
β βββ AmenityService.cs
β βββ RoomService.cs
β βββ RoomTypeService.cs
β βββ FavoriteService.cs
βββ Custom Validation/ # Custom validation attributes
βββ wwwroot/ # Static files
β βββ css/ # Stylesheets
β βββ js/ # JavaScript files
β βββ images/ # Images & room photos
β βββ lib/ # Client-side libraries
βββ Migrations/ # EF Core Migrations
βββ SQL_Scripts/ # SQL scripts for database
βββ appsettings.json # Application configuration
βββ Program.cs # Application entry point
- Email:
[email protected] - Password:
Admin@123
Note: Please change the default admin password after first login for security reasons.
This project was developed as part of the DEPI (Digital Egypt Pioneers Initiative) graduation project.
Development Team:
- Amr Nabih - Team Lead & Full Stack Developer
- Saleh Mostafa - Full Stack Developer
- Mahmoud Elshiha - Full Stack Developer
- Moaz Mostafa - Full Stack Developer
Project Supervisor: DEPI Program
Institution: Digital Egypt Pioneers Initiative (DEPI)
We welcome contributions to improve Bookify! 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 some amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow C# coding conventions
- Write meaningful commit messages
- Add comments for complex logic
- Ensure all tests pass before submitting
- Update documentation as needed
This project is developed as part of the DEPI graduation requirements. All rights reserved to the development team and DEPI program.
For questions, feedback, or support:
- GitHub Issues: Create an issue
- Email: Contact through GitHub profiles
- Digital Egypt Pioneers Initiative (DEPI) for providing the opportunity and support
- ASP.NET Core Community for excellent documentation and resources
- All contributors who helped make this project possible
Coming soon - Screenshots of the application will be added here
Made with β€οΈ by the Bookify Team
Β© 2024 Bookify - DEPI Graduation Project