jepicaju862-lab535 downloadsCustomizable homepage dashboard with greeting banners, recent notes, quick access, countdowns, pomodoro timer, daily quotes, habits, task kanban, and vault statistics.
A modern, modular, and responsive homepage dashboard plugin for Obsidian. Built on a flexible 12-column adaptive grid, it empowers you to customize your workspace with draggable, resizable, and individually configurable widgets. Support multiple pages and third-party plugin integrations.
[!NOTE] Local-First & Privacy Assured: Home Pages operates entirely within your local Obsidian vault. Layouts, states, and settings are persisted locally in
data.jsonwithout any background analytics, telemetry, or hidden network tracking.
Home Pages comes with 12+ built-in productivity widgets that can be freely combined and configured:
| Widget | Description | Key Configurations |
|---|---|---|
| Welcome Banner | Greeting by time of day, custom nickname, live clock (optional seconds), weather forecast, vault stats, countdown badge, and customizable background image. | Weather provider (CMA Station / Open-Meteo / QWeather), city/district selection, background mask, field toggles, vault founding date, target date. |
| Recent Notes | Fast access to recently modified or newly created notes with folder paths. | Note count limit, include/exclude folders, sort order, display folder option. |
| Quick Access | Pinned notes, folders, or attachments displayed as interactive icon tiles. | Note path autocomplete, display name, Lucide icon picker, custom order, column count. |
| Countdown & Anniversaries | Accurate day count tracking remaining days to goals or elapsed days from anniversaries. | Target date, counting direction (past / future), description and subtitle. |
| Pomodoro Clock | Focus, short break, and long break cycle timer with progress ring, task note, and daily/weekly completion statistics. Timers persist across note switches and restarts. | Stage durations, long break frequency, auto-start breaks, sound alerts, system notifications. |
| Daily Quote | Display inspiring quotes from a dedicated note (one per line) or custom quote list. | Source note path, daily rotation vs. random, custom quote pool. |
| Habit Tracker | Today's check-in checklist combined with a GitHub-style activity heatmap (week / month / year), plus the current streak. | Habit items list, storage mode (local plugin data or Daily Note task block sync). |
| Task Kanban | Scans - [ ] markdown tasks and arranges them across Todo [ ], Doing [/], and Done [x] columns. Supports drag-and-drop status changes and inline task creation. |
Source file or folder, default inbox file, column headers, hide completed toggle. |
| Vault Statistics | Overview metrics including notes count, tags, word count, attachments, folders, vault age, created today, and modified this week. | Metric items toggle, grid column layout, exclude folders. |
| On This Day | Surfaces notes created or written on this day across past years. | Item count limit, date property key, filename date fallback, ctime fallback. |
| Note Embed | Render any note or specific heading section directly within your dashboard. | Note path, section heading, hide frontmatter toggle. |
| Integrated Feed (Optional) | Aggregated information stream combining duowei table insights, annotation inbox, and synced messages. | Source toggles, table scope, date fields, message sources. |
| Tasks & Schedule (Duowei Table) | Scans multidimensional tables (.duowei), surfaces overdue, today, upcoming, and recent updates with direct row navigation. |
Scan scope, exclude tables, date field mappings, section day limits. |
| WeChat Inbox | Aggregates WeChat sync messages with text, audio transcription, and image thumbnails. | Data source, unorganized filter, days range, type filters. |
| Annotations & Review | Connects to Mobile Ink Annotation Pro to show inbox annotations, daily reviews, and collections. | Card statistics, thumbnail preview, one-click jump to annotation center. |
| Media & RSS Subscriptions | Surfaces articles from mainstream sources and personal custom RSS / OPML feeds. Supports Follow exports, nested categories, podcast/video detection, and offline Markdown clipping. | Channel nav style, default channel, OPML import/export, category organization, clipping folder. |
+ at the end of the tab bar at any time to create distinct pages (e.g., "Work Dashboard", "Life Log", "Project Hub").Home Pages exposes a lightweight host API allowing other Obsidian plugins to register custom widgets and views into the homepage framework:
// Retrieve the API instance when Home Pages is loaded (or listen to "home-pages:ready")
const api = app.plugins.plugins["home-pages"]?.api;
// 1. Register a new widget type
const unregister = api.registerWidget(myWidgetDefinition, "my-plugin-id");
// 2. Programmatically pin a widget to the current homepage
api.pinWidget("my-widget-kind", { ref: "note-path" }, {
title: "My Pinned View",
w: 6,
h: 4,
provider: "my-plugin-id"
});
// 3. Trigger a dashboard redraw when underlying data changes
api.refresh("my-widget-kind");
// 4. Utilize consistent UI rendering helpers
api.ui.renderKpi(containerEl, { label: "Completed", value: 12 });
api.ui.renderEmpty(containerEl, { message: "No data available" });
Integration Example: Duowei Table (duowei-table-pro ≥ 1.4.0) registers
duowei-viewvia the Host API. Users can right-click any table view tab and select "Pin to Homepage" to display live calendars, kanban boards, and progress timelines on their homepage.
Users can build custom widgets directly in JavaScript without creating separate plugins:
_scripts/home-pages/), or click "📄 Create Demo Widget Template" to auto-generate demo-widget.js..js files exporting a standard widget definition:module.exports = {
kind: "user-clock",
name: "Custom Clock",
description: "Real-time clock widget",
icon: "clock",
accent: "#6366f1",
defaultSize: { w: 4, h: 3 },
defaultConfig: () => ({ greeting: "Hello" }),
render(body, ctx) {
body.empty();
const el = body.createDiv();
el.setText(`${ctx.config.greeting} · ${new Date().toLocaleTimeString()}`);
ctx.registerInterval(() => {
el.setText(`${ctx.config.greeting} · ${new Date().toLocaleTimeString()}`);
}, 1000);
}
};
.js file from Obsidian or an external editor like VS Code, and homepage cards will automatically reload and re-render instantly!Once available in the official Obsidian Community Plugins directory:
main.jsmanifest.jsonstyles.css<vault>/.obsidian/plugins/home-pages/
Ctrl/Cmd + P and execute the command Home Pages: Open Homepage.| Setting | Description | Default |
|---|---|---|
| Open on startup | Automatically open homepage when Obsidian launches | On |
| Open in new tab | Open homepage in a new tab instead of replacing active tab | On |
| Row height | Unit height for grid rows in pixels (24px - 96px) | 40px |
| Grid gap | Spacing between widget cards in pixels (4px - 40px) | 16px |
| Max content width | Max width constraint (0 fills window width) | 1400px |
| Always show page tabs | Keep page tabs visible even with single page | On (new installs) |
| Add new custom widgets automatically | Put a custom widget on the current page the first time its script loads | On |
| Page management | Add, duplicate, rename, or remove homepage layouts | Default page |
| Import / Export | Copy or paste full dashboard layouts in JSON format | - |
data.json.scripts/verify-bundle.mjs) ensures the distributed bundle contains no dynamic script generation, eval(), or new Function().No. Home Pages provides responsive adaptive rules for small screens. On narrow viewports, the grid seamlessly collapses into full-width or compact columns optimized for touch interaction.
Yes. The timer state and start timestamp are persisted in plugin memory and data. Switching views or restarting Obsidian restores the timer seamlessly.
In Settings → Home Pages → Pages, click + New Default Page at any time to generate a clean instance of the default layout.
Contributions and pull requests are welcome!
# 1. Install dependencies
npm install
# 2. Start dev build with watch mode
npm run dev
# 3. Lint source code
npm run lint
# 4. Production build with security audit
npm run build
For detailed changelogs and version release histories, see RELEASE_NOTES.md (or RELEASE_NOTES.zh-CN.md).
1094620986. The group communicates primarily in Simplified Chinese.1094620986This project is licensed under the GNU General Public License v3.0.