Skip to content

StudyFlow is a Chrome extension that lets you highlight text and create notes directly on any webpage, with everything saved and restored automatically when you revisit the page. I built this project to solve a personal study workflow problem and to learn Chrome extension development and more about complex system design.

Notifications You must be signed in to change notification settings

guts-718/studyflow-extension

Repository files navigation

StudyFlow

Sticky notes for the entire internet.
StudyFlow is a Chrome extension that lets you highlight text and create notes directly on any webpage, and then automatically brings everything back when you revisit that page.

I’ve always felt the need for something like this, especially during my college exams and while doing coding contests (LeetCode / Codeforces / CodeChef).
I studied from blogs, docs, PDFs, GFG, different sites, even ChatGPT and other LLMs - and I kept running into two annoying problems:

  • I highlighted important lines, but later forgot where they were.
  • I wrote notes, but they got scattered across apps, files, and tabs.

I just wanted one simple place where my highlights and notes live together - tied to the exact page I studied from.

So I built StudyFlow.

This is the first version of the project. I’ve tested it as best as I could, but since I’m building this alone, there might still be edge cases. If you find any bug or weird behavior, please open an issue or reach out - I’d genuinely appreciate it.


What You Can Do With StudyFlow

  • Highlight important lines on any webpage
  • Choose highlight color (Red / Orange / Yellow)
  • Create notes linked to the same page
  • Group highlights and notes inside files (subjects / topics)
  • Automatically restore highlights when you revisit a page
  • See everything inside a dedicated Notes UI
  • Search inside the Notes Index
  • Export notes + highlights as Markdown
    • Export everything at once
    • Or export file wise
  • Open original source link from any item
  • Store data locally and optionally sync to cloud
  • Works great with ChatGPT, LeetCode, blogs, docs, and tutorials

Example Use Cases

  • Mark formulas while reading OS / DBMS / CN blogs
  • Highlight tricky explanations on GeeksForGeeks
  • Save ChatGPT generated formulas or approaches (especially useful during exams)
  • Store CP problem observations.
  • Mark constraints and corner cases in problem statements
  • Save interview preparation notes
  • Revise highlights quickly before exams
  • Keep subject wise files (OS, DBMS, CN, DSA, etc.)
  • Highlight important paragraphs in research blogs
  • Save definitions from Wikipedia
  • Keep theory + practical examples together
  • Create quick revision sheets
  • Keep notes per chapter
  • Study from multiple sites without losing context

Screenshots

  1. Highlight on a webpage + color picker near text
    Highlighting

  2. Popup note editor
    Popup Note

  3. Notes Index Page
    Notes Index

  4. File Page
    File Page

  5. Item Page
    Item Page

  6. ChatGPT example
    ChatGPT Example

  7. LeetCode example
    LeetCode

  8. Codeforces example
    Codeforces

  9. Expanded Index Page + filter
    Index Page

  10. Exported notes (Markdown)
    Exported Notes


Important Reality Check (Please Read)

This project may look simple on the surface, but handling reliable text highlighting across arbitrary webpages is surprisingly tricky.

Because of this:

  • On some websites, highlights may not appear correctly
  • On some pages, only certain sections may fail
  • However, notes are always saved correctly

Even if a highlight fails to show on the page:

➡️ The note and metadata are still stored
➡️ You can always view and download them from Notes / Index / File pages

So think of it this way:

  • Notes system = reliable
  • Highlight rendering = will improve over time

I’m actively working on making highlighting more robust in future versions.


Offline First

  • Everything works without backend and cloud
  • Internet is only needed if you want cloud sync

Your data lives in IndexedDB locally.


How It Works (High Level)

  • Content script captures selected text
  • Highlights & notes are stored in IndexedDB
  • Items are grouped by (file + page URL)
  • Background service worker handles syncing
  • Backend stores user data in MongoDB
  • Auth uses JWT (access token + refresh token)
  • On login, cloud data is pulled into IndexedDB and cloud gets synced too.

Local DB = fast cache
Cloud DB = long-term persistence


Tech Stack

Frontend (Extension UI):

  • Vanilla JS
  • React (Notes UI)
  • TailwindCSS

Extension:

  • Chrome Manifest V3
  • Content Scripts
  • Background Service Worker

Backend:

  • Node.js
  • Express
  • MongoDB
  • JWT Auth

Setup Is Simple (Really)

You mainly need a MongoDB URI.
That’s it.

  • Want only local usage → skip backend completely
  • Want persistence + cloud backup → add Mongo URI

Running backend once every few days is usually enough for syncing.

Getting a Mongo URI from MongoDB Atlas usually takes ~2 minutes.


Installation (Developer Mode)

  1. Clone the repo
git clone https://github.com/guts-718/studyflow-extension.git
  1. Install backend dependencies
cd backend
npm install
  1. Create .env in backend (similar to .env.sample)
MONGO_URI=your_mongodb_uri
JWT_SECRET=any_secret
PORT=4109
  1. Start backend
npm run start
  1. Build UI
cd ui
npm install
npm run start
  1. Load extension
  • Open Chrome
  • Go to chrome://extensions
  • Enable Developer Mode
  • Click Load unpacked
  • Select the extension root folder

Using The Extension

  1. Open any webpage
  2. Select text
  3. Click a color
  4. Choose file (first time only)
  5. Open popup to write notes
  6. Click “All Notes” to browse everything

Cloud Sync (Optional but Recommended)

  • Backend must be running:
npm run start

How sync works:

  • While backend is running → extension syncs
  • You don’t need backend 24/7
  • Even if you run backend once every few days, your data will sync

If backend is not running:

  • Everything still works locally

Privacy

  • Your MongoDB URI is your own
  • Backend runs on your system
  • Tokens stored locally
  • I collect nothing
  • No analytics
  • No tracking

Project Status

v0.1

  • Core functionality works
  • Some edge cases exist
  • Highlighting reliability improvement planned
  • UI improvements planned
  • Export as PDF planned

FAQ

Q: Do I need a real email to sign up?
No. Any username/email like string works.

Q: Does this work offline?
Yes. Fully offline first.

Q: Does this work on Firefox?
Not yet. Chrome only for now. Firefox support planned later.

Q: Is my data safe?
Yes. Your MongoDB URI is yours, backend runs locally, nothing is sent to me.

Q: Can I use this without backend?
Yes. Backend is only for sync/persistence.


Why I Built This

During my exams, I struggled with:

  • Scattered notes
  • Forgotten highlights
  • Re reading long pages
  • Losing ChatGPT explanations

Instead of switching between tools, I wanted everything in one place.

StudyFlow is my attempt to solve that problem.


Contributing

Bug reports and suggestions are welcome.
PRs are welcome too.

Great project to explore if you're interested in Chrome extensions, web dev, or system design ideas.


Contact

If you face any issue or have suggestions, feel free to reach out:

  • Telegram: @cooked_i_am
  • Or Reddit

Final Note

If this helps you even a little in your studies, that’s a big win for me.

Consider giving the repo a star ⭐ if you genuinely found it useful


About

StudyFlow is a Chrome extension that lets you highlight text and create notes directly on any webpage, with everything saved and restored automatically when you revisit the page. I built this project to solve a personal study workflow problem and to learn Chrome extension development and more about complex system design.

Resources

Stars

Watchers

Forks

Packages

No packages published