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.com2. 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: HTTPSOption B — Docker:
bash
docker-compose up -d
# WordPress: http://localhost:8000
# PHPMyAdmin: http://localhost:80803. Create wp-config.php
bash
cp _project/_web/wp-config-sample.php _project/_web/wp-config.phpEdit 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 dev6. 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:
- overview.md — What is Dezeen.com (5 min)
- architecture.md — How the pieces fit together (5 min)
- project-structure.md — Where things live in the repo (5 min)
Key Concepts to Internalise
| Concept | Location |
|---|---|
| Business logic | mu-plugins/dezeen/src/ — This is the core |
| Feature modules | plugins/dezeen-*/ — One plugin per feature |
| Frontend | themes/2016dezeen/ — Templates, SCSS, JS |
| Build | _project/_web/webpack.mix.js — Laravel Mix |
| Config | _project/_web/wp-config.php — All constants |
The Big Three Systems
- Articles — Standard WordPress posts with ACF fields, categories, tags
- Awards — Custom post types (
award_entry,shortlist_entry,longlist_entry,winner), Laravel Platform integration, PayPal payments - Events —
dezeen_eventCPT, 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
- Open
_project/_web/wp-content/themes/2016dezeen/assets/sass/_variables.scss - Change a colour value
- Run
npm run devfrom_project/_web/ - 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
masterbranch - 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 → WordPressKey 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 flushMinute 50–60: Troubleshooting & Next Steps
Quick reference
- troubleshooting.md — Common issues and fixes
- runbooks/cache-purge.md — How to purge caches
- runbooks/incident-checklist.md — What to do when things break
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
| Day | Focus | Resources |
|---|---|---|
| 1 | Local setup, run the site | This handover, local-development.md |
| 2 | Theme deep-dive | theme/2016dezeen.md, explore templates |
| 3 | mu-plugin core logic | mu-plugins/dezeen.md |
| 4 | Awards + Competitions systems | Plugin docs, Laravel Platform |
| 5 | Deployment practice (staging) | deployment.md, DeployHQ access |
Week 2 Learning Path
| Day | Focus | Resources |
|---|---|---|
| 1 | Caching and performance | caching-and-performance.md |
| 2 | Third-party integrations | integrations.md |
| 3 | Content model and ACF | admin-and-content-model.md |
| 4 | Security, compliance | security-and-compliance.md |
| 5 | Incident practice (mock incident) | runbooks/incident-checklist.md |
Questions for the Outgoing Team
These should be answered during the handover period (before October 2026):
- What is the exact Redis status in production — active or planned?
- What system crontab entries exist on production for WP-Cron?
- What Cloudflare WAF rules are configured?
- How is the database backup automated? What's the restore procedure?
- Are there any manual processes that run periodically (e.g., Algolia re-index)?
- What monitoring/alerting exists? (No config found in repo)
- How do you handle WordPress core and plugin updates in production?
- What is the process for provisioning new Jelastic nodes?