PostMinder
An Instagram scheduler built end to end — and an early lesson that “publish at exactly 9:00” is really a queue problem, and “update the screen instantly” is really a database-events problem.
Vue 3ExpressBullMQPostgreSQLSocket.IO
15+
REST endpoints
5
Compose services
4
Publish steps
What I built
Built the platform end to end: a Vue 3 + Vuetify frontend, two Express services exposing 15+ REST endpoints over HTTPS, PostgreSQL, and five Docker Compose services, secured with JWT auth (10-minute access and 1-day refresh tokens, bcrypt, httpOnly cookies).
Treated on-time publishing as a queue problem: BullMQ jobs on Redis fire at the scheduled moment and walk the Facebook Graph API's four-step publish flow, with images staged on Cloudinary and cleaned up after posting.
Made the UI update without polling: PostgreSQL triggers emit LISTEN/NOTIFY events the backend relays over Socket.IO, so the scheduled-posts list changes the moment the data does, and reschedules swap the queued job atomically.