Move portfolio case studies to data-driven template system and archive old individual files
This commit is contained in:
222
_portfolio/index.full.php
Normal file
222
_portfolio/index.full.php
Normal file
@@ -0,0 +1,222 @@
|
||||
<?php
|
||||
|
||||
$title = 'Portfolio — Ovidiu Ungureanu';
|
||||
$description = 'Selected web development projects by Ovidiu Ungureanu.';
|
||||
$extra_css = '/css/portfolio.css';
|
||||
require __DIR__.'/../includes/header.php';
|
||||
|
||||
$projects = [
|
||||
[
|
||||
'slug' => 'thompson',
|
||||
'num' => '01',
|
||||
'code' => 'WEB_DEV',
|
||||
'title' => 'Thompson Service Centre',
|
||||
'desc' => 'Trust-first redesign for a 25-year Peterborough garage. Bold credibility signals, booking flow, zero clichés.',
|
||||
'year' => '2025',
|
||||
'thumb' => '/img/thompson/hero.jpg',
|
||||
'live' => true,
|
||||
],
|
||||
[
|
||||
'slug' => 'northgate-motors',
|
||||
'num' => '02',
|
||||
'code' => 'E_COMMERCE',
|
||||
'title' => 'Northgate Motors',
|
||||
'desc' => 'Parts and accessories e-commerce with Stripe checkout and stock management backend.',
|
||||
'year' => '2025',
|
||||
'thumb' => null,
|
||||
'live' => false,
|
||||
],
|
||||
[
|
||||
'slug' => 'fenland-tyres',
|
||||
'num' => '03',
|
||||
'code' => 'BOOKING',
|
||||
'title' => 'Fenland Tyres',
|
||||
'desc' => 'Online booking system with real-time slot availability and automated confirmation emails.',
|
||||
'year' => '2025',
|
||||
'thumb' => null,
|
||||
'live' => false,
|
||||
],
|
||||
[
|
||||
'slug' => 'stamford-autocare',
|
||||
'num' => '04',
|
||||
'code' => 'LANDING',
|
||||
'title' => 'Stamford Autocare',
|
||||
'desc' => 'Local SEO-focused landing page with one job: turn a Google search into a phone call.',
|
||||
'year' => '2024',
|
||||
'thumb' => null,
|
||||
'live' => false,
|
||||
],
|
||||
[
|
||||
'slug' => 'heron-storage',
|
||||
'num' => '05',
|
||||
'code' => 'WEB_DEV',
|
||||
'title' => 'Heron Self Storage',
|
||||
'desc' => 'Full site rebuild with unit availability checker and online reservation management.',
|
||||
'year' => '2024',
|
||||
'thumb' => null,
|
||||
'live' => false,
|
||||
],
|
||||
[
|
||||
'slug' => 'ely-clutch',
|
||||
'num' => '06',
|
||||
'code' => 'LANDING',
|
||||
'title' => 'Ely Clutch & Brake',
|
||||
'desc' => 'Landing page built around their specialist credentials and emergency call-out. Loads in under a second.',
|
||||
'year' => '2024',
|
||||
'thumb' => null,
|
||||
'live' => false,
|
||||
],
|
||||
[
|
||||
'slug' => 'wisbech-auto',
|
||||
'num' => '07',
|
||||
'code' => 'FULL_BUILD',
|
||||
'title' => 'Wisbech Auto Centre',
|
||||
'desc' => 'Full-stack build: service menu, booking, customer portal, and GSAP scroll animations.',
|
||||
'year' => '2024',
|
||||
'thumb' => null,
|
||||
'live' => false,
|
||||
],
|
||||
[
|
||||
'slug' => 'march-mot',
|
||||
'num' => '08',
|
||||
'code' => 'BOOKING',
|
||||
'title' => 'March MOT Station',
|
||||
'desc' => 'Streamlined MOT booking with DVLA vehicle lookup and reminder SMS integration.',
|
||||
'year' => '2024',
|
||||
'thumb' => null,
|
||||
'live' => false,
|
||||
],
|
||||
[
|
||||
'slug' => 'peterborough-panels',
|
||||
'num' => '09',
|
||||
'code' => 'PORTFOLIO',
|
||||
'title' => 'Peterborough Panels',
|
||||
'desc' => 'Before/after portfolio site for a bodywork specialist. Gallery-first layout, zero clutter.',
|
||||
'year' => '2023',
|
||||
'thumb' => null,
|
||||
'live' => false,
|
||||
],
|
||||
[
|
||||
'slug' => 'huntingdon-haulage',
|
||||
'num' => '10',
|
||||
'code' => 'WEB_DEV',
|
||||
'title' => 'Huntingdon Haulage',
|
||||
'desc' => 'Fleet services website with route coverage map and driver recruitment section.',
|
||||
'year' => '2023',
|
||||
'thumb' => null,
|
||||
'live' => false,
|
||||
],
|
||||
[
|
||||
'slug' => 'chatteris-cars',
|
||||
'num' => '11',
|
||||
'code' => 'LISTINGS',
|
||||
'title' => 'Chatteris Cars',
|
||||
'desc' => 'Used car listings with dynamic search, filter by make/model, and finance enquiry form.',
|
||||
'year' => '2023',
|
||||
'thumb' => null,
|
||||
'live' => false,
|
||||
],
|
||||
[
|
||||
'slug' => 'ramsey-recovery',
|
||||
'num' => '12',
|
||||
'code' => 'LANDING',
|
||||
'title' => 'Ramsey Recovery',
|
||||
'desc' => '24/7 roadside recovery landing page built for speed — sub-2s load, click-to-call hero.',
|
||||
'year' => '2023',
|
||||
'thumb' => null,
|
||||
'live' => false,
|
||||
],
|
||||
[
|
||||
'slug' => 'soham-services',
|
||||
'num' => '13',
|
||||
'code' => 'FULL_BUILD',
|
||||
'title' => 'Soham Service Station',
|
||||
'desc' => 'Full rebuild from scratch — site, booking system, staff rota, and customer history. One login, everything in one place.',
|
||||
'year' => '2023',
|
||||
'thumb' => null,
|
||||
'live' => false,
|
||||
],
|
||||
[
|
||||
'slug' => 'downham-diesel',
|
||||
'num' => '14',
|
||||
'code' => 'LANDING',
|
||||
'title' => 'Downham Diesel',
|
||||
'desc' => 'Specialist diesel landing page targeting commercial vehicle operators in the Fens.',
|
||||
'year' => '2022',
|
||||
'thumb' => null,
|
||||
'live' => false,
|
||||
],
|
||||
[
|
||||
'slug' => 'kings-lynn-kustoms',
|
||||
'num' => '15',
|
||||
'code' => 'PORTFOLIO',
|
||||
'title' => "King's Lynn Kustoms",
|
||||
'desc' => 'Custom builds portfolio for a one-man fabrication shop. Dramatic full-screen imagery.',
|
||||
'year' => '2022',
|
||||
'thumb' => null,
|
||||
'live' => false,
|
||||
],
|
||||
];
|
||||
?>
|
||||
|
||||
<header class="hero">
|
||||
<div class="hero-label">Portfolio — Selected Work</div>
|
||||
<h1>Selected<br>Work</h1>
|
||||
<p class="hero-sub">Client projects and builds.</p>
|
||||
</header>
|
||||
|
||||
<section class="section">
|
||||
<div class="section-label">001 — <?php
|
||||
echo count($projects); ?> Projects
|
||||
</div>
|
||||
<div class="portfolio-grid">
|
||||
<?php
|
||||
foreach ($projects as $p): ?>
|
||||
<a href="/portfolio/<?php
|
||||
echo htmlspecialchars($p['slug']); ?>/"
|
||||
class="project-card<?php
|
||||
echo $p['live'] ? '' : ' project-card--wip'; ?>">
|
||||
|
||||
<div class="project-card__thumb">
|
||||
<span class="project-card__label">[<?php
|
||||
echo htmlspecialchars($p['num']); ?> / <?php
|
||||
echo htmlspecialchars($p['code']); ?>]</span>
|
||||
<?php
|
||||
if ($p['thumb']): ?>
|
||||
<img src="<?php
|
||||
echo htmlspecialchars($p['thumb']); ?>"
|
||||
alt="<?php
|
||||
echo htmlspecialchars($p['title']); ?>"
|
||||
loading="lazy">
|
||||
<?php
|
||||
endif; ?>
|
||||
</div>
|
||||
|
||||
<div class="project-card__body">
|
||||
<h3 class="project-card__title"><?php
|
||||
echo htmlspecialchars($p['title']); ?></h3>
|
||||
<p class="project-card__desc"><?php
|
||||
echo htmlspecialchars($p['desc']); ?></p>
|
||||
<div class="project-card__footer">
|
||||
<span class="project-card__year"><?php
|
||||
echo htmlspecialchars($p['year']); ?></span>
|
||||
<span class="project-card__arrow">→</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</a>
|
||||
<?php
|
||||
endforeach; ?>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section section-cta">
|
||||
<div class="section-label">002 — Contact</div>
|
||||
<div class="section-content">
|
||||
<p class="large-text">Got a project in mind?</p>
|
||||
<a href="mailto:hello@uovidiu.com" class="btn">Get in Touch →</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<?php
|
||||
require __DIR__.'/../includes/footer.php'; ?>
|
||||
Reference in New Issue
Block a user