rmsitzandClaude Sonnet 5 9e7dc85558 Add Resume button, Surprise Me random pick, and bulk select
Three quality-of-life additions to the Library browser and course
pages:

- A course page shows a "Resume: <lesson>" button when there's a
  last-visited lesson, using Course.last_accessed_path (already
  populated by apply_progress_to_tree, just not surfaced before) -
  no more scrolling the tree to find where you left off.

- "Surprise Me" picks a random not-yet-fully-watched course and loads
  it, for when there's too much library to decide what to watch.
  Reuses the already-cached get_all_course_dirs() and the same
  per-course completed/total shape _scan_library_activity() already
  computes for Stale Courses - no new scanning.

- A select-mode toggle in the Library browser adds checkboxes to every
  row/card (list and grid) with a bulk-action bar to hide or queue
  several courses/folders at once, via two new endpoints
  (/api/hidden-paths/bulk, /api/next-up/bulk) that reuse the existing
  single-item set_path_hidden()/set_path_queued() in a loop. Selection
  is scoped to the current folder view and clears on navigation.

Also fixes runTranscriptSearch() going silently blank on zero results
instead of showing a "no matches" message, and updates the Help page
to cover all of this.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-23 15:06:29 -04:00
2026-08-20 13:47:51 -04:00
2026-08-20 13:47:51 -04:00
2026-08-20 13:47:51 -04:00
2026-08-20 13:47:51 -04:00
2026-08-20 13:47:51 -04:00
2026-08-20 13:47:51 -04:00

OfflineU: Self-Hosted Local Course Loader & Progress Tracker

OfflineU is a sleek, self-hosted web app designed to load and view your offline video, audio, text, and quiz-based training courses. Whether it's Udemy downloads, "open sourced" training archives, or personal content, OfflineU turns your course folder into a fully navigable dashboard with automatic progress tracking.


Features

  • 📁 Dynamic folder parsing: Scans and maps your course structure into a browsable tree view.
  • 🎥 Video & Audio player: Integrated media player with resume & completion tracking.
  • 📄 Text & HTML viewer: Supports .txt, .md, .html, .pdf, and more.
  • Lesson progress tracking: Auto-saves your time spent and marks lessons as completed.
  • ♻️ Continue where you left off: Resume instantly from your last-accessed lesson.
  • 💾 Local-first & private: 100% offline. No cloud, no tracking, no nonsense.
  • 🧑‍💻 Works with any course format: No metadata required, just structured folders.
  • 🧠 Ideal for hoarders, students, or offline learning setups

🗈️ Screenshots

image


🛠️ Installation

🔁 Quick Start (Local)

  1. Clone the repo:

    git clone https://github.com/WhiskeyCoder/OfflineU.git
    cd OfflineU
    
  2. Install Python dependencies:

    pip install flask
    
  3. Run the app:

    python offlineu_core.py --create-templates
    
  4. Open your browser:

    http://127.0.0.1:5000
    

📂 Folder Structure Example

MyCourse/
├── Section 1/
│   ├── 01 - Intro.mp4
│   ├── 02 - Setup Guide.pdf
│   └── 03 - Quiz.html
├── Section 2/
│   ├── 04 - Advanced Tips.mp4
│   └── resources/
│       └── extras.md
└── .offlineu_progress.json  ← created automatically

🌟 File types are detected automatically — videos, audio, quizzes, and docs.


📁 Supported File Types

Type Extensions
Videos .mp4, .mkv, .webm, .mov, .avi, etc.
Audio .mp3, .wav, .aac, etc.
Docs .txt, .md, .html, .pdf, .docx
Subtitles .srt, .vtt
Quizzes Detected if file name contains quiz, exam, test, etc.

⚙️ CLI Options

Option Description
--host Set host (default: 127.0.0.1)
--port Set port (default: 5000)
--debug Enable Flask debug mode
--create-templates Generate default HTML templates
<course_path> Load course directly at startup

🧠 Roadmap

  • Base function and testing
  • Multi-user profile support
  • Dark/light theme switcher
  • Built-in quiz interactivity
  • Import/export course metadata
  • Mobile app wrapper
  • Self hosted Docker Deployment

💬 Community

Join the development, suggest features, or ask questions via:


🛡️ License

MIT License — Use freely, modify locally, share widely.


Author

Built with ❤️ by @WhiskeyCoder Inspired by the dream of learning freely, offline, and without limits.

S
Description
My version of offlineu
Readme MIT
1.1 MiB
Languages
HTML 58.2%
Python 41.4%
JavaScript 0.2%
Dockerfile 0.2%