2 分钟

如何构建一款用于日常计划与任务优先级的移动应用

一步步指导你规划、设计并构建一款面向日常计划与任务优先级的移动应用——从 MVP 功能到提醒、测试与上线。

如何构建一款用于日常计划与任务优先级的移动应用

1) 明确问题与目标用户

在你设计界面或选择技术栈之前,先明确你要帮助的以及他们在一天中想要完成的什么。笼统的“所有想高效的人”太宽泛——学生、按班次工作的护士、自由职业者或要兼顾接送孩子的父母,他们的日常计划方式差别很大。

定义主要用户

为 v1 选择一个主要受众(以后可以支持更多):

  • 学生:截止日期、课程表、学习时段、工作量不稳定
  • 职场人士:会议、深度工作时段、优先级变动、邮箱驱动的任务
  • 看护者:提醒、日常例行、跑腿、多人的日程
  • 独立操作者:客户工作、行政任务、频繁的上下文切换

写一句承诺语,例如:“帮助独立职场人士在 3 分钟内制定可执行的一天计划。”这句承诺应指导每个功能决策。

确认三大痛点

多数日常计划类应用失败,因为它们没有解决真正痛苦的部分:

  1. 忘记任务(想法丢失;任务散落在多个地方)
  2. 优先级不清(一切都显得紧急;难以决定下一步)
  3. 日程不现实(任务太多、时间不够、频繁延后)

与目标用户中的 8–12 人交谈,注意重复出现的说法。这些短语会成为你的产品语言。

选定一个主要职能

决定你的应用主要是为哪件事服务:

  • 规划当天(时间块、例程模板、“今日”聚焦)
  • 任务优先级(排序、简单规则、快速决策)
  • 两者兼顾(仅在能保持流程快速且简单时)

定义成功(以便据此设计)

为首个版本选择可量化的结果,例如:

  • 日活使用频率(例如每周使用 4 天以上)
  • 每日完成任务数(或完成率)
  • 规划时间减少(例如从 10 分钟降到 2–3 分钟)

清晰的用户、痛点和成功指标能防止功能膨胀——并让 v1 有明确目标感。

2) 定义核心工作流(每日规划循环)

当一个应用能让某个重复行为变得无感时,它就会留住用户。在功能之前,先定义用户每天(或工作日)完成的“循环”。这个循环会影响你的主页、导航和北极星指标。

从几个简单的用户故事开始

让它们具体且有时间边界,方便团队更快决策与构建:

  • “我想在 5 秒内捕捉一个想法,这样就不会丢失它。”
  • “我想在 3 分钟内规划好一天,尽快开始工作。”
  • “我想不看长列表就知道下一步做什么。”
  • “我希望我的计划能在中断后存活,这样我能在 30 秒内重新规划。”
  • “我想回顾今天的完成情况,以便明天改进。”

选择核心循环:捕捉 → 优先级 → 安排 → 执行 → 回顾

捕捉: 一个始终可用的单点输入。优先快速添加,细节可后补。目标是零摩擦,而不是完美结构。

优先级: 把原始任务变成短列表。可以是简单的“今日前三”+“稍后”,或类似艾森豪威尔的重要/紧急选择(具体方法稍后确定)。

安排: 将优先项转换为现实可行的计划。时间块在这里很有用:分配 1–3 个深度工作时段,外加一个灵活的“事务”时段处理小任务。

执行: 明确显示“现在”和“接下来”。减少决策:一个主要动作(“开始时段” / “标为完成”)和快速推迟(“移到稍后今天”)。

回顾: 日终回顾约 60 秒:已完成项、移动项以及一个反思提示。在这里,应用给人的是进步感,而不是压力。

决定 v1 中不做的事

把这些明确写下来以保护循环:

  • 团队协作与共享工作区
  • 复杂的项目管理(依赖关系、甘特图)
  • 完整的笔记系统或文档编辑器
  • 高级自动化规则

制作一页产品简报

保持简短并放在显眼处:

  • 目标用户 + 主要痛点
  • 每日规划循环(如上)和“北极星”指标(例如完成计划的天数比例)
  • v1 的必做项 vs 不做项
  • 关键界面:收件箱(捕捉)、今日(规划)、回顾

这份简报是你的护栏:若某功能无法强化循环,就等待。

3) 为 v1 选择 MVP 功能

你的 v1 应该让用户在一件事上做得非常好:快速捕捉任务、决定当日重要事项并执行。如果应用需要教程才能达成可用的日计划,说明 MVP 太大了。

必备功能(不可或缺)

这些功能让循环成为可能:

  • 快速添加:主屏一键入口,字段最少。
  • 优先级:简单标签(如 高 / 中 / 低)或单一“今日”标记。
  • 截止日期:可选且快速设置(今天、明天、选择日期)。
  • 提醒:基础的本地通知与任务/时间关联。

可选但留待以后实现的功能

这些能增加价值,但也增加界面、边界情况和设置:

  • 日历同步
  • 定期重复任务
  • 标签/分类
  • 模板(如“晨间例程”、“每周回顾”)

控制范围的 MVP 规则

  • 更少页面:目标 3–5 个核心页面(收件箱、今日、任务详情、设置)。
  • 更少设置:提供智能默认;避免偏好设置过多。
  • 更快的日常使用:每个关键操作应在数秒内完成,而不是数分钟。
  • 没有“高级功能”除非有证据:只有在真实用户反馈之后再增加。

简易范围表

区域MVP (v1)以后
捕捉快速添加 + 基本收件箱小部件、语音捕捉
组织优先级 + 截止日期标签、项目、模板
规划“今日”列表时间块、拖拽日程
提醒每任务一个提醒智能提醒、多次提醒
同步本地/离线基础日历同步、跨设备同步

把这当作合同:不在 MVP 列的功能,不在 v1 发布。

4) 选择让人觉得自然的优先级方法

优先级应该感觉简单、熟悉且可选——用户不应被强制使用他们不懂的系统。

以一键默认开始

v1 选一个默认方法并保证它最省力。最通用的选项是 高 / 中 / 低,因为任何场景(工作、家庭、学校)都能迅速理解。

标签保持简短(“高”),并用工具提示说明含义:

  • :"今日务必完成"
  • :"重要但可灵活安排"
  • :"有时间就做"

为不同思维方式提供替代模式

有些人以紧急程度思考,有些人以影响力思考。支持一两个附加模式可以帮助用户,但不要让界面膨胀:

  • 艾森豪威尔(紧急 / 重要):适用于把真正的优先事项与噪音分离。
  • 付出 vs 产出:适用于想优先快速产出或需要证明大任务价值的场景。

一个好的模式是“一次只启用一种方法”,在设置中切换即可,避免任务出现冲突的优先级信号。

在引导中用示例教会系统

避免抽象解释,展示 2–3 个贴近目标用户的具体例子:

  • “报销提交(紧急 + 重要)”
  • “预约牙医(重要但不紧急)”
  • “整理下载文件夹(低)”

这能在不到一分钟内显著减少误用(比如每件事都标为高)。

添加“聚焦”视图以过滤噪音

聚焦视图只显示用户认定的重要项——例如高优先级任务或艾森豪威尔的左上象限。保持简洁:短列表、明确的下一步操作,以及快速完成的方式。

无论后续添加多少功能,聚焦视图应始终作为让优先级功能有意义的“家”。

5) 设计每日计划:时间块、截止与例程

当“制定计划”感觉快速,而“改变计划”也感觉无痛时,日常计划器就成功了。及早决定你的日视图是简单列表、时间块还是混合型。

选择计划风格(列表、时间块或两者)

简单日列表适合按优先级思考的用户(“今日前三”)。时间块适合按日程思考的用户(“9–10 写报告”)。许多成功的应用在同一数据上提供两种视图:

  • 列表视图:快速捕捉与排序
  • 日程视图:为任务分配开始时间与时长

如果支持时间块,把它视为“计划意图”而非硬性承诺——人们需要在不觉得失败的情况下调整。

建模关键时间概念:今日、即将到来、某天/积压

通过区分让时间更可预期:

  • 今日:用户主动承诺要做的事
  • 即将到来:带有未来日期或“接下来几天”的项目
  • 某天/积压:尚未定日期的想法与任务

这种结构减少杂乱,让“为明天做计划”成为一个小步骤而非大重组。

截止与计划时间(不要混在一起)

截止回答“必须在什么时候完成”。时间块回答“什么时候去做”。允许任务同时有二者,并清晰显示冲突(例如今天有截止但没有安排时段)。

例程与重复项

支持重复任务用于习惯、账单和周例程。保持重复设置简单(每日/每周/每月),并允许“跳过一次”而不破坏序列。

轻松重新安排

计划会变。提供:

  • 一键 “移到明天”(可选“下周”)
  • 拖拽到新的时间块或天

重新安排越简单,用户就越会持续规划而不是放弃使用。

6) 让人真正用得上的 UX 与 UI 基础

无惧迭代
尝试 UX 变更,若流程出问题可快速回滚。

优秀的规划器 UX 不是“更多功能”,而是每次点击更少决策、更清晰的状态,以及符合人们思考方式的流程:先捕捉、后整理、今天行动。

起草主要页面(并保持聚焦)

将首个版本围绕少量页面设计,每个页面回答一个问题:

  • 收件箱:"我把任务丢到哪儿?"
  • 今日:"我下一步做什么?"
  • 日历 / 计划:"我的一天如何拼合?"
  • 任务详情:"这个任务到底是什么?"
  • 回顾:"我明天/本周该调整什么?"

避免到处混合规划与编辑。例如 今日 视图应强调行动(开始、贪睡、完成),而更深度的编辑放在 任务详情

使任务创建无摩擦

把捕捉当作笔记:先标题,细节随后。一个输入字段加上可选“添加细节”即可。

如果提供额外项(截止日期、优先级、标签),展示为快速芯片或底部表单,而非必填项。用户如果不能在两秒内添加任务,就会推迟并停止信任应用。

视觉层次:优先级与时间清晰区分

用户会快速扫视界面。UI 应清楚区分:

  • 有时间约束的项目(已排时段、截止)
  • 优先级提示(例如 高/中/低)

颜色 + 文本而不是只靠颜色(例如“高优先级”标签、图标或字体加重)。把最强的视觉强调留给“现在需要关注”的项,而不是每个装饰性元素。

可访问性提升采用率

可访问性就是可用性:

  • 大的点按目标(尤其是完成/重新安排)
  • 清晰可读的字号与高对比度
  • 支持语音输入(走路时快速捕捉)

还要为单手操作设计:主要操作放在底部,删除等破坏性动作加确认步骤。

7) 数据模型:任务、优先级与日程

当数据模型简单、一致且足够灵活以反映真实生活时,应用会显得“聪明”。存储规划所需的最小结构(任务)、提醒(提醒规则)和承诺时间(计划块),同时为未来的组织功能留出空间。

核心对象(保持精简)

任务 是核心:用户可能要去做的事。

围绕它添加:

  • 列表/项目:任务归属(如 “工作”、“家庭”、“旅行规划”)。
  • 标签:跨项目的标记(如“电话”、“深度工作”)。
  • 提醒:附着于任务的通知规则(基于时间,后续可选基于位置)。
  • 计划块:某天的保留时段,可选链接到一个任务。

必需字段与可选字段

标题设为必填;几乎所有其他字段都应可选,以保持捕捉快速。

建议字段:

  • 任务(必需):id、title、createdAt
  • 任务(可选):notes、dueAt(截止)、estimateMinutes、priority(低/中/高)、projectId、tagIds[]、reminderIds[]、scheduledBlockId、recurrenceRule

任务状态(反映规划流)

使用明确状态以便 UI 能在不猜测的情况下显示“下一步”:

  • inbox(已捕捉,未澄清)
  • planned(已分配到某天和/或计划块)
  • done
  • skipped(有意不做)
  • archived(在日视图中隐藏,保留历史)

离线优先与冲突处理

假设用户会在离线时新增/编辑任务。把变更以操作(创建/更新/完成)形式保存在本地,重连后同步并可预测地解决冲突:

  • 对于简单字段(标题/备注),优先最后写入优先
  • 对于集合(标签/提醒),使用基于操作的合并:按顺序重放增删操作。
  • 检测同一任务上的“双重编辑”,仅在必要时显示一个小的“查看更改”提示。

8) 在不打扰用户的前提下使用提醒与通知

用 Flutter 实现跨平台
快速生成一个与 Today 和 Inbox UX 相匹配的 Flutter 移动应用。

通知是把用户拉回应用的强力工具,但也可能导致卸载。目标是在用户能马上执行时提供帮助——而不是不断轰炸。

选择少量通知类型

从三类清晰的通知开始并让用户容易理解:

  • 截止提醒:如“任务 1 小时后到期”或“今天 17:00 到期”。适用于真实截止。
  • 计划块开始:如“时间块:写提案(30 分钟)”。适用于时间块化工作。
  • 每日规划提示:在用户选择的时间轻柔提示(“制定今日计划?”)以养成习惯。

如果你不能解释某条通知为何在此刻帮助用户去做事,那它很可能不应在 v1 出现。

从第一天起给用户控制权(频率 + 静音时段)

在引导和设置中就让用户控制通知(不要把选项藏三层界面下)。让用户设定:

  • 静音时段(含周末)以及是否允许“关键”截止提醒打断静音
  • 提前多久收到截止提醒(例如 5 分钟、1 小时、1 天)
  • 是否接收每日提示以及提示时间

默认设置比你预想的更保守——用户可以选择更多。

通过分组与智能默认防止过载

当多条任务同时触发时,合并为单条摘要(“今天下午有 3 项任务”),并在应用内提供展开查看的选项。使用智能默认,例如:

  • 只对带具体时间的任务发送通知(不对“某天”任务发送)
  • 每个任务默认一个提醒,并提供易用的贪睡

当推送被关闭时提供备选方案

假设许多用户会关闭推送。提供后备提示:

  • 应用图标角标 显示“今日到期”数量
  • 应用内 通知(“收件箱”或“通知”)列出错过的提醒与即将开始的时段

这样即使没有推送,应用仍能保持可靠感。

9) 集成:日历同步、小部件与快速捕捉

集成可以让日常规划变得更“原生”,但也会大幅增加复杂性。对 v1 来说,选择那些能显著减少日常摩擦的集成,随后再扩展。

日历同步(高价值但易被误解)

务实的 v1 做法是单向读取设备日历:把事件显示在日计划里,让用户围绕真实安排进行时间块规划。写回日历虽有力,但会引发很多问题(写入哪个日历?编辑如何处理?冲突如何解决?)。若在 v1 中实现写回,务必让其可选并明确标注。

及早记录边界情况:

  • 重复事件(用户启用了多个日历时尤甚)
  • 旅行时的时区变化
  • 夏令时变更(例如 9:00 的时间块不应无声滑动)

小部件与快速捕捉

小部件通常是最快的增益:一个“今日”小部件(显示前三项 + 添加按钮)和一个“快速添加”小部件覆盖大多数需求而无需深层导航。

对语音助手,v1 保持简单:支持一个意图“添加任务”,带默认列表和最少参数。目标是捕捉,而非完美分类。

导入/导出以降低锁定焦虑

即使是基础的 CSV 导出(任务 + 截止 + 备注)和简单的本地/云备份也能建立信任。导入可以稍后再做;导出通常足够打消被锁定的恐惧。

权限:晚一点再请求,并清楚解释

仅在用户触发功能时请求日历/通知/麦克风权限。加一句话说明原因(例如:“我们需要日历权限来在今日视图显示你的会议”)。这样更容易被接受并减少支持问题。

10) 构建计划:平台、技术选择与架构

日常规划应用的胜负在于速度与可靠性。构建计划应保持范围紧凑、快速交付 MVP,并为未来扩展留出余地。

选择平台路径

你有三种实用选择:

  • 优先 iOS:若目标用户主要使用 iPhone,或早期想减少设备差异。
  • 优先 Android:若需要更广设备覆盖或用户偏 Android。
  • 跨平台(Flutter / React Native):用单一代码库最快同时覆盖两端,通常适合以 CRUD 为主的规划类 MVP。

基于早期采用者所在的平台做选择,而不是仅凭“一般上的最好”。

简单的 MVP 架构

v1 的目标是:UI → 应用逻辑 → 本地数据库,同步为可选模块。

  • 本地优先存储(SQLite、Room、Core Data 或嵌入式 DB):任务、计划块与设置即时加载并离线可用。
  • 同步(v1 可选):若加入账户系统,把同步做成独立模块,确保离线行为可预测。

保持数据模型与应用逻辑独立于 UI,这样可以在不破坏核心行为的前提下调整界面。

快速验证原型(且不被锁定)

若想快速验证工作流(收件箱 → 今日 → 回顾),考虑先制作一个可点击的工作原型并与真实用户迭代。像 Koder.ai 这样的工具能通过对话描述界面与流程快速生成可运行的 MVP(Web、后端甚至移动端),并在准备好接管源码时导出传统仓库的源代码。

这种方法在你还在学习“为目标用户实现 3 分钟规划到底是什么”时尤其有用。

从第一天起就考虑性能

生产力应用每天被打开数十次。优化点包括:

  • 快速启动(缓存“今日”视图)
  • 流畅滚动(虚拟列表、最小重新渲染)
  • 即时搜索(本地索引、输入防抖)

团队可复用的功能清单

对每个功能(如“添加任务”、“规划我的一天”、“重新安排”):

  • UI 状态:空、加载、错误、成功
  • 业务规则:优先级变更、截止日期、重复项
  • 边界情况:时区变化、夏令时、离线编辑
  • 分析:事件名称、漏斗、关键结果
  • QA 说明:测试步骤 + 期望结果

这个清单能防止那些看起来完成但在真实日常使用中失效的“半成品”。

11) 测试:可用性、可靠性与边界情况

启动私人内测
部署并托管你的日程应用,让测试人员在忙碌日也能使用。

测试日常规划应用不仅是“无崩溃”。你在验证一种习惯:只有当循环感觉快速、可预期且可靠,用户才会回来。

端到端测试每日规划循环

建立贴近真实早晨和混乱下午的场景。覆盖完整循环(添加 → 优先级 → 计划 → 完成),并在不同条件下执行。

一组良好场景应包括:

  • 通过多种方式添加任务(输入、快速添加、语音、收件箱)
  • 使用所选优先级方法进行排序
  • 构建今日计划(时间块、截止、例程)
  • 标记完成、重新安排或贪睡,并确认统计/历史正确

加入“中断”(中午来紧急任务)与“失败”状态(用户半途放弃计划,然后返回)。

在真实设备状态下验证提醒

通知常在真实设备中失败而非模拟器。测试提醒应覆盖:

  • 静音/响铃/振动模式
  • 勿扰(允许与否)
  • 低电量模式 / 电池优化
  • 应用被杀死、手机重启
  • 时区变化与夏令时

确认用户可见行为与承诺一致(声音、横幅、锁屏)并且错过的提醒能被优雅处理。

早期进行小规模可用性测试

招募 5–8 位目标用户,先用可点击原型再用测试版,让他们完成任务。观察犹豫点:他们先点哪里、期望发生什么、什么被认为“太费劲”以至于不会每天使用。

Bug 分级与发布准备

设定简单的分级流程(严重性、可复现性、负责人、目标发布),并准备发布清单:关键流程通过、通知测试完成、离线行为验证、分析事件采集、回滚方案就绪。

12) 发布、指标与持续改进

当人们在忙碌的日子里尝试你的应用时,它才是真正“活”的。把发布当作学习的开始,而不是终点。

软启动:小范围发布快速学习

从匹配目标用户的小型测试组开始(例如学生、按班次工作人员、管理者)。保持人数刻意小(50–200 人),以便快速响应。

建立简单的反馈回路:

  • 应用内反馈:一个“发送反馈”按钮打开简短表单
  • 每周检查:一句问题(“今天哪点让你困惑?”)
  • 迭代节奏:按可预测节奏发布更新(例如每 1–2 周)

让测试期引导语明确:“使用 7 天,然后告诉我们什么打断了你的习惯。”

以“今日”时刻为资产

截图应在 3 秒内传达核心承诺:

  • 干净的 今日 视图,带时间块或简短计划
  • 可见的 优先级选择(例如“今日前三”或艾森豪威尔式决策)
  • 快速 捕捉流程(“两次点击添加”)和温和的提醒示例

用通俗语言的说明如“60 秒内规划好你的一天”和“明确下一步要做什么”。

衡量重要指标(并忽略虚荣数据)

追踪能反映习惯形成的少量指标:

  • 激活:在首次会话/当天创建今日计划的用户
  • 第 1 周留存
  • 每活跃用户的任务完成数(注意不要被“创建数”误导)
  • 提醒选择率及提醒后的互动

发布后优先改进项

先做能加深日常使用的升级:

  • 模板(工作日例程、会议密集日、跑腿行程)— 见 /blog/productivity-templates
  • 更智能的建议(延续规则、“今日前三”提示、时间块建议)
  • 更好的回顾流(日终总结、不惩罚失误的连胜机制)

如果有付费分层,把升级信息与结果挂钩并在 /pricing 上明确说明。

额外:用内容与推荐加快迭代

如果你公开构建产品,可以把 MVP 的学习转化为用户获取。例如,Koder.ai 支持“创作内容获得积分”的项目,以及“推荐链接”流程——如果你想在免费、专业、企业层之间控制成本并持续做实验,这些都很有用。

常见问题

如何为日常规划应用选择合适的目标用户?

首先为 v1 选择一个主要用户群(例如学生、职场人士、看护者、独立工作者),并写一句承诺语,比如:“帮助独立职场人士在 3 分钟内制定可执行的一天计划。”

然后通过 8–12 次访谈验证前三大痛点(常见的是忘记任务、优先级不清、日程不现实)。

日常规划应用应该围绕什么核心工作流构建?

可靠的循环是:捕捉 → 优先级排序 → 安排 → 执行 → 回顾

围绕完成这个循环来设计导航和主屏(例如:收件箱用于捕捉,今日用于执行,回顾用于反思)。如果某个功能不能强化这个循环,就先放到后面。

对于 MVP 日程规划器,哪些功能是真正的“必备”?

将 v1 限定为完成循环所需的最小功能:

  • 快速添加(快速捕捉)
  • 简单优先级(例如 高/中/低 或 今日 标记)
  • 可选截止日期(今天/明天/日期选择)
  • 基础提醒(本地通知)

将屏幕数控制在 ~3–5 个,使用智能默认而不是大量设置。

v1 中哪种优先级方法对大多数用户最有效?

选择一个一按即可的默认方法且易于理解——高 / 中 / 低 通常最稳妥。

如果提供备选(艾森豪威尔、付出 vs 产出),只允许“同时启用一个方法”(在设置中切换),避免冲突的优先级信号。

我应该如何在应用中处理时间块与截止时间?

把截止时间和时间块区分开:

  • 截止时间 回答“必须在什么时候完成?”
  • 时间块 回答“我什么时候处理它?”

允许任务有截止或时间块或两者,并清晰标示冲突(例如:今天有截止但没有计划时段)。这样既避免日历拥挤,又支持现实规划。

哪些 UX 决策能让规划器对日常使用足够快速?

把捕捉做成像写笔记一样:先写标题,细节随后

对于可选字段(截止、优先级、标签),用快速芯片或底部弹出框呈现,不要把它们做成必须填写的表单。输入变得繁琐时,用户会推迟记录,进而不再信任应用。

如何设计不会让用户厌烦的提醒?

使用少量明确的提醒类型:

  • 截止提醒(基于真实截止时间)
  • 时间块开始通知
  • 用户可选时间的每日规划提示

提供静音时间、保守默认、分组(“今天下午有 3 项任务”)和简单的贪睡。还应有应用内通知列表,在用户关闭推送时仍能保持可靠性。

任务、提醒和日程的实用数据模型是什么?

保持模型小而一致:

  • 任务 为核心
  • 可选:项目/列表、标签、提醒、计划块
  • 明确状态:inbox、planned、done、skipped、archived

对于离线优先策略,本地存储变更并在同步时按可预测规则解决冲突(如文本字段用最后写入优先;标签/提醒集合用操作式合并)。

在 v1 中,日历同步和集成的最安全策略是什么?

v1 最稳妥的做法是单向读取的日历同步:把日历事件显示在今日计划中,帮助用户在真实会议周围安排时间,而不是默认把任务写回日历。

尽早记录边界情况:重复事件、多日历重复、时区变化和夏令时偏移。

仅在用户启用该功能时请求日历权限,并加一句说明理由。

发布后我应该跟踪哪些指标来判断应用是否有效?

衡量习惯养成而非虚荣指标:

  • 激活:用户在首次会话/当天内创建了今日计划
  • 第 1 周留存
  • 每活跃用户的任务完成数(注意不要被“创建数”误导)
  • 提醒的选择率以及提醒后产生的互动

使用小规模内测(50–200 名目标用户)、内置反馈按钮,并以可预测的节奏迭代。如果后续加入模板,应将其与结果关联(参见 /blog/productivity-templates)。

Related posts