您好,谢谢您检查我的DEV x Redis Hackathon提交!
如果您没有机会,请查看本系列的Part 1以获取其他上下文。
我提交的概述
为了提交我的提交,我制作了meatballs.live,这是一个自动推荐网络和Web应用程序,用于在Redis Stack和Hacker News的社交新闻中发现有趣的对话。
在社交新闻方面,我发现了评论中深处的最佳见解。但是,这非常耗时,有时我会回归到漫不经心的滚动。
我构建了meatballs.live从社交新闻平台API中生成和存档的每日消化(称为收藏)。这些日常收藏是对最吸引人的评论和相关故事的建议。
像印刷的报纸或照相带一样,这些收藏是静态的且不可变的。回到不断滚动不在上下文和看不见的时代,这很友善。
但是,社交新闻中的所有事情并非一次发生。如果没有长期观察和建立关系,这是一种时间的时间体验。
(我是否提到了现场评论流,它显示了黑客新闻的评论,还提供了与其他肉丸聊天的地方。活着的读者?!)
Redis Stack和Hacker News API非常适合这一挑战。
我有三个主要的设计目标:
- 尽可能多地学习和利用Redis堆栈的多模型功能
- 利用Redis堆栈消费,过程,筛选并生成大数据的见解
- 组合1和2,为桌面和移动设备创建快速而引人注目的用户体验
要应对挑战,meatballs.live是三个连接的开源项目:
- app / ui
- API和使用Typescript和Next.js制造的活泼的Web应用程序,仅消耗基于缓存和套接字的实时数据(此项目)
- 作业服务器
- 节点服务器称为 notballs.live-jobs(casper)负责对 app 的Ingest Service APIS进行预定的加权调用
- 流服务器
- 名为肉丸的节点服务器。Live-stream(Kodama)负责通过Web插座处理Redis Pub/Sub Events
建筑学
Jobs Server (Casper)将 App 的services APIs to ingest,过程和路由源数据从Hacker News(Official | Algolia)称为主云REDIS数据库。
摄入数据保存到JSON,graph,time series和Cache(请参见以下各节中的详细信息)。
App 的前端UI通过Web插座(Socket.io)连接到流服务器(Kodama)。 流服务器 subscribes to Redis channels用于存在,新的评论和前页面统计信息,并发出已连接的事件 app 客户端。 流服务器也会在客户端连接和断开连接时发布到存在频道。
在新的故事活动中, jobs服务器 publishes更新前页统计频道,该频道是从 stream server 发送到连接应用程序的事件客户。在 App 用户的新评论中, App 前端致电受保护的koude0 API发布到新评论频道。
App 必须签名用户发送新的评论。为了进行身份验证, app 使用了NextAuth,GitHub和Upstash的组合。是的,即使在后端上的Auth也可以持续到Redis数据库!
至少24小时的摄入数据后, app 的服务可以调用API for generating collections。 generate processor结合了时间序列,图形和JSON查询和搜索来创建一天的JSON->字符串缓存(9个故事)和每个单独的故事集。
这是一个现场示例:
- 收藏页:https://www.meatballs.live/c/2022/8/27/
- 收集页:https://www.meatballs.live/c/2022/8/27/ask-hn-how-can-i-come-to-peace-with-the-years-i-wasted-on-pointless-things-9o2r6s3o/
访问集合或收集页面时, app 利用koude1检索和解析相应的缓存数据,然后将其发送给用户。
由Redis Cloud和Vercel主持,故事收藏和收集页渲染介于1-5毫秒之间!
有关完整的详细信息(数据模型,命令示例,本地安装指南),我建议您查看冗长的项目README。
这是图模型的偷偷摸摸的峰!
提交类别
古怪的通配符
使用的语言
ts/node.js
链接到代码
meatballs.live是3个开源(MIT)项目。 README包括一个本地安装指南,以配置和连接这些项目。
肉丸。live app/ui
ritsuke / meatballs.live
用Redis Stack + Hacker News将您的社交新闻经历重新混合
meatballs.live
meatballs is an automated recommendation network and web app for discovering interesting conversations across social news.
Live deployment: https://www.meatballs.live
当前网络支持Hacker News,并计划了更多集成。
通过摄入,连接和分析大量结构化,时间数据,肉丸(及相关服务)能够加权和每天产生高层故事的收集,并对评论部分有偏见。 p>
概述视频
这是一个简短的视频,解释了该项目及其使用方式:
它如何工作
为DEV.to x Redis Hackathon创建了肉丸,具有三个主要的设计目标:
- 尽可能多地学习和利用Redis堆栈的多模型功能
- 利用Redis堆栈消费,过程,筛选并生成大数据的见解
- 组合1和2,为桌面和移动设备创建快速而引人注目的用户体验
要应对挑战,肉丸是三个开源项目:
- * -
肉丸。Live Jobs Server(Casper)
meatballs.live-jobs (JOBS SERVER; casper)
How to run it locally
Prerequisites
假设您已经从meatballs.live (APP) local installation guide到达这里...
本地安装
- 克隆这个仓库
- 在项目文件夹中运行
yarn
以安装依赖项 - 将
.env.sample
复制到.env
并填写您的唯一值,遵循以下步骤:
INGEST_API_KEY
-
Generate API键,然后将并粘贴到您的
.env
文件中;这可以是任何东西,但应该保持私密
接下来,将剩余的复制并替换为以下(请随时调整):
肉丸。Live流服务器(Kodama)
meatballs.live-stream (STREAM SERVER; kodama)
How to run it locally
Prerequisites
假设您已经从meatballs.live (APP) local installation guide到达这里...
本地安装
- 克隆这个仓库
- 在项目文件夹中运行
yarn
以安装依赖项 - 将
.env.sample
复制到.env
并填写您的唯一值,遵循以下步骤:
PORT
- 输入您希望流服务器在开发过程中使用的端口
REDIS_DB_URL
- 这应该反映肉丸所用的价值。Live(App)开发环境
继续Meatballs.live(APP)安装
运行yarn dev
以启动开发服务器,尽管它会很安静,直到应用程序和作业服务器运行为止。
从您的.env
文件复制PORT
值,然后继续使用APP's local installation guide。
部署
尽管肉丸使用Railway自动部署流服务器(KODAMA),但您可以在node.js-capabile的任何主机上运行服务器。
其他资源 /信息
没有开源社区的基本努力,meatballs.live是不可能的。
依赖项:
- app / ui < / strong> package.json
- 工作服务器 package.json
- 流服务器 package.json
托管:
- 该项目使用2 redis 数据库:
- 主要和多模型;由Redis Cloud托管(JSON,GRAPH,时间序列,Pub/sub,Cache)
- auth;由Upstash主持
- app / ui < / strong>由Vercel托管
- 作业服务器和流服务器服务器由Railway托管
- 查看Redis OM,客户库,用于与Redis合作作为多模型数据库。
- 使用RedisInsight在Redis中可视化您的数据。
- 注册free Redis database。
与Part 1一样,我想分享一些我一直在听灵感的音乐。
感谢您的阅读!