Devlog #1 — shipping this without a VPS budget
ok so i will be honest about how this project actually felt to build, because if i write the clean “i learned so much” version nobody will believe it, so anyways lets move on ;)
Basciallyy, i started Project AP-I because managing short form content for three niches (memes, anime, sports) was eating my brain at very very fast rate.
Every day was the same monotonous loop: find an approved clip, download it, slap a watermark, write a caption, open youtube studio, open instagram, upload twice, pray nothing asks for 2fa. doing that by hand for multiple accounts is how you lose a whole evening and still miss one niche. i wanted a queue. drop the link once, pick the niche, walk away.
sounds simple, but fr it was nott 😭 +_=
the money problem / why everything runs on my laptop
my first instinct was “just rent a VPS, put chrome + playwright there, done.” then i looked at prices for a box that can actually run headed chrome without dying, plus storage for temp video, plus sitting there 24/7. for a student project that was a hard no. so i compromised.
So the architecture became weird on purpose:
- vercel = public submit form + admin UI (free, fine for that)
- supabase = source of truth for jobs / accounts / audit logs
- my trusty windows laptop = native worker with real chrome profiles + ffmpeg + yt-dlp
- docker n8n on the same laptop = cron that claims jobs and calls the worker
so the so called “cloud” part is mostly the website in my project sadly =_=. the actual factory is under my desk. if my pc sleeps, the queue sleeps. that sucks. but it meant i could ship real uploads without burning money i don’t have. i’d rather have an ugly local stack that works than a pretty architecture diagram and empty wallet :)
playwright almost made me quit
ngl browser automation for youtube studio + instagram is genuinely mean. docs make it look like page.click('#upload') and you’re done.
lemme give u a look at reality:-
-youtube throws a red banner that says turn on 2-step verification while you’re fully logged in, and my detector treated that like a login wall. i watched chrome sitting there logged in, create button visible, video already published… and the job still flipped to login_required. i wanted to throw the laptop.
- sometimes it does publish, then fails because it couldn’t scrape the
youtu.belink from the share dialog. so the video is live on the channel and the database says failed. truly was a nightmare for me. - instagram will hang mid-upload. worker restarts. job stuck in
uploadingforever. claim logic sees “someone is uploading” and refuses to take the next job. whole pipeline frozen for like an hour while five videos sit in queued doing nothing. i stared at the dashboard thinking n8n died. n8n was fine. one ghost job was holding the me at the edge of Cyberpsychosis (anime reference :D)
every “one more small fix” turned into another edge case. captcha? stop and mark login_required. real verify-it’s-you interstitial? same. security upsell notification? ignore it or you false-positive yourself into a corner =_=
i had to rewrite the challenge detector like three times until it stopped panicking at youtube’s “your account is at greater risk” banner.
and that was just the browser drama.
Since I have reached the charcter limit I will continue in next devpost.
Comments 2
Wow dude, thats awesome, hope your project goes well!
Thank you so much bro :), I wrote a devlog yesterday but it got trashed due to hiting character limit, will post new update today for sure :D
Sign in to join the conversation.