- Role
- Platform, payments and integrations
- Year
- 2023
- Client
- Apadrina un Olivo
- Website
- Visit
About the project
Apadrinaunolivo.org is the digital platform of the Apadrina un Olivo (Sponsor an Olive Tree) project, operating out of Oliete (Teruel, Spain): recovering abandoned olive trees, creating rural jobs and connecting sponsors with a tangible impact. The product’s goal is to turn a charitable cause into a stable system of adoptions and renewals: choose an olive tree, pay (subscription or one-off), manage gifts, receive olive oil/updates and download tax certificates.
Technically it is a Laravel 8 application with an interactive Livewire 2 UI, a Backpack admin panel and a modern front end with Alpine.js and Tailwind. Payments are handled mainly with Stripe via Laravel Cashier (webhooks, customers, payment methods, subscriptions), with legacy CECA support. The ecosystem is completed by Mailchimp, SparkPost transactional email, S3 storage, Redis queues, PDF generation (invoices/certificates), olive tree QR codes, Excel imports/exports and an API for field operations (plots, trees, PWA). Deployment relies on Docker in development and AWS (Elastic Beanstalk + CodePipeline) in staging/production.
What the site includes
Home page and project pages (economy, social, village, environment, olive oil, education, visits…). Multi-step adoption flow (plans, login/sign-up, shipping details, payment). Adoption as a gift (delivery, token redemption, recipient management). Renewals, card changes and Stripe payment confirmation. Coupons / promotions and an adoption landing page.
Sponsor area (Livewire): adoptions, gifts, news, tax details, certificates. Donation certificates and invoices as PDF. A QR code per olive tree and related forms. ES / EN / FR multi-language.
Admin panel (Backpack): users, adoptions, olive trees, plots, invoices, gifts, coupons, products, promotions, reporting and fix/sync tools. Versioned API (trees, plots, adoptions, users, Stripe/CECA webhooks, field PWA endpoints). Newsletter / Mailchimp sync.
Challenge and solution
The challenge is combining impact storytelling with a real subscription and logistics business (thousands of olive trees, gifts, renewals, invoicing and CRM). It is solved with Laravel + Cashier/Stripe (and legacy CECA), Redis jobs/queues, payment webhooks, Mailchimp sync and an operations admin built with Livewire for reporting, Excel imports/exports and data fixes.
The interactive front end (adoption and private area) lives in Livewire + Alpine/Tailwind; field work relies on a PWA API and images with GPS metadata.
Tech stack
PHP 7.3+/8.x · Laravel 8.83 · Livewire 2.10 · Laravel Cashier 13.16 · Stripe PHP · Backpack CRUD · Alpine.js 3 · Tailwind CSS 3 · Laravel Mix 6 · Sass · jQuery. Multi-language (mcamara/laravel-localization) · Spatie Translatable / Newsletter (Mailchimp).
Snappy/wkhtmltopdf · Maatwebsite Excel · Simple QRcode · Short URLs · Redis (Predis) · AWS S3 · CloudWatch · Elastic Beanstalk · CodePipeline · Docker · SparkPost · Invisible reCAPTCHA · wire-elements/modal · Imagick.
My contribution
At Apadrina un Olivo I worked on developing and maintaining the platform: adoption/payment/gift flows, the sponsor area, the operations admin, Stripe/Mailchimp integrations, the field API/PWA, invoicing/certificates and AWS deployment.