
Prodgineering — Chris Cosentino's Vibe Coding Portfolio
$ Product leader. Vibe coding fun (and useful) things.
> apps/
I'm Chris, a product leader who likes to build. This site is where I park my side projects - fun and hopefully useful apps that give me a chance to vibe code ideas into reality.

Every Day A Painting
everydayapainting.com
- A daily dose of art history. One painting from a curated set from the National Gallery of Art is featured daily and shared via email each morning to subscribers. The site includes a live painting preview, a zoomable full-detail artwork view with a gold-frame museum aesthetic, and a browsable archive of every painting sent to date.
- Built on Lovable with Supabase back-end, the data source is the NGA's open data project - an open database of their collection. A subset of that was curated into this app's database. Each night an automated job selects a random painting from the collection; each morning another sends the daily email to all subscribers.
visit →

Movies To Do
moviestodo.com
- A social movie list platform built around the idea of treating your watchlist like a to-do list. Users build watchlists, set default ordering, and browse their watchlists by director, genre, and more — and can share lists with friends to collaborate. Built as an alternative to Letterboxd's basic watchlist.
- Built with Lovable + Claude - a React frontend with Supabase/PostgreSQL on the backend, powered primarily by the TMDB API (combining endpoints to enrich data around movies and individuals).
visit →

OscarBase
oscarbase.com
- A comprehensive API and explorable archive covering every Academy Awards ceremony from 1929 to present. It serves clean, structured data on nominations, ceremonies, films, nominees, categories, and songs across a ~16,000-record dataset, with polished documentation that makes Oscar history easy to query and explore.
- A Next.js API layer deployed on Vercel backed by a Supabase/PostgreSQL database modeled around a central denormalized nominations table joined to dimension tables for ceremonies, movies, people, categories, and songs. The data was built via Claude-created Python scripts pulling from the Academy Awards database, Wikipedia, TMDB (films and people) and Spotify (songs) APIs, with server-side SQL functions handling aggregations across the full dataset. The API offers public read endpoints with pagination, range and multi-ID filtering, and search, plus key-protected write endpoints for data management.
visit →

Picklet
picklet.tv
- A subscription web app that gives parents full control over their kids' YouTube experience. Parents approve exactly which channels each child can access, and kids see a clean, distraction-free player with just those channels in chronological order. No recommendations, no comments, no rabbit holes.
- Built with Lovable with help from Claude - React, Supabase, and the YouTube API; handles multi-child profiles, Stripe subscriptions, and Google auth, with all YouTube integration via Supabase edge functions.
visit →

ReelGames
reelgames.app
- A hub for simple daily movie-themed games. Currently I have two live: "Tuzzle" (a daily Wordle style puzzle where you guess a movie title with some helpful hints) and "Title Shot" where you guess a movie based on a short plot synopsis.
- Built on Lovable with React backed by Supabase (Postgres + Edge Functions). I worked with TMDB API to curate specific databases of movies for both games. For Title Shot specifically, I ran these movies through Claude's API to write the short prompts.
visit →

Roast Cam
roast.cam
- A lighthearted AI-powered fashion critique web app where users upload a photo or capture one via webcam and choose to get their outfit "roasted," "ruined," or "hyped" by an AI. Users can save their roast history, share generated screenshots via short links, and manage their account — all wrapped in a sleek dark-themed UI.
- Built with Lovable with Supabase powering authentication, a PostgreSQL database, and file storage. AI roast generation runs through a custom Supabase Edge Function that accepts a base64 image and calls OpenAI's vision model with the relevant prompt for a roast, ruin, or hype.
visit →