V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
RelativeLayout
V2EX  ›  分享创造

分析自己手搓的的开源项目: HuntScreens.com

  •  1
     
  •   RelativeLayout ·
    daimajia · 128 天前 · 2862 次点击
    这是一个创建于 128 天前的主题,其中的信息可能已经有所发展或是发生改变。

    起因是自己喜欢追踪最新发布的产品和创业公司,但是刷 ProductHunt, IndieHackers 这些网站感觉效率太低,很不直观。

    随即零零散散花了几周时间用 NextJS 手挫了这个网站: https://huntscreens.com

    把 ProductHunt 和 IndieHackers 的产品,以及 YC 最新投资的项目都截个图,陈列出来,这样每天摸鱼的时候刷一下,扩展自己的眼界,激发自己的灵感。

    项目已经完全开源,部署可能有点难度,需要帮助可以随时戳我: https://github.com/daimajia/huntscreens

    欢迎大家拍砖提意见,有感兴趣的可以一起来开发。❤️

    12 条回复    2024-07-23 18:45:37 +08:00
    Adyi
        1
    Adyi  
       128 天前   ❤️ 1
    是不是缺个搜索
    RelativeLayout
        2
    RelativeLayout  
    OP
       128 天前
    这次用了很多新的技术栈,随手分享一下:

    最有帮助的是 https://trigger.dev (无相关利益),用了以后解决了以往让人头大的任务队列问题,非常方便,强烈推荐。

    还有就是 https://react.email/ (无相关利益),以前写邮件模板写的人头大,这个可以直接用 React 语法和 Tailwind 实现漂亮的邮件方案。后来看他们 Blog 的这篇讲他们数据增长的文章才知道,原来几个人的小团队能发展这么快!

    https://resend.com/blog/what-is-next-after-100-000-users 强烈推荐阅读。

    Drizzle ORM 和 Supabase 都很好用,也非常推荐。
    RelativeLayout
        3
    RelativeLayout  
    OP
       128 天前
    @Adyi 感谢反馈 ❤️,刚开始,后面慢慢加。持续迭代
    RelativeLayout
        4
    RelativeLayout  
    OP
       128 天前
    fix typo: 分析 -> 分享 🤣
    wbrobot
        5
    wbrobot  
       128 天前   ❤️ 1
    截图也有服务
    RelativeLayout
        6
    RelativeLayout  
    OP
       128 天前
    @wbrobot 截图服务用的 screenshotone ,有点贵,hmmm ,打算自己手搓。但是感觉现在手搓有点没必要,往后放放再说。
    xzg1993
        7
    xzg1993  
       128 天前
    感谢楼主分享,麻烦问一下 trigger 主要是用来做什么业务的呢。
    RelativeLayout
        8
    RelativeLayout  
    OP
       128 天前   ❤️ 1
    @xzg1993 任务队列,比如定时的抓取数据,定时的发送 Email 。自己实现的话,有非常多麻烦的点,比如失败重试,比如并发控制,比如队列运维。

    Trigger 一个很爽的功能是,支持帮你生成回调 URL ,这样你需要 url callback 回调的请求,不需要单独写路由,具体可以看这个代码:

    https://github.com/daimajia/huntscreens/blob/23659e3ea04b8d521590573e1f085537c18de834/jobs/ph.jobs.ts#L79

    ```javascript

    const result = await io.waitForRequest<ScreenshotResponse>(
    `call-screenshotone-${payload.uuid}`,
    async (url) => {
    await fetch(`https://api.screenshotone.com/take`, {
    method: "post",
    headers: {
    "Content-Type": "application/json",
    },
    body: JSON.stringify(getScreenshotOneParams(payload.url, payload.uuid, url)),
    })
    },
    {
    timeoutInSeconds: 300
    }
    );
    if(result.store.location) {
    await io.logger.info('Screenshot successfully:', { payload });
    await db.update(producthunt).set({webp: true}).where(eq(producthunt.uuid, payload.uuid));
    }else{
    await io.logger.error('got screenshot error', result);
    }
    return {
    payload: payload,
    result: result.store
    };

    ```

    官方文档在这里: https://trigger.dev/docs/documentation/guides/task-library#waitforrequest
    ZGame
        9
    ZGame  
       127 天前
    为什么滚动这么卡..
    RelativeLayout
        10
    RelativeLayout  
    OP
       127 天前
    @ZGame 方便说下什么设备和浏览器吗,我测测。可能是图片过多以后,内存占用太大了。
    ZGame
        11
    ZGame  
       127 天前   ❤️ 1
    @RelativeLayout chrome 跟图片应该没关系 可能要运用下虚拟滚动 不要重复创建 dom 节点?
    RelativeLayout
        12
    RelativeLayout  
    OP
       127 天前
    @ZGame 感谢建议,我这就去研究研究。如果有推荐的库就更感谢了!❤️
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3023 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:53 · PVG 22:53 · LAX 06:53 · JFK 09:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.