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/34
Hereβ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:
// 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.json
file with your configuration. -
Run database migrations:
dotnet ef database update
-
Start the application:
dotnet run
- Core E-commerce Features
- Azure Deployment Pipeline
- S3 Image Storage Integration
- 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