Skip to content

harshwardhan-kp/HistoriLens

Repository files navigation

HistoriLens

See history the way they did — not just the way you were taught.

Every historical event has more than one side. HistoriLens uses AI to surface perspectives from different countries, religions, schools of thought, and cultures — all at once, all in one place.


  

Flutter Dart Supabase Vercel License: MIT


📹 Demo

demo.mp4

  demo-credentials: user-id: mandapowar9@gmail.com password: harshw.kp@gmail.com

What it actually does

You pick a historical event — say, The French Revolution — and instead of reading one textbook version, you get 3–8 perspectives generated by AI. British Empire's take. The Church's view. A Marxist reading. An Algerian perspective.

Then you can dig deeper: bookmark the ones that surprise you, ask follow-up questions in a chat, or share a card with a friend.


Stack

Layer What
Frontend Flutter (web + iOS + Android)
Auth + DB Supabase (Auth, Postgres, RLS)
AI Groq — LLaMA 3.3 70B + DeepSeek R1 70B
Hosting Vercel
Icons Phosphor Icons

Features

  • 🌍 Multi-perspective AI — Country, Religion, School of Thought, Cultural lenses
  • 💬 Deep Dive Chat — Ask follow-up questions about any perspective (context-aware)
  • 🔖 Bookmarks — Save perspectives you want to revisit, synced via Supabase
  • 🕐 History Feed — See what you've explored in the last 7 days
  • 🔍 AI Search — Type anything, get AI-suggested historical events instantly
  • 📄 Event Detail — AI-generated overview, key players, significance, and fast facts per event
  • 🖼️ Share Cards — Export a perspective as an image and share it
  • 🌙 Dark Mode — Persisted across restarts
  • 🛫 Onboarding — Smooth 3-slide intro for new users
  • 💰 Pricing tiers — Explorer (Free) / Historian / Scholar — pricing screen ready for payment integration

Running locally

# 1. Clone
git clone https://github.com/harshwardhan-kp/HistoriLens.git
cd HistoriLens

# 2. Install deps
flutter pub get

# 3. Set up environment
cp .env.example .env
# fill in your keys (see below)

# 4. Run
flutter run

.env format

SUPABASE_URL=https://your-project.supabase.co
SUPABASE_ANON_KEY=your-anon-key
GROQ_API_KEY=your-groq-key

Get your keys:

Supabase tables

Run this once in your Supabase SQL editor:

-- Bookmarks
create table public.bookmarks (
  id uuid default gen_random_uuid() primary key,
  user_id uuid references auth.users(id) on delete cascade,
  event_title text, event_subtitle text, event_emoji text,
  perspective_label text, perspective_title text,
  perspective_content text, perspective_emoji text, perspective_type text,
  created_at timestamptz default now()
);
alter table public.bookmarks enable row level security;
create policy "own bookmarks" on public.bookmarks for all using (auth.uid() = user_id);

-- History
create table public.history (
  id uuid default gen_random_uuid() primary key,
  user_id uuid references auth.users(id) on delete cascade,
  event_title text, event_subtitle text, event_emoji text,
  explored_at timestamptz default now()
);
alter table public.history enable row level security;
create policy "own history" on public.history for all using (auth.uid() = user_id);

Deploying to Vercel

The repo includes a vercel.json. Just add these environment variables in your Vercel project settings and deploy:

SUPABASE_URL
SUPABASE_ANON_KEY
GROQ_API_KEY

The build automatically generates .env from those values — no secrets committed.


Project structure

lib/
├── core/          # Theme, router, constants
├── models/        # Data models
├── providers/     # State management (Provider)
├── services/      # Groq, Supabase auth, bookmarks, history
└── screens/
    ├── splash/
    ├── onboarding/
    ├── auth/
    ├── home/
    ├── event_detail/
    ├── perspectives/   # + deep_dive_sheet.dart
    ├── saved/
    └── pricing/

Built with curiosity. History has more sides than you think.

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors