react-hook-form for the publication forms
Adoption and lost-pet forms are long. Uncontrolled fields with schema validation kept them fast and consistent across views.
Instead of: Hand-rolled controlled state per field


→ CONTEXT: Volunteer, community-driven non-profit project based in Mendoza, Argentina (2023–2024)
Stray dogs in Argentina have very low adoption visibility — shelters rely on fragmented social media posts.
A React, Vite and TypeScript frontend with CSS Modules and react-hook-form, backed by a Node/Express API in TypeScript with MongoDB (Mongoose), Cloudinary for pet photos and Brevo for email. Shelters and individuals publish dogs for adoption and lost-and-found reports with location, photos, search filters and status tracking. The team also explored a parallel .NET API.
A centralized adoption platform that replaced fragmented social media posts with a unified, accessible space for shelters and individuals — bringing more dogs closer to a home.
Adoption and lost-pet forms are long. Uncontrolled fields with schema validation kept them fast and consistent across views.
Instead of: Hand-rolled controlled state per field
Uploads, resizing and delivery are handled by the service, so the API never stores or processes images.
Instead of: Storing uploads on the server
Scoped styles let ten contributors work on views in parallel without a shared design-token setup.
Instead of: Tailwind CSS
Led the frontend implementation of the platform's core views and user flows
Developed shelter-related views to improve visibility for organizations and their available dogs
Debugged and refined existing frontend behavior to improve stability and consistency