A client-side tool for autodidacts who value consistency over gamification.
Problem: Modern learning apps are Skinner boxes. They use notifications, streak-freezes, social leaderboards, and "bells and whistles" to keep you hooked on the app, not the learning. They are noisy distractions disguised as productivity tools.
Solution: FocusFlow is a digital mirror. It is silent, private, and requires zero permissions. It exists solely to reflect your effort back to you. If you forget to check in, nothing breaks—except your streak. That is the point.
| Aspect | Typical "Habit" Apps | FocusFlow |
|---|---|---|
| Onboarding | Email, Password, Credit Card, 10 Tutorials | Open File. Type Goal. Done. |
| Data | Locked on a proprietary server | Stored in your browser (LocalStorage) |
| Privacy | Tracked for ad targeting | Zero tracking. Zero analytics. |
| Motivation | Push notifications and guilt | Visual satisfaction & self-discipline |
| Connectivity | Requires Internet | Works offline completely |
- Download: Save the
index.htmlfile to your computer. - Open: Double-click the file to open it in your browser.
- Input: Type your goal (e.g., "Learn Rust").
- Act: Click the circle next to your goal for today.
- Result: Your streak begins.
That’s it. No setup, no sign-up, no sync delays.
FocusFlow merges Basic, Enhanced, and Advanced tracking paradigms into a single, unified interface.
| Feature | Description | Tech |
|---|---|---|
| Multi-Goal Tracking | Track different skills (Languages, Coding, Music) simultaneously. | Vanilla JS State Management |
| SVG Calendar & Heatmap | Visualize consistency using a crisp, zoomable SVG interface. No pixelation. | Dynamic DOM Generation |
| Premium Themes | 7 built-in, developer-centric themes (Indigo, Midnight, Graphite, etc.). | CSS Variables |
| Zen Mode | Hides all stats and numbers. Just you and the habit. | CSS Toggles |
| Data Sovereignty | Full Backup (Export JSON) and Restore (Import JSON) capabilities. | FileReader / Blob APIs |
| Offline Ready | Once loaded, it requires no internet connection. | PWA-friendly Structure |
FocusFlow adheres to a strict Client-Side Only architecture. There is no backend logic, database, or external API calls.
graph TD
User[User Interaction] -->|Clicks/Types| DOM[DOM Layer]
DOM -->|Event Listener| Logic[Logic Module]
Logic -->|Calculates Streaks| Utils[Utility Functions]
Logic -->|Updates| State[State Object]
State -->|Stringify| LocalStorage[Browser LocalStorage]
State -->|Render| UI[UI Controller]
UI -->|Updates| DOM
style State fill:#f9f,stroke:#333,stroke-width:2px
style LocalStorage fill:#ff9,stroke:#333,stroke-width:2px
The codebase is modularized using the IIFE (Immediately Invoked Function Expression) pattern to prevent global namespace pollution:
Store: HandleslocalStorageserialization/deserialization.Logic: Pure functions for date math and array manipulation.Utils: Helper functions for formatting dates and generating IDs.UI: Handles DOM manipulation, event binding, and theme switching.
Simply visit the hosted GitHub Pages link:
- Download the repository as a ZIP.
- Extract
index.html. - Drag and drop into your browser.
- Tip: You can host this file on Dropbox, Google Drive, or a private server and access it from anywhere.
If you are a developer, fork the repo to add custom metrics or themes.
git clone https://github.com/Aliriyaj007/FocusFlow.git
cd FocusFlow
# Open index.html in your preferred editor (VS Code, Sublime, etc.)FocusFlow is designed to be hacked. You can easily modify the const themes array in the script section to add your own color palettes.
To change the default language or date format:
Edit the Utils.formatDate function in the source code.
Contributions are welcome, but keep the philosophy in mind:
- No Dependencies: Do not add npm packages, webpack, or build steps.
- No AI: Do not add AI features.
- Single File: New features should fit within the single-file architecture.
Workflow:
- Fork the project.
- Create your feature branch (
git checkout -b feature/AmazingFeature). - Commit your changes (
git commit -m 'Add some AmazingFeature'). - Push to the branch (
git push origin feature/AmazingFeature). - Open a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
Riyajul Ali
- GitHub: Aliriyaj007
- Email: aliriyaj007@protonmail.com
- LinkedIn: linkedin.com/in/Aliriyaj007
- Web App: https://aliriyaj007.github.io/FocusFlow/