How lehoangluan1/bookstore-fahasa-inspired works
This is a PHP/MySQL bookstore storefront with customer accounts and an administrator back office. A browser request enters at the public front controller, which dispatches to a feature controller; that controller prepares model data and renders a view or returns JSON. The feature branches cover product discovery and reviews, cart/checkout, Q&A, accounts, blog, contact, and administration. The sampled code supports several controller-to-model and rendering links; other feature internals are represented from the file tree and source index, so uncertain links are omitted.
Main entry points: index.php Request router · Database.php MySQL database · QnaController.php Questions and answers · ProductController.php Product browsing
Components 24
Request handling
- Request router
public/index.php
Storefront
- Product browsing
app/Controllers/ProductController.php - Product catalog
app/Models/Product.php - Catalog filters
app/Models/Filter.php - Product reviews
app/Models/Review.php - Cart and checkout
app/Controllers/CartController.php - Cart data
app/Models/Cart.php - Order records
app/Models/Order.php
Community content
- Questions and answers
app/Controllers/QnaController.php - Question records
app/Models/Question.php - Answer records
app/Models/Answer.php - Community votes
app/Models/Vote.php - Question tags
app/Models/Tag.php - Blog publishing
app/Controllers/BlogController.php - Contact forms
app/Controllers/ContactController.php
Accounts
- Sign-in and recovery
app/Controllers/AuthController.php - Customer accounts
app/Controllers/UserController.php
Administration
- Admin operations
app/Controllers/Admin - Moderate Q&A
app/Controllers/Admin/AdminQnaController.php - Manage users
app/Controllers/Admin/AdminUserController.php
Shared infrastructure
- Controller base
app/Core/Controller.php - MySQL database
app/Core/Database.php - Access middleware
app/Core/AuthMiddleware.php
Other components
- Browser user
Connections 28
- Browser user → Request router: requests pages
public/index.php - Request router → Product browsing: dispatches
public/index.php - Request router → Cart and checkout: dispatches
public/index.php - Request router → Questions and answers: dispatches
public/index.php - Request router → Blog publishing: dispatches
public/index.php - Request router → Contact forms: dispatches
public/index.php - Request router → Sign-in and recovery: dispatches
public/index.php - Request router → Customer accounts: dispatches
public/index.php - Request router → Admin operations: dispatches
public/index.php - Request router → Moderate Q&A: dispatches
public/index.php - Request router → Manage users: dispatches
public/index.php - Product browsing → Product catalog: queries catalog
- Product browsing → Catalog filters: loads filters
app/Controllers/ProductController.php - Product browsing → Product reviews: loads reviews
app/Controllers/ProductController.php - Questions and answers → Question records: lists questions
app/Controllers/QnaController.php - Questions and answers → Answer records: creates answers
app/Controllers/QnaController.php - Questions and answers → Community votes: processes votes
app/Controllers/QnaController.php - Questions and answers → Question tags: loads tags
app/Controllers/QnaController.php - Moderate Q&A → Access middleware: requires admin
app/Controllers/Admin/AdminQnaController.php - Moderate Q&A → Admin operations: uses Q&A admin model
app/Controllers/Admin/AdminQnaController.php - Manage users → Access middleware: requires admin
app/Controllers/Admin/AdminUserController.php - Admin operations → Access middleware: guards admin routes
app/Controllers/Admin/AdminQnaController.php - Catalog filters → MySQL database: queries database
app/Models/Filter.php - Product reviews → MySQL database: queries database
app/Models/Review.php - Question records → MySQL database: queries database
app/Models/Question.php - Answer records → MySQL database: queries database
app/Models/Answer.php - Community votes → MySQL database: queries database
app/Models/Vote.php - Question tags → MySQL database: queries database
app/Models/Tag.php