Sin Rollo by Horacio OntiverosSin Rollo by Horacio Ontiveros

Sin Rollo

Horacio Ontiveros

Horacio Ontiveros

Sin Rollo

2026
Photo delivery & automated portfolio SaaS: private access-code galleries, client curation, automatic SEO publishing, and Stripe monetization.

The Problem

Professional photographers operate with a fragmented workflow: one tool to deliver high-res client galleries, another to track client selections, and a completely separate CMS to update their public portfolio. This disconnect costs them hours of manual data entry and asset management per photoshoot.

The Solution

Architected and developed a centralized, subscription-based SaaS platform that unifies client delivery with portfolio generation. The system allows photographers to securely share galleries via access codes, lets clients curate their favorite shots, and automatically publishes approved images to an SEO-optimized public portfolio.

High-Performance Media Pipeline

Engineered an automated asset pipeline using Python/FastAPI. When a photographer uploads a raw, high-res image, the backend intercepts it, processes a lightweight .webp preview via Pillow, and uploads both the original and the optimized preview to Google Cloud Storage. To protect intellectual property, all image access is gated behind dynamically generated Signed URLs with strict expirations.

Concurrent Bulk Uploader (Vue 3)

To handle hundreds of multi-megabyte files without crashing the browser, I developed a custom Vue 3 upload component (GCSUploader.vue) that processes files in concurrent batches of three. It provides real-time, per-file progress tracking and instantly catches backend quota-exceeded errors (HTTP 403) to trigger premium upsell modals.

SaaS Monetization & Stripe Webhooks

Implemented a fully functional subscription engine using Stripe Webhooks: the backend listens for checkout.session.completed events to automatically upgrade users to the PRO tier. Complex business logic enforces database quotas (Free tier: 3 galleries vs. PRO: 50 galleries) and time-based access revocations.

Dark Mode UI & Dynamic Portfolios

Built an intuitive, Adobe-inspired dark mode interface using Tailwind CSS. Dynamic public portfolios feature JSON-LD schema generation for SEO and reactive lightbox galleries with keyboard navigation.

Unit Economics

Production-ready application with PostgreSQL Row-Level Security (RLS). The platform is architected to operate at a 90%+ profit margin on its subscription tiers: fractional-cent media hosting on Google Cloud Storage and serverless frontend deployments keep infrastructure costs practically at zero, capturing maximum revenue until hitting massive scale.
System Architecture Diagram · Click to zoom

Tech Stack

Vue 3 TypeScript Tailwind CSS FastAPI PostgreSQL Supabase Stripe Google Cloud Storage Cloud Run
Like this project

Posted Jun 8, 2026

Photo delivery SaaS with galleries, curation, SEO and monetization for photographers.