Portfolio
Insta Manage: Organising My Instagram Media
24 September 2026 · 2 min read · Desmond Yap Jia Chun
Insta Manage is a single-user web app I built to download and organise media from my own Instagram account and from accounts I am authorised to access. It keeps posts, carousels, reels and stories in original quality, together with their captions and metadata.
Built to play by the rules
From day one I set clear limits: no CAPTCHA or 2FA bypass, no getting around private accounts and no rate-limit evasion. To connect Instagram, the app opens a real browser window on Instagram's own login page. You sign in there yourself, and the app only reads the session cookies afterwards. It never sees your password, and the saved session is encrypted at rest.
What it does
- Accounts: add a username and its profile (avatar, bio, follower and post counts) is fetched straight away.
- Background downloads: sync a profile or download posts, reels, stories or your own story archive. Each job runs in the background and shows its progress live.
- Browse & Select: fetch the list first, without downloading anything, then pick single items, shift-click a range or choose "Select new". Already downloaded items are marked Saved.
- Media Library: tabs for All, Posts, Reels, Stories and Archive, each with a live count, plus year filters based on when the content was posted.
- Jobs log: a running history of every background job.
- Android app: a Capacitor wrapper that loads the same app from my PC over the local network.
Security of the app itself
The back office has its own login with a bcrypt-hashed password. Every API route and the downloaded files sit behind a signed, httpOnly session cookie, and five failed logins trigger a 60-second lockout.
Tech stack
FastAPI, SQLAlchemy and MySQL with Alembic migrations · Instaloader and Playwright · Celery and Redis for background jobs · React (Vite) and Bootstrap · Capacitor for Android.
The hardest part was the story archive. Instagram has no public endpoint for it, so the app drives a real browser with the saved session. It is also the most fragile feature, because an Instagram redesign can break it.