Duepalleggi
Full-Stack Developer
Duepalleggi is an established platform for booking sports facilities, with tools for both individual players and the clubs that run the venues. I worked on it as a full-stack developer, building a complete newsletter system and hardening security across bookings and payments.
Laravel 5.2, PHP, AngularJS, Stripe, MySQL
Overview
Duepalleggi is a platform for booking sports facilities, with tools for both individual players and the sports clubs (società sportive) that run the venues. Players reserve courts and time slots; clubs manage availability, members, billing, and payments.
My Role
Full-stack developer on an established product. I owned a newsletter system and a round of security hardening across the booking and payment flows.
What I Built
- A complete newsletter system: clubs compose and send newsletters to members, with GDPR consent, recipient filtering, a test mode, and a send history
- Reliable, observable batch sending so large sends don’t fail or double-send
- Security hardening across bookings and payments (club-ownership checks, credit-pay restrictions)
- A series of booking-flow fixes: time-slot selection, the mobile booking bar, and visibility rules
Outcome
Clubs gained a direct, compliant channel to their members: they can reach the right recipients, see what’s been sent, and trust that a large send won’t silently fail or go out twice. On the security side, the work closed gaps around who can act on a booking or a payment, so a club can only touch its own data, and credit operations are blocked where they don’t apply.
Under the Hood
- Newsletter: a 3-state feature-flag rollout with admin settings and send logs; async, idempotent batch sending with observability; a club-panel history page; GDPR consent, sanitized HTML, proper unsubscribe links, and a weekly send limit
- Security: enforced club ownership on booking endpoints, validated cash-movement storage and filtering, and blocked credit pay/refund on non-credit clubs
- Maintenance: Node compatibility work (pinned dependencies, regenerated lockfile) plus booking time-slot and mobile-bar fixes
- A legacy Laravel 5.2 + AngularJS application with Stripe-based payments