Alin Cristea

Senior Frontend Developer

Back to projects
PersonalArchived2025-2026

Devuélvelo

A shipped consumer SaaS that calculated return deadlines, organized proof of purchase and surfaced reminders before windows expired.

Role

Founder & Full Stack Developer

Status

Archived

Period

2025-2026

Next.jsTypeScriptTailwind CSSSupabaseVercel
Devuélvelo project visual

The product

Devuélvelo is a focused consumer utility: enter a purchase once, get the deadline immediately and keep the record organized until the return window closes.

Problem

Shoppers often forget return deadlines because purchase dates, retailer policies and ticket links are scattered across different places.

Solution

Devuélvelo centralizes purchase data, calculates the return deadline from what the user bought and where they bought it, stores ticket links and surfaces clear status alerts.

Product in context

Launch assets preserved from the original product repositories.

Devuélvelo launch preview showing the return-deadline product interface
The launch preview framed the product around one clear job: knowing when a return window ends.

Core capabilities

What reached the implemented product, based on the archived codebase.

  • Calculated deadlines for major Spanish retailers such as Zara, Amazon, El Corte Inglés and Decathlon.
  • Kept purchase records, ticket attachments and calendar events in one place.
  • Surfaced active, returned, expired and archived states with deadline-oriented UI.
  • Added a public calculator so a return date could be checked without creating an account.

Technical decisions

  • Kept return-date calculation available as a public utility while reserving persistent tracking for authenticated accounts.
  • Represented retailers as data with default return windows, while allowing user-owned store records for exceptions.
  • Generated calendar feeds from revocable tokens so deadlines could appear outside the application.
  • Stored ticket files in a private bucket and generated short-lived signed download URLs on demand.

Architecture

A compact view of how the shipped system was divided.

Next.js App Router combined public Server Components, authenticated screens, route handlers and attachment Server Actions.

Supabase provided Auth, PostgreSQL, row-level security and private ticket Storage.

Stripe synchronized products, prices, customers and subscriptions through a webhook.

A Vercel cron selected queued notifications and Resend delivered reminder email.

How I built it

My contribution

  • Product direction, Spanish-language UX and responsive landing/dashboard surfaces.
  • Return calculator, purchase lifecycle, retailer search and calendar integration.
  • Supabase schema/RLS, private attachments, authentication and API layer.
  • Stripe billing, Resend notifications, cron processing and Vercel deployment configuration.

Technical challenges

  • Keeping calculated deadlines correct across retailer defaults, custom stores and manually selected dates.
  • Making private ticket uploads useful without exposing permanent public file URLs.
  • Coordinating reminder scheduling, cancellation and delivery state as purchases changed.

Outcome

The product was archived after it did not achieve sufficient adoption. The case study keeps the technical and product lessons visible without presenting the service as active.

What I learned

Technical and product lessons carried into later work.

  • A focused utility can communicate value quickly, but retention depends on a recurring behavior users already perform.
  • Reminder products need explicit ownership of time zones, retries and cancellation states from the start.
  • Private user files increase shutdown and data-retention responsibilities well beyond a simple database export.