Norish开发入门:从API接口到插件开发的完整技术文档

发布时间:2026/9/15 4:08:28

Norish开发入门:从API接口到插件开发的完整技术文档 Norish开发入门从API接口到插件开发的完整技术文档【免费下载链接】norishNorish - A realtime, self-hosted recipe app for families friends项目地址: https://gitcode.com/gh_mirrors/no/norishNorish是一款实时的、自托管的家庭和朋友食谱应用本指南将帮助开发者从API接口使用到插件开发快速掌握Norish的技术架构和扩展方式。通过本文你将了解如何搭建开发环境、利用API接口进行数据交互以及开发自定义插件来扩展Norish的功能。开发环境搭建环境要求Node.js22.22.0见.nvmrcpnpm10.x或更高版本Docker用于PostgreSQL、Redis和无头ChromeGit本地开发设置# 克隆仓库 git clone https://gitcode.com/gh_mirrors/no/norish cd norish # 安装依赖 pnpm install # 创建环境文件 cp .env.example .env.local # 启动所需服务Postgres、Redis、Chrome pnpm run docker:up # 运行Web应用 pnpm run dev # 运行移动应用Expo pnpm run dev:mobile至少需要在.env.local中配置DATABASE_URL、REDIS_URL、AUTH_URL和MASTER_KEY使用openssl rand -base64 32生成。详细配置可参考Server runtime和Database。API接口详解Norish在/api/v1路径下提供HTTP API接口方便开发者进行数据交互和扩展。认证方式通过以下任一方式传递API密钥x-api-key: your-api-keyAuthorization: Bearer your-api-key注意/api/docs和/api/openapi.json需要已登录的Web会话GET /api/v1/health是公开的健康检查接口其他所有/api/v1端点都需要API凭证。主要端点健康检查GET /api/v1/health- 公共健康检查接口返回API和内部解析器服务的健康状态。食谱管理GET /api/v1/recipes/{id}- 获取指定ID的食谱详情POST /api/v1/recipes/search- 列出食谱支持可选过滤条件POST /api/v1/recipes/import/url- 从URL导入食谱POST /api/v1/recipes/import/paste- 粘贴导入食谱POST /api/v1/recipes/search返回分页的食谱列表可选过滤条件包括search、searchFields、tags、categories、filterMode、sortMode、minRating和maxCookingTime。cursor默认为0limit默认为50。食材管理GET /api/v1/groceries- 获取食材列表POST /api/v1/groceries- 添加新食材PATCH /api/v1/groceries/{id}/done- 标记食材为已购买PATCH /api/v1/groceries/{id}/undone- 标记食材为未购买PATCH /api/v1/groceries/{id}/store- 更新食材的存储位置DELETE /api/v1/groceries/{id}- 删除食材针对单个食材的修改端点需要version字段以实现乐观并发控制。PATCH /api/v1/groceries/{id}/store在请求体中接受storeId和可选的savePreference。商店管理GET /api/v1/stores- 获取商店列表POST /api/v1/stores- 添加新商店计划食谱GET /api/v1/planned-recipes/today- 获取今日计划食谱GET /api/v1/planned-recipes/week- 获取本周计划食谱GET /api/v1/planned-recipes/month- 获取本月计划食谱POST /api/v1/planned-recipes- 添加计划食谱DELETE /api/v1/planned-recipes/{itemId}- 删除计划食谱计划食谱范围端点使用服务器时区来确定今天/周/月的边界周范围是从周一到周日。插件开发指南虽然Norish目前没有专门的插件系统但可以通过以下方式扩展功能共享模块开发Norish采用模块化架构通过创建共享模块可以实现功能扩展。主要共享模块位于packages/shared-react/src/hooks/和packages/shared-react/src/contexts/目录下。例如创建一个新的共享钩子模块在packages/shared-react/src/hooks/目录下创建新的钩子文件实现钩子逻辑确保不导入特定平台的模块在packages/shared-react/src/index.ts中导出新钩子集成第三方服务可以通过API接口集成第三方服务例如集成AI食材识别服务添加新的食谱导入来源连接外部日历服务集成方式通常是创建新的API端点或使用现有端点的扩展参数具体实现可参考packages/api/src/parser/目录下的解析器模块。自定义主题和样式Norish使用Tailwind CSS进行样式管理可以通过以下方式自定义主题修改tooling/tailwind/heroui-theme.css文件扩展tooling/tailwind/heroui-theme.js中的主题配置在应用中使用自定义CSS类高级开发技巧测试策略Norish使用Vitest进行测试测试文件通常与被测试模块放在同一目录下命名为*.test.ts或*.test.tsx。可以使用以下命令运行测试pnpm run test代码质量工具项目使用ESLint和Prettier进行代码质量控制相关配置位于tooling/eslint/和tooling/prettier/目录下。提交代码前建议运行pnpm run lint pnpm run format性能优化使用React.memo和useMemo优化组件渲染合理使用TanStack Query进行数据缓存优化图片加载使用适当的尺寸和格式总结Norish提供了强大的API接口和模块化架构使开发者能够轻松扩展其功能。通过本文介绍的开发环境搭建、API接口使用和插件开发方法你可以开始构建自定义功能和集成第三方服务。如需更多帮助请参考项目中的开发命令文档和贡献指南。祝你的Norish开发之旅顺利 【免费下载链接】norishNorish - A realtime, self-hosted recipe app for families friends项目地址: https://gitcode.com/gh_mirrors/no/norish创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/15 4:08:28

单目3D锥桶定位:低成本高精度的自动驾驶视觉方案

1. 项目概述:单目3D锥桶定位的技术突破 在自动驾驶赛道和园区物流场景中,锥桶定位一直是个令人头疼的问题。传统方案要么贵得离谱(激光雷达),要么精度堪忧(纯视觉2D检测),要么算力要…

2026/9/11 21:27:52

从Notion到DailyNotes:如何无缝迁移并优化你的笔记工作流

从Notion到DailyNotes:如何无缝迁移并优化你的笔记工作流 【免费下载链接】DailyNotes App for taking notes and tracking tasks on a daily basis 项目地址: https://gitcode.com/gh_mirrors/da/DailyNotes 如果你正在寻找一款自托管的笔记与任务管理工具&…

2026/9/15 0:16:48

雷电模拟器运行FRIDA的5大典型错误与解决方案

1. 项目概述:当FRIDA遇上雷电模拟器 在移动安全分析、应用逆向和动态调试的圈子里,FRIDA 和安卓模拟器是两件不可或缺的利器。FRIDA 以其强大的动态插桩能力,让我们能够像“外科手术”一样精准地窥探和修改目标应用的运行时行为。而雷电模拟…

2026/9/15 4:06:31

figma DX版技术解析:可动性、材质与精度的工程化升级

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/15 4:06:31

通用时代崛起:用兴趣组合打造不可替代的交叉优势

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/15 4:06:31

邮箱验证的正确姿势:从RFC 5322到生产环境分层策略

做开发这些年,几乎每个项目里都会遇到邮箱验证这个需求。注册表单、找回密码、订阅推送、CRM 客户录入,到处都要跟邮件地址打交道。而每当这个时候,总有人会贴出那种被反复转载的“一行正则校验邮箱”,用完了还觉得万事大吉。但作…

2026/9/15 4:06:31

构建合规隐私政策页面的技术实现与最佳实践

1. 项目概述Privacy Policy Website(隐私政策网站)是每个现代企业或独立开发者都必须重视的基础设施。作为法律合规的重要组成部分,一个专业的隐私政策页面不仅能建立用户信任,还能有效规避法律风险。不同于普通网页,隐…

2026/9/15 4:01:31

电动快换模块为何首选RS485+Modbus RTU通信方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/14 2:17:50

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/15 0:01:16

AI英语单词APP开发:自适应学习算法与移动端优化实践

1. 项目概述 作为一名在移动应用开发领域摸爬滚打多年的老手,我最近完成了一个AI英语单词APP的开发项目。这个项目将传统单词记忆方法与现代AI技术相结合,打造了一款能够智能适应不同用户学习习惯的英语学习工具。 市面上大多数单词APP都存在一个通病&a…

2026/9/15 0:01:16

Flutter与OpenHarmony结合开发手语学习APP实战

1. 项目背景与核心价值作为一名同时接触过Flutter和OpenHarmony的开发者,最近我完成了一个基于Flutter for OpenHarmony的手语学习APP实战项目。这个项目最大的特点在于实现了跨平台框架与国产操作系统深度结合的创新实践——用Flutter开发的应用能完美运行在OpenHa…

2026/9/15 0:01:16

六个月成为机器人工程师:从ROS2到SLAM的实战路径

1. 六个月的紧迫感从哪来:先搞清楚你要成为哪种机器人工程师说实话,六个月的期限并不是一个宽松的时间线。市面上任何一本正经的机器人学教材都超过五百页,ROS2的官方文档可以翻到你怀疑人生,再加上ABB、KUKA这些工业机器人厂家动…

2026/9/14 11:59:31

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/14 13:53:59

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/14 11:22:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码