PixEarn
A creator marketplace for digital art and wallpapers that I designed, built, and ran solo, growing it to 2,200+ creators, 6,000+ artworks, and 15k+ monthly active users before it closed in Aug 2026.
- 2,200+Registered creators
- 6,000+Artworks
- 15k+Monthly active users
- 6MImage impressions
- 2.5M+API requests / month
- ~$38Infra cost / month
Independently designed, built, and operated PixEarn, a creator marketplace for digital art and wallpapers. It grew to 2,200+ registered creators, 6,000+ artworks, 15k+ monthly active users, and 6M image impressions, and ran until August 2026.
Every image view was logged as an impression for creator analytics and earnings, so a solo-run platform had to absorb high-concurrency write traffic, keep each creator's data isolated, and stay cheap enough to run on a tiny budget.
Edge-optimized SSR, PostgreSQL row-level security with indexes tuned to the real query paths, and a Sharp image pipeline that cut storage costs by 40%. Creator payment workflows, a no-cut Support Me button, and fraud detection using visitor fingerprints and IP signals made earnings trustworthy. The whole platform ran on about $38/month of infrastructure.
PostgreSQL row-level security for tenant isolation
WhyHigh-concurrency creator/viewer traffic needed per-creator data isolation enforced consistently.
ApproachPostgreSQL RLS policies enforce row-level access control alongside custom indexing for the analytics query paths.
Outcome1.2M+ monthly queries at <150ms avg response.
Sharp-driven image pipeline for storage cost
WhyStorage costs scaled directly with creator uploads.
ApproachA Sharp-based image processing pipeline handles uploads before they hit storage.
Outcome40% reduction in storage costs.
Fraud detection for view-based earnings
WhyCreators earned from views, so view counts had to hold up against inflated traffic.
ApproachFraud detection scored traffic using visitor fingerprints and IP-based signals.
Sargable predicate + CREATE INDEX CONCURRENTLY on a hot table
Whylog_impression threw 57014 statement timeouts at 1.4M calls a day on a ~5.9M-row table that already had a matching index.
ApproachRewrote the predicate so created_at stayed bare and usable as an index bound, built indexes with CREATE INDEX CONCURRENTLY by hand (the migration tool wraps everything in a transaction) and mirrored them with an IF NOT EXISTS migration, then capped the client retry loop at 40 ids per flush and 3 retries.
TradeoffCONCURRENTLY builds slower and can leave an invalid index if it fails partway, and the hand-run step sits outside the normal migration flow.
OutcomeTimeouts resolved. Full write-up in the related article.
- Apr 2026View post
One creator's Story drove 5,400 views in a day
A single Instagram Story from a creator with 5.6K followers sent daily views to 5,400, up 773.8% on the comparison day. By then 100+ creators had pixearn.com in their bio, and the library held 3K+ wallpapers in up to 8K resolution.
- Apr 2026View post
Notification service: 4 months untouched, zero failures
The notification system, built with Express, Supabase, and Resend, ran for four months without a code change, an error, or a failed send.
- May 2026View post
Shipped the Support Me button
Creators could add PayPal, UPI, Paytm, or any custom link to their profile and get paid directly by their audience, with no platform cut and no hidden fees.
- May 2026View post
4.1M image impressions, 12K+ MAU, 52K+ downloads
Team of one, working from a bedroom, $0 in funding. The impressions table had just passed 4.1M rows.

- Jun 2026View post
AdSense approved on the 25th application
After 24 rejections over a year, the 25th application was approved and view-based earnings came back for creators.
- Aug 2026View post
Statement timeouts on a 5.9M-row table
log_impression started throwing Postgres 57014 timeouts even though the table had the right index. Fixed the predicate, built indexes with CREATE INDEX CONCURRENTLY, and capped a retry loop that kept requeuing failed batches.
- Aug 2026
PixEarn closed
Shut down after running it solo, with 2,200+ creators, 6,000+ artworks, and 6M image impressions.
- →2.5M+ API requests and 1.2M+ database queries per month
- →97%+ request success rate at sub-150ms latency
- →~$38/month total infrastructure cost
- →Creator payment workflows and a no-cut Support Me button
- →Fraud detection using visitor fingerprints and IP-based signals
- →98+ Lighthouse performance score
I Had the Index. My Query Was Still Timing Out.
A Postgres RPC with the exact right index still threw 57014 statement timeouts at 1.4M calls a day. The index was fine — the predicate wrapped the column in arithmetic and made it unusable.