A full-stack book management platform with integrated e-commerce capabilities
Live Demo: https://bulkybooks-webapp-bsd0h3gfdad2bvag.eastus-01.azurewebsites.net/
Note: Repository is currently private - DM me with your GitHub username for access
| Dashboard | Screenshot | Description |
|---|---|---|
| Web App Service | CPU/Memory metrics, deployment logs, and scaling status | |
| SQL Server | Query performance insights, index optimization, and connection statistics |
| Dashboard | Screenshot | Description |
|---|---|---|
| Order Management | Bulk actions, advanced filtering, and order lifecycle tracking | |
| Payment Analytics | Payment success/failure logs with webhook response monitoring |
- Role-Based Access Control (Reader, Author, Admin )
- E-commerce Workflow with Chapa payment integration
- Order Management Dashboard with bulk actions
- Automated CI/CD Pipeline via GitHub Actions
- Azure Cloud Infrastructure (App Service + SQL Server)
- Responsive UI built with Bootstrap 5
| Component | Technology |
|---|---|
| Frontend | Bootstrap 5 + Razor Pages |
| Backend | ASP.NET Core MVC (.NET 8) |
| Database | Azure SQL Server |
| Payment Gateway | Chapa |
| CI/CD | GitHub Actions β Azure Deployment |
| Monitoring | Azure Application Insights |
| Role | Permissions |
|---|---|
| Reader | Browse books, manage cart, view orders |
| Author | + Create books/categories |
| Admin | + User management, order analytics |
graph LR
A[GitHub Repository] -->|CI/CD| B[Azure App Service]
B --> C[Azure SQL Database]
C --> D[Chapa Payment Gateway]
B --> E[Azure Blob Storage]
E --> F[Book Covers]
# Admin Account
Username: admin
Password: 123456
# Test Payment Card
Number: 4200 0000 0000 0000
CVV: 123
Expiry: 12/34Hereβs a clear and secure guide for setting up the appsettings.json configuration to run the BulkyBooks Web App. This includes placeholders for sensitive data and instructions for local development:
file: "appsettings.json"
{
"ConnectionStrings": {
"DefaultConnection": "Server=<your-database-server>;Database=<your-database-name>;User ID=<your-username>;Password=<your-password>;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
},
"Chapa": {
"SecretKey": "<your-chapa-secret-key>",
"BaseUrl": "https://api.chapa.co/v1/",
"CallbackUrl": "https://<your-app-url>/Checkout/VerifyPayment",
"ReturnRootUrl": "https://<your-app-url>/Checkout/PaymentSuccess"
},
"JwtConfig": {
"Key": "<your-jwt-secret-key>",
"Issuer": "BulkyBooks",
"Audience": "BulkyBooks",
"DurationInMinutes": 60
}
}-
Database Configuration
Replace the following placeholders inConnectionStrings:<your-database-server>: Your Azure SQL Server or local SQL Server address<your-database-name>: Database name (e.g.,BulkyBooks)<your-username>: Database username<your-password>: Database password
Example for local development:
"DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=BulkyBooks;Trusted_Connection=True;MultipleActiveResultSets=true"
-
Chapa Payment Gateway
-
Sign up at Chapa and obtain your
SecretKey. -
Replace
<your-chapa-secret-key>with your actual secret key. -
For testing, use:
"SecretKey": "CHASECK_TEST-<your-test-key>" "CallbackUrl": "https://localhost:5001/Checkout/VerifyPayment", "ReturnRootUrl": "https://localhost:5001/Checkout/PaymentSuccess"
-
-
JWT Configuration
-
Generate a secure JWT key using a tool like RandomKeyGen.
-
Replace
<your-jwt-secret-key>with a base64-encoded key. -
Example:
"Key": "sI8hz6G3j6c6GIz3+dI9QTMpQtvctGsWRIgjnBUAClw="
-
-
Update the
appsettings.jsonfile with your configuration. -
Run database migrations:
dotnet ef database update
-
Start the application:
dotnet run
- Core E-commerce Features
- Azure Deployment Pipeline
- Used Azurite blob storage for file and images
- Social Auth (Google/Apple)
- Book Rental System
- Community Review System
-
Fork the project (access required)
-
Create your 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
Distributed under the MIT License. See LICENSE for more information.
π¬ Contact: Betsegaw Tesfaye - @betsegaw_hp
π Portfolio: betsegaw.engineer