Habit Maker is a local-first web app that combines a daily habit tracker with a personal PDF workspace. You can plan routines, track progress, upload books, create page bookmarks, and generate optional AI summaries.
No backend. No account. Your data stays in your browser.
- Project Presentation (EN)
- Features (EN)
- Quick Start (EN)
- Tutorials (EN)
- Storage, Privacy, and Limits (EN)
- Auto Sync Script (EN)
- Troubleshooting (EN)
- Tech Stack and Compatibility (EN)
- Project Presentation (HY)
- Guides and Tutorials (HY)
- Project Structure
- Contributing, Security, Conduct, License
Habit Maker is built for people who want one focused workspace for both routine tracking and reading workflow.
What this project solves:
- Keeps habit planning and execution in one monthly dashboard.
- Keeps reading notes and PDF bookmarks in the same app.
- Adds optional AI-assisted summaries for faster review of long documents.
- Preserves privacy with local-only storage by default.
Who it is for:
- Users who want to track habits without creating online accounts.
- Students and professionals who read PDFs and need structured bookmarks.
- Developers who want a clean vanilla JavaScript project with zero build tools.
- Daily habit grid for the current month.
- Categories with custom name, emoji, and color.
- Weekly summary cards and monthly totals.
- Monthly review notes for wins, blockers, and focus.
- Dashboard and analytics charts.
- Upload PDF files up to 70 MB each.
- Create bookmarks with page number and note text.
- Open bookmarked pages in Reader Mode.
- Page navigation and direct page jump.
- Reader dark mode in two styles: full and text.
- Bookmark event history (capped for performance).
- Gemini model selection from predefined model list.
- Bookmark-based summary generation from extracted PDF text.
- Markdown-formatted summary output.
- Encrypted API key storage on device with passphrase unlock flow.
- In-app logs with export to JSON/CSV.
- Optional live .log writing for supported secure browser contexts.
- Error-safe flow for PDF extraction and AI calls.
git clone https://github.com/semyonsw/habbit_maker.git
cd habbit_makerIf you use Python:
python3 -m http.server 8080On Windows (Python launcher):
py -m http.server 8080http://localhost:8080
- Open the Manage tab.
- Add categories first (example: Health, Study, Work).
- Add daily habits and assign each to a category.
- Set monthly goals where needed.
- Return to Dashboard to see the month grid populated.
- Open Dashboard.
- Tick habit cells for each completed day.
- Watch summary cards update automatically.
- Open Analytics and add monthly review notes: wins, blockers, and focus.
- Compare category performance in Analytics charts.
- Open Books.
- Upload a PDF file (must be valid PDF, max 70 MB).
- Add bookmarks with real page numbers and concise notes.
- Open a bookmark in Reader Mode.
- Use page jump and dark mode when reading long documents.
- Open Books and go to Summary AI settings.
- Paste your Gemini API key.
- Create a passphrase to encrypt and save the key on this device.
- Select a Gemini model.
- Run summary from a selected bookmark range.
- Review generated markdown summary and save it in your workflow.
Note: AI summary requires internet access and a valid Gemini key.
- Use Export in the sidebar to save your current app state.
- Leave Include PDFs unchecked for a lightweight metadata backup.
- Enable Include PDFs when you need a full backup that can restore book binaries too.
- Use Import to restore a saved JSON backup.
Reason: metadata-only export stays smaller, while full export embeds PDF binaries from IndexedDB into JSON.
- Main app state: localStorage.
- PDF binaries: IndexedDB database habitTracker_books_pdf_v1, store pdfFiles.
- Reader/analytics preferences: localStorage.
- Logs: localStorage with capped record size.
- Local-first by default.
- No mandatory cloud sync.
- No required account.
- Max PDF file size:
70 * 1024 * 1024bytes (70 MB). - Max bookmark history events: 200.
- Max retained log records: 1000.
The repository includes auto-sync.sh for periodic git add/commit/push.
./auto-sync.sh 20- 20 means 20 seconds between sync cycles.
- Script validates interval and git repository before running.
- Stop with Ctrl+C.
- Confirm file extension and MIME are PDF.
- Confirm file size is not above 70 MB.
- Confirm browser supports IndexedDB.
- Confirm network access to Chart.js CDN.
- Refresh the page and reopen Analytics.
- Reload page and reopen Reader Mode.
- Re-check whether the PDF blob exists in current browser storage.
- Verify API key and selected model.
- Unlock encrypted API key in Summary AI settings.
- Confirm internet access to Gemini API endpoint.
- HTML5, CSS3, Vanilla JavaScript (no framework, no build step).
- Chart.js (CDN).
- PDF.js 3.11.174 (CDN sources with fallback URL list).
- Gemini API integration for optional summary features.
- Modern Chrome, Edge, Firefox, and Safari are recommended.
- Requires ES6+, localStorage, and IndexedDB.
- Live .log writing requires secure context and File System Access API support.
Habit Maker-ը local-first վեբ հավելված է, որը միավորում է ամենօրյա սովորությունների կառավարումը և PDF գրքերի աշխատանքային միջավայրը մեկ տեղում։
Այս նախագիծը օգնում է քեզ՝
- օրական սովորությունները պլանավորել և հետևել ամսական աղյուսակում,
- PDF գրքերի համար պահել էջային bookmark-ներ և նոթեր,
- ցանկության դեպքում ստանալ AI ամփոփումներ,
- պահել տվյալները քո բրաուզերում առանց պարտադիր հաշվի կամ backend-ի։
- Clone արա repository-ն և մտիր թղթապանակ։
git clone https://github.com/semyonsw/habbit_maker.git
cd habbit_maker- Գործարկիր local server.
python3 -m http.server 8080Windows-ի համար կարող ես օգտագործել.
py -m http.server 8080- Բացիր հավելվածը.
http://localhost:8080
- Բացիր Manage բաժինը։
- Ավելացրու category-ներ (անուն, emoji, գույն)։
- Ստեղծիր daily habits և կապիր category-ների հետ։
- Dashboard-ում նշիր կատարված օրերը և հետևիր summary քարտերին։
- Books բաժնում upload արա PDF (մինչև 70MB)։
- Ավելացրու bookmark՝ էջի համարով և կարճ note-ով։
- Բացիր Reader Mode և աշխատիր էջերի navigation-ով։
- Անհրաժեշտության դեպքում միացրու dark mode (full/text)։
- Books-ում մտիր Summary AI settings։
- Մուտքագրիր Gemini API key։
- Ստեղծիր passphrase, որպեսզի key-ը encrypted պահվի այս սարքում։
- Ընտրիր model և գործարկիր summary bookmark range-ի համար։
- Export-ով պահիր state-ը JSON ֆայլում։
- Եթե ուզում ես փոքր backup, պահիր Include PDFs ընտրանքը անջատված։
- Եթե պետք է ամբողջական backup, միացրու Include PDFs, որպեսզի PDF-ներն էլ ներառվեն։
- Import-ով վերականգնիր backup-ը։
habbit_maker/
|- .editorconfig
|- app.js
|- index.html
|- styles.css
|- auto-sync.sh
|- README.md
|- CONTRIBUTING.md
|- CODE_OF_CONDUCT.md
|- SECURITY.md
|- exported-data/
`- LICENSE
- Contributing guide: CONTRIBUTING.md
- Security policy: SECURITY.md
- Code of conduct: CODE_OF_CONDUCT.md
- License: LICENSE
Built by Semyon.