Dataview can turn an Obsidian start page into a compact dashboard. By querying notes, tags, tasks, dates, and folders, you can see what needs attention, what was recently changed, and how your vault has grown without manually maintaining a separate index.

The following snippets use Dataview and DataviewJS. When copying them, remove the leading - before dataview if it appears in the code block formatting.
Quick links for today and last year
This inline expression displays links for today's date and the same date last year. Clicking either link takes you to the corresponding daily note, or creates it if it does not yet exist.
今日 `= "[["+date(today)+"]]"` ,去年 `= "[["+(date(today) - dur(1 years))+" ]]"`
Notes waiting for attention
The first list gathers notes from the 0 收集 folder and places the newest-created files first. The second shows notes carrying the #doing tag, again sorted by creation time.
待读
list
from "0 收集"
sort file.ctime desc
进行中
list
from #doing
sort file.ctime desc
Recently edited and newly created notes
These two tables show the five most recent files. Notes inside 10 归档 and 1 看板 are excluded so that the dashboard focuses on active material rather than archived content or board pages.
最近编辑
table WITHOUT ID file.link AS "标题",file.mtime as "时间"
from !"10 归档" and !"1 看板"
sort file.mtime desc
limit 5
最近创建
table WITHOUT ID file.link AS "标题",file.ctime as "时间"
from !"10 归档" and !"1 看板"
sort file.ctime desc
limit 5
A few higher-level DataviewJS panels
DataviewJS makes it possible to add small statistics to the page. The first example finds the earliest note in the vault, calculates the difference between that note and the current date, and displays how many days the vault has been in use.
归档
let ftMd = dv.pages("").file.sort(t => t.cday)[0]
let total = parseInt([new Date() - ftMd.ctime] / (60*60*24*1000))
dv.paragraph(
"距今已使用 "+total+" 天"
)
The next snippet counts notes, tags, and tasks while leaving out 10 归档/Template. It reports the totals in a single paragraph.
let nofold = '!"10 归档/Template"'
let allFile = dv.pages(nofold).file
let totalMd = "共创建 "+
allFile.length+" 篇文档"
let totalTag = allFile.etags.distinct().length+" 个标签"
let totalTask = allFile.tasks.length+" 个待办 <br><br>"
dv.paragraph(
totalMd+"、"+totalTag+"、"+totalTask
)
A complete tag overview can also be generated automatically. Here, every distinct tag is sorted by the number of notes using it, then displayed together with its count.
dv.paragraph(
dv.pages("").file.etags.distinct()
.sort(t => dv.pages(t).length , 'desc')
.map(
t => {
return `[${t}](${t})`+"("+dv.pages(t).length+")"
}
).array().join(" ")
)
Monthly archive statistics
This table groups notes by the year and month in which they were created, then sorts the groups from newest to oldest. Both the Template folder and 1 看板 are excluded.
TABLE WITHOUT ID
rows.file[0].cday.year + "年 " + rows.file[0].cday.month + "月" AS "月份",length(rows) + " 篇" AS "数量"
where !contains(file.folder, "Template") and !contains(file.folder, "1 看板")
GROUP BY file.cday.year + "年 " + file.cday.month + "月" AS "Group"
SORT rows.file[0].cday DESC
Birthdays coming up
If people notes are stored in 10 归档/People, the following query lists birthdays occurring within the next two months. It includes the person's file link, birthday, the remaining time, and the age they will turn.
近期生日
table WITHOUT ID file.link AS "姓名",birthday as "出生日期", ((date(today)-birthday).month + "天后") as 倒计, ((date(today)-birthday).year+1 + "岁") as 年龄
from "10 归档/People"
where birthday < date(today) + dur(2 months)
With these queries gathered on one page, the start page becomes a live overview rather than a static landing screen: daily notes, unfinished work, recent changes, archive activity, tags, tasks, and upcoming birthdays are all surfaced directly from the vault.