How gravedd/portfolio works
Purpose and Runtime
A PHP/MySQL personal business-card site with an MVC-style server-rendered architecture. It exposes public portfolio/content pages plus an administrator workflow for creating and editing articles. The web-server front controller is index.php; Apache access rules are represented by .htaccess files at the root and within protected directories.
Request Routing
index.php initializes request handling and delegates route resolution to components/Router.php. Route definitions live in config/routes.php, mapping URL patterns to controller actions. This is the principal control boundary between HTTP requests and application code.
Controllers
Controllers orchestrate page-level use cases:
• Public site pages: controllers/SiteController.php
• Article listing/detail/preview operations: controllers/ArticlesController.php
• Authentication and admin management actions: controllers/AdminController.php
Controllers select models, obtain data, and render PHP view templates rather than returning an API response.
Models and Persistence
The application persists content and admin data in MySQL. Database access is centralized in components/db.php; the schema/data baseline is portfolio.sql. Domain-facing model layers are:
• Site content: models/sitemodel.php
• Articles: models/article.php
• Admin/session-oriented behavior: models/admin.php, models/adminbase.php
The model/database boundary isolates SQL and persistence concerns from controllers.
Public Rendering Flow
A public request follows index.php → components/Router.php → site or article controller → relevant model → view. Top-level page templates include views/index.php, views/AllArticles.php, and views/article.php; reusable page composition is handled through includes such as views/includes/header.php, views/includes/footer.php, and article-content fragments.
Static presentation assets are served from views/css, views/js, views/img, and views/fonts.
Article Authoring and Preview
Article management has separate render states for creation, editing, and preview:
• views/addarticle.php
• views/articleedit.php
• views/articlepreview.php
• views/newarticlepreview.php
controllers/ArticlesController.php and controllers/AdminController.php form the workflow boundary for public article display versus privileged authoring actions, backed by models/article.php.
Administration and Uploaded Assets
Admin entry and dashboard rendering are represented by views/adminlogin.php and views/admin.php, with form/panel fragments in views/includes/adminloginform.php and views/includes/adminpanel.php. Admin authentication/authorization is expected to gate write operations before model updates.
User-managed files are stored under uploads/, notably uploads/images; this filesystem boundary is separate from database-backed article and admin records. The repository currently also contains document/design assets directly under uploads/.
Main entry points: Router.php Router · AdminController.php Admin controller · ArticlesController.php Articles controller · index.php Public views
Components 18
Web runtime
- Apache rules · Root and protected-directory access rules.
.htaccess - Front controller
index.php
Application
- Router
components/Router.php - Route definitions
config/routes.php - Site controller
controllers/SiteController.php - Articles controller · Handles public article display and preview states.
controllers/ArticlesController.php - Admin controller · Gates administration and write actions.
controllers/AdminController.php - Site model
models/sitemodel.php - Article model
models/article.php - Admin models
models/admin.php
Rendering
- Public views · Home and article listing/detail templates.
views/index.php - Authoring views · Create, edit, and preview article states.
views/addarticle.php - Admin views · Login, dashboard, and admin form fragments.
views/adminlogin.php - Shared layout
views/includes/header.php - Static assets
views/css
Storage
- Database access
components/db.php - MySQL · Schema and baseline data are in portfolio.sql.
portfolio.sql - Uploaded assets · User-managed images, documents, and design assets.
Connections 23
- Apache rules → Front controller: forwards requests
- Front controller → Router: delegates
- Router → Route definitions: resolves against
- Router → Site controller: public pages
- Router → Articles controller: article routes
- Router → Admin controller: admin routes
- Site controller → Site model: loads content
- Articles controller → Article model: reads articles
- Admin controller → Admin models: auth/session
- Admin controller → Article model: writes articles
- Site model → Database access: queries
- Article model → Database access: queries
- Admin models → Database access: queries
- Database access → MySQL: persists
- Site controller → Public views: renders
- Articles controller → Public views: renders
- Articles controller → Authoring views: renders previews
- Admin controller → Authoring views: renders editing
- Admin controller → Admin views: renders
- Public views → Shared layout: includes
- Admin views → Shared layout: includes
- Public views → Static assets: uses
- Authoring views → Uploaded assets: manages assets