TL;DR Built a complete ephemeral file-sharing service in one week as a personal MVP challenge. PoofLink enables anonymous file sharing with automatic expiration - files simply “poof” and disappear after their time-to-live expires. The project demonstrates end-to-end product development from concept to deployed production service.

I wanted to challenge myself to see how quickly I could build and deploy a complete MVP for a product idea I had been thinking about. The concept was simple but practical: an ephemeral file-sharing service where files automatically disappear after a set time, no accounts needed, no cleanup required. Just upload, share the link, and let the system handle the rest.

PoofLink upload screen

PoofLink share link screen

PoofLink download screen

I built PoofLink as a microservices architecture with React/TypeScript frontend and FastAPI backend, all containerized with Docker. The interesting technical challenge was implementing a reliable TTL-based deletion system that wouldn’t lose track of files even during system restarts or crashes. Rather than relying on S3’s lifecycle policies, I designed a PostgreSQL-driven architecture where the database serves as the single source of truth for file expiration. A background worker periodically queries for expired files and orchestrates the deletion from both S3 and the database, ensuring consistency even in edge cases.

The system handles file uploads up to 5MB with three TTL options (2 hours, 7 days, or 30 days), implements IP-based rate limiting to prevent abuse, and uses token-based URLs with 128-bit entropy for security. Everything is orchestrated through Docker Compose with Traefik handling TLS termination and routing between the frontend, API, and worker services. The entire stack - from the Mantine UI components to the SQLAlchemy models to the S3 integration - was implemented in about a week, proving that with the right architecture and modern tools, you can move from idea to production remarkably fast.

PoofLink was live at pooflink.com for several months, serving real users and validating the concept. The service has since been sunset, as the project fulfilled its purpose as an MVP exploration and the ongoing infrastructure costs were no longer justified without a clear path to monetization. Nonetheless, it showcases the complete product development cycle: from initial concept through architecture design, implementation, deployment, and eventual decommissioning.