杂志 Me📔
一款有趣的人工智能日志应用程序,让追踪你的生活事件变得像聊天一样简单。与人工智能对话,记录事件,总结你的一天或一周,并获得你上次做某事的提醒。
注意:这是一个学校项目,在身份验证方面有一个有趣的转折——你可以直接告诉法学硕士你的证书,它就会让你登录! 🎉 (显然不建议用于生产!)
特性
- 🗣️ 对话式日记 -只需与AI对话即可记录您的日常事件
- 📊 智能摘要 -获取人工智能生成的您的一天、一周或自定义时间段的摘要
- 🔔 活动提醒 -询问你上一次做某事是什么时候,并立即得到答案
- 🎭 有趣的身份验证 -只需告诉AI你的电子邮件和密码,它就会处理登录!没有标题,您只需将标记添加到提示中即可!
可用工具
认证:
- 注册
- 登录
- 退出登录
日志记录:
- 添加日志事件
- 总结所选期间的事件
- 知道你上一次做某事是什么时候
技术栈
- Scala 3.3.7 --现代强类型函数式编程语言
- 猫的效果3.6.3 --用于异步、并发和资源安全的纯功能效果系统
- 烟囱(MCP)
v0.1.6--LLM工具集成的模型上下文协议服务器框架
- 貘
v1.13.3--类型安全端点定义和请求/响应建模
- Tapir Netty猫服务器 --Netty和Cats效应驱动的高效HTTP服务器
- 奈蒂 --高性能异步网络框架
- 杜比
v1.0.0-RC11--用于数据库访问的JDBC功能层
- PostgreSQL集成 - HikariCP连接池
- PostgreSQL --用于持久化的关系数据库
- 迁飞路线 --数据库模式迁移(通过Docker)
- Logback --结构化应用程序日志记录
- jBCrypt --安全密码散列
测试和工具
- 标量测试 --单元和集成测试
- 猫效应测试 --效果感知测试工具
- 测试容器(PostgreSQL) --短暂、可重复的数据库测试
- Docker&Docker编写 --当地基础设施(Postgres+Flyway)
- sbt --构建和依赖关系管理
建筑
项目结构
JournalMe/
├── src/ # Source code
├── project/ # sbt build configuration
├── target/ # Compiled artifacts (ignored)
├── build.sbt # Project dependencies and settings
└── .env # Environment variables (ignored)日记我遵循一个 干净、分层的架构 重点强调 功能效应(IO)从边缘到持久.
高级层
┌─────────────────────┐
│ MCP │ ← Chimp tools exposed to the LLM
│ (tools / adapters) │
└─────────▲───────────┘
│
┌─────────┴───────────┐
│ Services │ ← Business logic, validation, orchestration
│ (pure + IO) │
└─────────▲───────────┘
│
┌─────────┴───────────┐
│ Persistence │ ← Doobie repositories (PostgreSQL)
│ (IO, SQL) │
└─────────▲───────────┘
│
┌─────────┴───────────┐
│ Database │ ← PostgreSQL
└─────────────────────┘包装责任
- 领域
核心业务模型和错误类型。无需担心基础设施问题。
- 持久性
Doobie存储库、SQL映射和数据库访问。所有存储库返回 IO.
- 服务
应用程序逻辑和编排。该层协调存储库,应用验证规则,并返回包装在 IO.
- 主控程序
暴露在LLM中的烟囱工具。该层将结构化域结果调整为 LLM友好字符串.
- mcp.adapter/格式化器
纯格式化逻辑,将域对象和错误转换为LLM的自然语言响应。
设计原则
- IO无处不在 --所有副作用都是明确和可控的
- 关注点分离 --格式、业务逻辑和持久性显然是孤立的
- 类型安全第一 --错误是使用密封特征显式建模的
- LLM友好边界 --只有MCP层处理字符串和提示
安装说明
先决条件
- Java软件开发工具包21
- sbt(Scala构建工具)
- 光标IDE -使用JournalMe的MCP集成所需
安装
- 克隆存储库
git clone
cd JournalMe- 设置环境变量
创建 .env 从 .env.example 项目根目录中的文件。
该项目通过系统注入环境变量。 将IDE配置为使用 .env 手动归档或导出变量。
cp .env.example .env
# Then edit the .env file with your preferred settings或者,
export SESSION_LENGTH=
export POSTGRES_PORT=
export POSTGRES_USER=
export POSTGRES_PASSWORD=
- 构建项目
sbt compile- 启动数据库
确保端口配置适合您的本地环境
如果想查看数据源的结构,可以将其连接到所选的IDE
#This will also trigger a flyway migration
docker compose up或者,
make db-up
make db-migrate- 运行应用程序
sbt run与Cursor IDE一起使用
由于JournalMe使用Chimp for MCP(模型上下文协议),您需要在AI聊天会话中使用Cursor IDE与JournalMe MCP服务器进行交互。
- 在Cursor中打开项目
- 在Cursor的设置中配置MCP连接
- 开始与AI聊天,并使用JournalMe的功能!
- 在您的第一个提示中,不要犹豫,具体要求LLM使用JournalMe MCP服务器
开发说明
- 这
.bloop,.bsp,以及.metals目录由Metals(Scala语言服务器)生成 - 通过以下方式自动忽略构建工件
.gitignore - 确保你的
.env文件从未提交到版本控制
贡献
这是一个学校项目,但请随意尝试并享受其中的乐趣!请记住:身份验证方法是故意愚蠢的——请不要在实际应用程序中使用这种模式! 😄
快乐的日记! ✨
