Children Mission
A WordPress site for a Ukrainian NGO that trains communities to support children: one-time and monthly donations, partnership applications and content the team edits without a developer.

Challenge
A Ukrainian NGO that trains communities to support children needed a site that tells its story and lets people donate and apply for partnership — and that the team can edit without a developer.
Solution
- Content: a theme rebuilt on native Gutenberg blocks to the client’s designs; pages for the mission, trainings with five course pages and webinars, impact stories, testimonials, team, donations, contacts, privacy and an annual report; team, testimonials and courses as structured content; accessible headings and distinguishable “Learn more” links.
- Donations: one-time and monthly donations through WayForPay with the signature made on the server so the secret never reaches the browser, callback verification, correct monthly dates, preset amounts and validation, a private donation log for admins, bank details for UAH, EUR and USD with copy buttons.
- Forms and email: a contact form deployed by a repeatable script, auto-reply, email through an SMTP service, saved submissions, two layers of spam protection.
- SEO and speed: meta tags, Open Graph, organization schema and sitemap; caching; mixed content removed across the site; banners compressed and a story video re-encoded from 122 MB to 11.5 MB.
- Security: web application firewall, two-factor login, the real visitor IP behind Cloudflare, the database not exposed, secrets only on the server.
- Infrastructure: Docker on a dedicated server behind Cloudflare with automatic certificates, a deployment guide with rollback, an upgrade to PHP 8.3 tested on an isolated stack.
- A WordPress bug found and fixed that made admins lose site-wide permissions after custom content types were added.
Result
The site is live and under monthly maintenance: updates, a tested backup restore, end-to-end checks of donations and forms, and a report in English and Ukrainian. One check caught the contact form silently sending every message to spam, and it was fixed. After the PHP 8.3 upgrade all 25 pages and 16 admin screens were checked with no errors.