How chrisanger59/tomtroc works
TomTroc is a PHP MVC book-exchange site with account/profile management and user-to-user messaging. A request enters through the public front controller, is dispatched by the router, and is handled by controllers that coordinate validation, authentication, repositories, and views. The sampled source confirms the book, account, and messaging paths; other documented capabilities are represented where their modules are present, but unsampled implementation details are not inferred. MySQL persistence is represented by the repository/database layer.
Main entry points: UserController.php Account workflows · View.php View renderer · BookController.php Book workflows · MailController.php Message workflows
Components 23
Web request and views
- Front controller
public/index.php - Action router
app/Core/Router.php - View renderer
app/Core/View.php
Book exchange
- Book workflows
app/Controllers/BookController.php - Book validation
app/Services/BookValidator.php - Image uploads
app/Services/ImageUploader.php - Book pages
app/Views
Accounts and profiles
- Account workflows
app/Controllers/UserController.php - Authentication
app/Services/Auth.php - User validation
app/Services/UserValidator.php - Account pages
app/Views
Messaging
- Message workflows
app/Controllers/MailController.php - Mailbox page
app/Views/mailBox.php
Domain and persistence
- Book repository
app/Repositories/BookManager.php - User repository
app/Repositories/UserManager.php - Message repository
app/Repositories/MessageManager.php - Book model
app/Models/Book.php - User model
app/Models/User.php - Message model
app/Models/Message.php - Repository base
app/Repositories/AbstractRepository.php - Database access
app/Core/DBManager.php - MySQL database
database/schema.sql
Other components
- Site visitor
Connections 32
- Site visitor → Front controller: requests pages
README.md - Front controller → Action router: dispatches to
public/index.php - Action router → Book workflows: routes actions
app/Core/Router.php - Action router → Account workflows: routes actions
app/Core/Router.php - Action router → Message workflows: routes actions
app/Core/Router.php - Book workflows → Book repository: reads and writes
app/Controllers/BookController.php - Book workflows → Book validation: validates input
app/Controllers/BookController.php - Book workflows → Image uploads: uploads covers
app/Controllers/BookController.php - Book workflows → View renderer: renders pages
app/Controllers/BookController.php - View renderer → Book pages: renders template
app/Core/View.php - Account workflows → User repository: reads and writes
app/Controllers/UserController.php - Account workflows → Book repository: loads user books
app/Controllers/UserController.php - Account workflows → User validation: validates input
app/Controllers/UserController.php - Account workflows → Authentication: checks access
app/Controllers/UserController.php - Account workflows → Image uploads: uploads profile photo
app/Controllers/UserController.php - Account workflows → View renderer: renders pages
app/Controllers/UserController.php - View renderer → Account pages: renders template
app/Core/View.php - Message workflows → Message repository: loads and sends
app/Controllers/MailController.php - Message workflows → User repository: loads recipient
app/Controllers/MailController.php - Message workflows → Authentication: requires login
app/Controllers/MailController.php - Message workflows → View renderer: renders mailbox
app/Controllers/MailController.php - View renderer → Mailbox page: renders template
app/Core/View.php - Book repository → Book model: hydrates books
app/Repositories/BookManager.php - Book repository → User model: hydrates owners
app/Repositories/BookManager.php - User repository → User model: hydrates users
app/Repositories/UserManager.php - Message repository → Message model: hydrates messages
app/Repositories/MessageManager.php - Message repository → User model: hydrates participants
app/Repositories/MessageManager.php - Book repository → Repository base: extends
app/Repositories/BookManager.php - User repository → Repository base: extends
app/Repositories/UserManager.php - Message repository → Repository base: extends
app/Repositories/MessageManager.php - Repository base → Database access: uses connection
app/Repositories/AbstractRepository.php - Database access → MySQL database: queries