Recycling Website · WordPress
WeAreEco.ro
WeAreEco.ro is the digital channel of the national “HaiDEEE să fim ECO!” campaign run by the CNREE Association. Anyone in Bucharest and Ilfov can request a pick-up of old appliances from home and get rewarded for it — with points, prizes and tickets to a prize draw. Everything was written from scratch, with no purchased theme and no page builder.
Visit website
The challenge
What needed to change
Recycling a fridge had to be as simple as ordering online. CNREE needed a way for anyone in Bucharest and Ilfov to request a pick-up from home, and to reward them for it — and no existing plugin covered the combination: an order with a weight threshold, an account created automatically, points granted only after the actual pick-up, claimable prizes and a separate campaign with prize-draw tickets.
Most orders come from phones, where a mistyped address means a missed pick-up. Weights and points per product change often and had to be editable from the admin yet impossible to bypass from the browser, and points with real value could never be spent twice.
Our approach
How we solved it
We built it as an application of its own on top of WordPress, used only as the base for users, admin and content. The homepage is the map: collection points come from a custom content type, imported from CSV by the CNREE team. The order form turns the phone’s location into an address, checks the service area and recalculates the total weight on the server, refusing anything under 30 kg.
The customer account is created from the email at the first order and accessed through a passwordless magic link. Points are credited only when an operator marks the pick-up as completed, and claiming a prize deducts them through a conditional update, so two simultaneous requests can never spend the same balance. In 2026 we went through all the code again to harden it.
A homepage map of collection points in partner stores, fed by CSV import
Address filled in from the phone’s location: consent first, filtered reverse geocoding, diacritics normalisation and a service-area check
Pick-up orders with weight and points per product, recalculated and validated on the server
Conditional fields for individuals and companies, and a pick-up calendar that skips weekends and public holidays
Passwordless login via email magic link: hashed single-use tokens valid for 15 minutes, rate limiting and no account enumeration
Loyalty points and a prize catalogue with atomic claims and claim history in the account
The “Reciclezi și ești campion!” campaign, with its own counter and a prize-draw ticket for every 150 points
A simple admin for CNREE operators: five custom content types, custom columns and menus trimmed to what they use
Migration of the old orders and a 2026 security pass: nonces everywhere, JSON instead of serialize, SMTP outside the code
Inside the product
The results
What changed for the client
- 30 kg
- Minimum order, enforced on the server
- 5
- Custom content types with their own admin
- 150
- Points for each prize-draw ticket
- 10
- Days from the first commit to a full demo
Built with
Next project
Genuin
View case study