graph TD
A[Client] -->|HTTP| B(Web Application)
B --> C{Authentication}
C -->|Admin| D[Book Management ,Rental Management]
C -->|Admin| E[Rental Management]
C -->|User| F[View Books]
C -->|User| G[Rent Books]
B --> H[Hangfire Dashboard]
H -->|Scheduled Jobs| I[Background Tasks]
I --> J[Email Notifications]
I --> K[WhatsApp Notifications]
B --> L[Serilog Logging]
M[(Database SQL)] --> B
M --> H
N[Role Management] --> C
Bookify is an enterprise-grade book rental management system designed to streamline library operations and enhance user experience. The system provides comprehensive solutions for book inventory management, subscriber handling, rental processing, and administrative operations.
- π― Streamlined rental operations
- π Advanced reporting and analytics
- π Secure user authentication
- π± Modern, responsive interface
- π Real-time updates
- π Scalable architecture
Bookify is a robust ASP.NET Core web application designed for managing book rentals. It features user authentication, book management, and an automated rental system. With integrated Hangfire for background jobs, Serilog for logging, and support for WhatsApp and email notifications, Bookify offers a comprehensive solution for libraries or book rental services.
- π Inventory tracking
- π·οΈ Categorization
- πΈ Image management
- π Stock monitoring
- π Rental processing
- β° Due date management
- π° Fine calculation
- π± SMS/WhatsApp notifications
- π₯ Role-based access
- π Secure authentication
- π§ Email verification
- π€ Profile management
- Backend Framework: ASP.NET Core 8.0
- ORM: Entity Framework Core
- Database: SQL Server
- Authentication: ASP.NET Core Identity
- Frontend:
- Bootstrap
- jQuery
- javascript for Ajax calls
- DataTables "both client and server"
- File Storage: Cloudinary ,
- Background Jobs: Hangfire
- Mapping: AutoMapper, manual mapping
- WhatsApp API (via IWhatsAppClient)
- ASP.NET Core Identity
- Custom claim providers
- User Management: Complete user lifecycle management
- Password Hashing: Secure password storage using industry-standard hashing
- Account Confirmation: Email verification system
- Password Recovery: Secure password reset functionality
public static class AppRoles
{
public const string Admin = "Admin";
public const string Reception = "Reception";
public const string Archive = "Archive";
public const string User = "User";
}
// Controller-level authorization
[Authorize(Roles = AppRoles.Reception)]
public class RentalsController : Controller
{
// Only the Reception role can access this controller
}
// Action-level authorization
[Authorize(Roles = $"{AppRoles.Admin},{AppRoles.Archive}")]
public IActionResult ManageBooks()
{
// Only Admin and Archive roles can access this action
}
using Data protection that built in library .NET using extra package "hashids"
- HTTPS Enforcement: All communications are encrypted using SSL/TLS
- Anti-forgery Tokens: Protection against CSRF attacks
- XSS Prevention: Content security policies and input sanitization
- SQL Injection Prevention: Use of parameterized queries and EF Core
- Secure Headers: Implementation of security headers (HSTS, X-Frame-Options, etc.)
- Audit Logging: Tracking of security-relevant events
- .NET 8.0 SDK
- SQL Server
- Visual Studio 2022 (recommended) or VS Code
-
Clone the repository
git clone https://github.com/mohamedelsaid056/MVC.bookifyapp.aspdotnet
-
Navigate to the project directory
cd Bookify
-
Restore dependencies
dotnet restore
-
Update the connection string in
appsettings.json
to point to your database
json
{
"CloudinarySettings": {
"Cloud": "your_cloud_name",
"ApiKey": "your_api_key",
"ApiSecret": "your_api_secret"
},
"MailSettings": {
// Configure your email settings
}
}
-
Apply migrations to create the database
dotnet ef database update
-
Run the application
dotnet run
- The application uses
appsettings.json
for configuration. Make sure to update any necessary settings, such as connection strings, API keys, etc. - Serilog is configured to read from the configuration file.
- Hangfire dashboard is accessible at
/hangfire
and is restricted to admin users only.
Demo Link: -http://mohamedbookifyapp1.runasp.net/
username : [email protected]
password : P@ssword123