Skip to content

Handover: Onboard a New Developer in 60 Minutes

Prerequisites

Before starting, ensure you have:

  • [ ] Git access to the repository
  • [ ] A local development environment (macOS with Homebrew recommended)
  • [ ] A database dump (sanitised production backup)
  • [ ] This documentation

Minute 0–10: Environment Setup

1. Clone the repo

bash
git clone <repo-url> Dezeen.com
cd Dezeen.com

2. Choose a local server (pick one)

Option A — Laravel Valet (recommended for macOS):

bash
composer global require laravel/valet
valet install
cd _project/_web
valet link dezeen
valet secure dezeen   # Optional: HTTPS

Option B — Docker:

bash
docker-compose up -d
# WordPress: http://localhost:8000
# PHPMyAdmin: http://localhost:8080

3. Create wp-config.php

bash
cp _project/_web/wp-config-sample.php _project/_web/wp-config.php

Edit database credentials to match your local setup.

4. Import the database

bash
mysql -u root -p dezeen_local < backup.sql
# Update URLs
mysql -u root -p dezeen_local -e "UPDATE vetg_options SET option_value = 'https://dezeen.test' WHERE option_name IN ('siteurl', 'home');"

5. Install dependencies and build

bash
cd _project/_web
npm install
npm run dev

6. Verify

Open https://dezeen.test (Valet) or http://localhost:8000 (Docker). You should see the Dezeen homepage.


Minute 10–25: Architecture Overview

Read these in order:

  1. overview.md — What is Dezeen.com (5 min)
  2. architecture.md — How the pieces fit together (5 min)
  3. project-structure.md — Where things live in the repo (5 min)

Key Concepts to Internalise

ConceptLocation
Business logicmu-plugins/dezeen/src/ — This is the core
Feature modulesplugins/dezeen-*/ — One plugin per feature
Frontendthemes/2016dezeen/ — Templates, SCSS, JS
Build_project/_web/webpack.mix.js — Laravel Mix
Config_project/_web/wp-config.php — All constants

The Big Three Systems

  1. Articles — Standard WordPress posts with ACF fields, categories, tags
  2. Awards — Custom post types (award_entry, shortlist_entry, longlist_entry, winner), Laravel Platform integration, PayPal payments
  3. Eventsdezeen_event CPT, REST API for filtering, ICS downloads, city guides

Minute 25–40: Code Walkthrough

Theme entry point

Open _project/_web/wp-content/themes/2016dezeen/functions.php. It loads 11 modular files from functions/.

mu-plugin entry point

Open _project/_web/wp-content/mu-plugins/dezeen/dezeen.php. This initialises all the core business logic classes.

Make a safe change

  1. Open _project/_web/wp-content/themes/2016dezeen/assets/sass/_variables.scss
  2. Change a colour value
  3. Run npm run dev from _project/_web/
  4. Refresh — see the change

Explore the build

Look at _project/_web/webpack.mix.js to understand:

  • Which JS files are bundled together
  • Which SCSS files produce which CSS files
  • How plugin assets are copied into the theme

Minute 40–50: Operations

Deployment

Read deployment.md. Key points:

  • DeployHQ watches the master branch
  • Rolling deploys: one node at a time
  • Maintenance mode via directory creation
  • Assets compiled in the DeployHQ pipeline

Caching

Read caching-and-performance.md. Cache layers:

Browser → Cloudflare → Varnish → WP Rocket → WordPress

Key commands

bash
# Build assets
cd _project/_web && npm run dev

# Watch for changes
cd _project/_web && npm run watch

# Production build
cd _project/_web && npm run production

# Run Cypress tests
npm run cypress:open

# WP-CLI (if available)
wp plugin list --status=active
wp cron event list
wp cache flush

Minute 50–60: Troubleshooting & Next Steps

Quick reference

Explore the plugin index

Review plugins-and-themes.md for the complete list of custom and third-party plugins.

Known technical debt

Read technical-debt-and-roadmap.md:

  • WordPress 6.2.2 needs upgrading
  • Multiple Algolia plugins need consolidation
  • ACF performance optimisation needed
  • PHP 7.4 → 8.x migration planned

Credentials

Work through credentials-checklist.md to ensure you have access to:

  • Jelastic Enscale (hosting)
  • DeployHQ (deployment)
  • Cloudflare (CDN)
  • Algolia (search)
  • Campaign Monitor (newsletters)
  • WordPress admin (admin.dezeen.com)

Week 1 Learning Path

DayFocusResources
1Local setup, run the siteThis handover, local-development.md
2Theme deep-divetheme/2016dezeen.md, explore templates
3mu-plugin core logicmu-plugins/dezeen.md
4Awards + Competitions systemsPlugin docs, Laravel Platform
5Deployment practice (staging)deployment.md, DeployHQ access

Week 2 Learning Path

DayFocusResources
1Caching and performancecaching-and-performance.md
2Third-party integrationsintegrations.md
3Content model and ACFadmin-and-content-model.md
4Security, compliancesecurity-and-compliance.md
5Incident practice (mock incident)runbooks/incident-checklist.md

Questions for the Outgoing Team

These should be answered during the handover period (before October 2026):

  1. What is the exact Redis status in production — active or planned?
  2. What system crontab entries exist on production for WP-Cron?
  3. What Cloudflare WAF rules are configured?
  4. How is the database backup automated? What's the restore procedure?
  5. Are there any manual processes that run periodically (e.g., Algolia re-index)?
  6. What monitoring/alerting exists? (No config found in repo)
  7. How do you handle WordPress core and plugin updates in production?
  8. What is the process for provisioning new Jelastic nodes?