21af7ae34937c00f9b4cc1a06b7ece6174483cd6
Three visual/structural changes: - Grid cards without a thumbnail (nearly all real courses in this library) showed the same generic graduation-cap icon, making the poster grid hard to visually scan. Replace it with a deterministic color+initial per course name (same idea as Slack/Google Photos default avatars), so cards without real cover art still look distinct from each other. - Notes/Help/Settings only existed as small footer text links, meaning a scroll to the bottom of every page to navigate. Add a persistent bottom tab bar (Home/Notes/Help/Settings, current page highlighted via a new active_tab context var) to the dashboard, Notes Hub, Settings, and Help pages. Deliberately left the lesson page alone - it already has its own fixed-bottom notes panel, and a second fixed bar there would just eat into an already content-dense page. - The no-course dashboard stacked five informational/queue cards (Library Stats, Next Up, Pick Back Up, Recently Added, Continue Watching, Recently Viewed) before "Your Courses," so the actual library browser was the last thing on the page. Move it up to right after the Surprise Me banner - it was already unconditional, so this only changes where it renders, not when. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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
🛠️ Installation
🔁 Quick Start (Local)
-
Clone the repo:
git clone https://github.com/WhiskeyCoder/OfflineU.git cd OfflineU -
Install Python dependencies:
pip install flask -
Run the app:
python offlineu_core.py --create-templates -
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:
- GitHub Issues: https://github.com/WhiskeyCoder/OfflineU/issues
🛡️ 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.
Languages
HTML
58.2%
Python
41.4%
JavaScript
0.2%
Dockerfile
0.2%
