Diesel Designs Portfolio is a PHP 8 + MySQL/MariaDB service and portfolio website for Diesel Designs at dieseldesigns.co, focused on website builds, website revamps, Shopify make-overs, and visual website refreshes.
The application has:
- Public portfolio pages for website builds and Shopify make-overs.
- Public project detail pages with galleries, live links, and Shopify before/after sections.
- A private session-based admin panel for creating, editing, publishing, unpublishing, deleting, and managing project images.
Implemented: Initial portfolio build committed as a0e42be - Build PHP portfolio website and admin panel.
Workflow note: A PR record was created too early during the initial implementation pass. It must not be merged, updated, closed, or otherwise acted on unless the user explicitly approves PR activity later in the workflow.
Review status: Initial implementation and bootstrap documentation have been committed. The project still requires individual changed-file review, runtime setup, database import, and live testing before approval or deployment.
- PHP 8+
- MySQL/MariaDB
- PDO prepared statements
- Session-based admin authentication
password_hash/password_verify- Vanilla CSS
- Vanilla JavaScript
- Apache-compatible upload hardening via
uploads/portfolio/.htaccess
-
Create a MySQL/MariaDB database.
-
Import the schema:
mysql -u YOUR_USER -p YOUR_DATABASE < database/portfolio_schema.sql -
Configure database credentials with environment variables if defaults are not appropriate:
DB_HOSTdefaults to127.0.0.1DB_NAMEdefaults todiesel_portfolioDB_USERdefaults torootDB_PASSdefaults to an empty string
-
Ensure
uploads/portfolio/is writable by the web server. -
Visit
/admin/setup.phponce to create the first admin user. -
Log in at
/admin/login.php. -
Add projects, upload images, and publish projects from the admin panel.
| Path | Purpose |
|---|---|
index.php |
Public homepage with hero, featured projects, service cards, and contact CTA. |
websites.php |
Public website-build listing page. |
shopify-makeovers.php |
Public Shopify make-over listing page. |
project.php |
Public project detail page for both project sections. |
admin/ |
Private admin setup, login, dashboard, CRUD, and image management pages. |
admin/includes/ |
Admin header/footer layout includes. |
includes/ |
Shared DB, auth, CSRF, helpers, and public layout includes. |
assets/css/ |
Public/admin CSS and placeholder SVG. |
assets/js/ |
Vanilla JavaScript lightbox behavior. |
database/ |
SQL schema. |
uploads/portfolio/ |
Public upload destination for portfolio images. |
docs/ |
Detailed project documentation. |
- Public homepage.
- Website Builds listing page.
- Shopify Make-Overs listing page.
- Project detail page with gallery and Shopify before/after support.
- Public image lightbox with Escape key close and previous/next navigation.
- Contact CTA using
mailto:. - Admin setup for first admin user.
- Admin login/logout.
- Admin dashboard.
- Admin project list, filters, create, edit, publish/unpublish, and delete.
- Admin image manager for gallery, before, after, and paired before/after images.
- SQL schema for all current tables.
- Basic upload hardening and safe deletion guard.
- General contact/website request email sending is not implemented. Website requests are stored in admin without email notification. Phase 2.1 order notifications are optional and use PHP
mail()only whenADMIN_ORDER_EMAILorORDER_NOTIFY_EMAILis configured. - Pretty URL routing.
- Canonical tags.
- Open Graph metadata.
- Sitemap generation.
- Robots.txt.
- General portfolio/project structured data. FAQPage JSON-LD is implemented for visible published FAQs.
- Automated browser/end-to-end test suite.
- Keep the application simple and framework-free unless a future phase explicitly changes that direction.
- Match documentation to actual code, not planned ideas.
- Protect admin pages and write actions.
- Prefer readable PHP, prepared statements, escaped output, and small helper functions.
- Do not create PRs, merge, or deploy without explicit user approval.
- Update documentation whenever behavior, routes, database schema, deployment, or workflow changes.
- Changelog
- Contributing Guide
- Developer Guide
- Architecture
- Database
- Routes
- Deployment
- Testing
- Security
- SEO
- Troubleshooting
- Phase History
- Codex Workflow
Diesel Designs now functions as both a service website and a portfolio. Visitors can learn about website builds, website revamps, Shopify make-overs, graphics/color customization, view portfolio work, read FAQs, and submit a website request.
New public pages:
/services.php— website build, revamp, Shopify make-over, and scope information./portfolio.php— combined published portfolio work./faq.php— published FAQs with FAQ schema when FAQs exist./request-website.php— database-backed website build/revamp request form with honeypot spam protection.
New admin pages:
/admin/requests.phpand/admin/request-view.php?id=...— request review, status updates, admin notes, contact marking, archive, and delete./admin/faqs.php,/admin/faqs-create.php, and/admin/faqs-edit.php?id=...— FAQ management.
General contact/website request email sending, payment processing, and paid third-party services are not implemented. Requests are stored in the admin panel only. Phase 2.1 order notifications are optional and use PHP mail() only when configured through ADMIN_ORDER_EMAIL or ORDER_NOTIFY_EMAIL.
Phase 2 adds a store foundation for selling Diesel Designs website kits, website builds, Shopify make-overs, revamps, and custom service packages. Public visitors can browse /store.php, view active product/service detail pages, and start an order with customer/project details.
Each purchasable product must be assigned an active contract template before public ordering is allowed. The order flow snapshots product details and renders a contract instance so later edits to templates do not change previously generated or signed contracts. Customers sign through secure token links and can view or download a printable HTML contract copy after signing.
Admins can manage products, contract templates, and orders from the admin area. Payment handling is manual only in this phase through payment status fields; no live payment gateway, card capture, Stripe, PayPal, Square, WooCommerce, or Shopify checkout integration is included.
Products store an allowlisted intake type: shopify_revamp_standard, shopify_custom_kit, website_custom_build, or general_service. Products default to general_service; the field is a VARCHAR, not a database enum. Product details can show multiple live examples ordered by display order and ID while retaining screenshots, the single demo URL, and optional demo password.
Phase 2.2 does not change visible purchase forms: Standard Shopify Revamp still uses the existing shopify_makeover service-type flow. The reusable Questionnaire Builder and complete Custom Shopify Theme intake are Phase 2.3 work, and Custom Website Build intake is Phase 2.4 work. Existing deployments require the Phase 2.2 migration. Because the repository has no confirmed production identifier for the standard Shopify Revamp, verify the production product and classify it using one exact ID or verified slug after migration; see docs/DEPLOYMENT.md.