Project notes

SpendWise: Instagram Analytics

A dashboard for keeping track of Instagram posts, hashtags, and audience reactions without collecting the numbers by hand.

My role

I built the data collection jobs, database, API, and dashboard.

Stack

Next.jsTypeScriptTailwindshadcn/uiRechartsFastAPISupabase (Postgres + Auth + RLS)OpenAI (Insights/Sentiment)Apify (Scraping)n8n (Workflow Automation)

About the project

SpendWise brings Instagram account data into a dashboard where users can compare posts, follow engagement over time, and look through audience comments. I built it with Next.js, FastAPI, and Supabase, with scheduled jobs to keep the data up to date.

How it works

  • 1Account and date filters for comparing performance over time.
  • 2Charts for engagement, follower counts, top posts, and hashtag activity.
  • 3Generated summaries that point to the posts and comments they are based on.

At a glance

  • →Brought post performance, hashtag activity, and comment sentiment into one dashboard.
  • →Scheduled data collection with n8n and Apify, including retries and duplicate checks.
  • →Used Supabase authentication and row-level security to keep each user’s analytics separate.

Why this project

Comparing posts over time means pulling together account metrics, hashtag activity, and comments. I wanted a place to see that information together and answer practical questions, like which posts got the most engagement and how people responded to them.

The approach

I stored account snapshots, post metrics, comments, mentions, and hashtag posts in Supabase. n8n schedules Apify collection jobs, handles retries, and checks for duplicates. FastAPI serves the data to charts and tables in the dashboard. I also used OpenAI to summarize sentiment and generate reports that refer back to specific posts, comments, and changes in the numbers.

Results and notes

The dashboard lets users switch accounts, choose a date range, compare engagement and follower trends, and find their top posts. Hashtag tracking and sentiment summaries sit alongside the underlying posts and comments, so users can check the examples behind a summary.

Links