分钟杂货配送应用程序:挑战、技术堆栈和关键决策

blinkitzeptoswiggy instamart 等应用程序近年来出现了巨大的增长。为了探索此类应用程序的挑战和复杂性,我决定创建一个类似的应用程序来了解如何在 10 分钟或更短的时间内将杂货送到您家门口。

问题陈述

所以基本上这些只是一个供应商电子商务网站,交货速度更快,不到一天,这里要解决的主要问题是如何找到该地区的送货代理,然后将他们分配给订单,该网站的其他功能应用程序与电子商务网站相同

作为一名自由职业者,我建立了相当多的电子商务平台,提供多种服务,这也不例外。

技术堆栈

作为一名主要使用 Django 作为后端和 React 作为前端的全栈开发人员,我选择了与我过去使用 Class To Cloud 作为前端的经验相同的方式,我选择了 React Native。

对于数据库,我使用 PorstgresSQL,因为我需要一个 SQL 数据库来更好地存储我使用 Redis 的内存数据库的数据。

后端

框架:Django数据库:用于结构化数据存储的 PostgreSQL。内存数据库:用于缓存和快速数据检索的Redis。

前端

框架:React Native(利用过去的 Class To Cloud 经验)。

库存管理的数据抓取

在构建项目时,我很快就处理了电子商务部分,例如产品和类别列表,但为了真实世界的数据。我需要抓取数据,我发现了一种使用 har 文件的非常新的方法。您可以在这里阅读有关此体验的更多信息。

我使用这些数据来创建应用程序的设计,结果证明效果很好,我从 Figma 设计和现有应用程序中获得了一些灵感。原来是这样的

设计灵感

对于应用程序的设计,我结合了:

Figma 模板.来自 Blinkit 和 Zepto 等现有应用程序的灵感。

屏幕设计

主屏幕实时位置跟踪

Home screen

实时位置跟踪

我没有使用移动架构和 GPS 系统的经验,我对这个主题进行了大量研究,发现每个人都在谈论使用 Kafka 进行位置更新。它是一个事件驱动的系统,可以轻松处理所有任务,但作为一个整体架构应用程序,我不想通过添加更多的 kafka 开销来使事情变得复杂,所以我想出了自己的解决方案。

我了解 Django 的缓存系统,但在使用 redis 并使其工作之前从未使用过它,您可以在这里详细了解这方面。

虽然我不认为这个系统很棒,但作为一个副项目,如果用户群非常少,我认为这个系统就很好了。如果我找到更好的方法来做到这一点,我会更新

经验教训

技术堆栈决策:选择技术堆栈时平衡复杂性和性能的重要性。您不一定要采用每个人都建议的技术堆栈,而是选择能够完成您的用例并且您可以轻松维护的技术堆栈。

实时更新:实时更新需要跨多个系统仔细同步。我仍在研究如何使这些更新更加安全可靠,以及如果该地区没有可用的驱动程序该怎么办。

模块化架构:如果明天您需要扩展并且希望速度更快,那么将您的项目模块化,那么您应该只需要一个 ec2 实例就可以实现这一点。

未来的考虑因素

到目前为止,考虑到范围,我认为不需要在项目中添加更多内容,如果将来我决定将其作为产品发布,那么我会考虑更新到目前为止,应用程序的状态只是分散项目并将其存储到数据库中,我可以添加分析功能,还可以添加一个应用程序供管理员在手机上查看数据。使这个应用程序成为白标,任何人都可以使用这个应用程序,只需进行一些上下配置。

结论

构建 10 分钟杂货配送应用程序是一项具有挑战性但又有益的努力。通过正面解决运营和技术挑战并做出有关技术堆栈的战略决策,该应用程序为成功奠定了坚实的基础。随着应用程序的发展,它将继续发展,集成高级功能并进行扩展以满足不断增长的需求。

源代码

您可以在此处找到该应用程序的完整源代码。

与我联系

如果您有疑问或想分享自己的经验,请随时发表评论或联系我们!

以上就是分钟杂货配送应用程序:挑战、技术堆栈和关键决策的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1355674.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 19:22:57
下一篇 2025年12月13日 19:23:08

相关推荐

  • 可扩展的 Python 后端:使用 uv、Docker 和预提交构建容器化 FastAPI 应用程序:分步指南

    在当今容器化部署的世界中,高效构建和部署后端应用程序至关重要。 fastapi 已成为创建快速、高性能 api 的最流行的 python 框架之一。为了管理依赖关系,我们还可以利用 uv(包管理器)作为一个方便的工具。 紫外线 我假设您之前已经在本地安装了 uv 和 docker。 现在,我们可以通…

    2025年12月13日
    000
  • Python 行业模型

    Python 在各行各业的应用建模 Python 凭借其强大的功能和易用性,已成为构建和部署行业特定模型的热门编程语言。金融、医疗、电商和制造业等众多领域都利用 Python 解决实际问题,提升效率。其灵活性和可扩展性,加上丰富的库和框架支持,使其成为数据分析、机器学习、自动化和模拟的理想工具。 P…

    2025年12月13日
    000
  • 确保芹菜的公平加工 – 第二部分

    本文在上一篇有关公平处理的文章的基础上探讨了 celery 中的任务优先级。任务优先级提供了一种通过根据自定义标准为任务分配不同优先级来增强后台处理的公平性和效率的方法。 为什么任务级优先级? 任务级优先级提供对任务执行的细粒度控制,无需复杂的实现。通过将所有任务提交到具有指定优先级值的单个队列,工…

    2025年12月13日
    000
  • python 爬虫队列怎么调度

    在 Python 中,调度爬虫队列的方法包括:1. 使用管道,通过管道组件将请求添加到队列;2. 使用外部数据库(如 Redis 或 MongoDB)存储队列请求,实现分布式处理;3. 使用第三方库(如 RQ 或 Celery),提供更高级的功能。 Python 爬虫队列调度 在爬虫开发中,调度队列…

    2025年12月13日
    000
  • 最大限度地提高 FastAPI 效率:使用 py-cachify 极快地实现缓存和锁定

    在快节奏的 web 开发世界中,性能至关重要。高效的缓存机制可以通过减少冗余计算和数据库查询来显着增强 api 的响应能力。在本文中,我们将探讨如何使用 sqlmodel 和 redis 将 py-cachify 库集成到 fastapi 应用程序中,以实现缓存和并发控制。 目录: 简介项目设置使用…

    2025年12月13日
    000
  • Mastering Async Context Managers: Boost Your Python Code&#s Performance

    python 中的异步上下文管理器是处理并发应用程序中资源的游戏规则改变者。它们就像常规的上下文管理器,但有一点不同 – 它们可以与异步代码无缝协作。 让我们从基础开始。要创建异步上下文管理器,我们需要实现两个特殊方法:__aenter__ 和 __aexit__。这些是我们在常规上下文…

    2025年12月13日
    000
  • Redis如何更新值而不修改时间戳?

    如何在 redis 中更新值而不更新时间? 在 redis 中,当使用 set 命令更新键值时,默认情况下也会更新键的时间戳。然而,有时我们只需要更新值,而不需要修改时间戳。这时,可以使用 set keepttl 命令。 set keepttl 命令 set keepttl 命令的语法如下: SET…

    2025年12月13日
    000
  • Redis如何只更新值而不更新过期时间?

    redis中仅更新值而不更新时间 在使用redis时,您可能会遇到需要更新键的值,但同时又希望保留现有过期时间的场景。本文将介绍redis中实现这一操作的方法。 解决方案 要仅更新值不更新时间,可以使用set命令并指定keepttl选项。该选项将更新键的值,同时保持现有的ttl(生存时间)。 命令语…

    2025年12月13日
    000
  • LangGraph 状态机:管理生产中的复杂代理任务流

    什么是 langgraph? langgraph是专为llm应用程序设计的工作流编排框架。其核心原则是: 将复杂任务分解为状态和转换管理状态转换逻辑任务执行过程中各种异常的处理 想想购物:浏览→添加到购物车→结账→付款。 langgraph 帮助我们有效地管理此类工作流程。 核心概念 1. 国家 状…

    2025年12月13日
    000
  • Python本地缓存如何实现TTL功能?

    python 本地实现带有 ttl 的缓存 在 python 中实现带有 ttl(生存时间)的本地缓存时,可以使用 cachetools 库。 cachetools 简介 cachetools 是一个用于实现缓存功能的 python 库。它提供了各种缓存策略,包括带 ttl 的缓存。 立即学习“Py…

    2025年12月13日
    000
  • 零售店的需求预测和库存管理 – SARIMA 模型

    零售店每天处理大量库存,使得库存监控和管理变得更加繁琐。传统的零售商店库存管理方法繁琐,监控、跟踪和管理效率低下。这就需要一个强大的数字化库存管理系统,该系统可以无缝执行零售商店库存分析,以减少手头库存,并以更少的体力劳动实现更多库存销售。 本文展示了如何使用时间序列机器学习模型 sarima 来高…

    2025年12月13日
    000
  • Redis-Py连接池:如何提高Redis连接效率?

    redis-py 与连接池 在 redis-py 中,默认情况下并未启用连接池。 当 redis-py 与后端框架集成时,每个线程都会创建一个独立的 tcp 连接以与 redis 服务器通信。当线程结束时,该连接也会被销毁。 然而,redis-py 提供了一个 connectionpool 类,它可…

    2025年12月13日
    000
  • 确保芹菜的公平加工——第一部分

    如果您熟悉 python,您很可能听说过 celery。它通常是异步处理任务的首选,例如图像处理或发送电子邮件。 与一些人交谈时,我开始注意到许多开发人员一开始都觉得 celery 令人印象深刻,但随着他们的项目规模和复杂性的增加,他们的兴奋开始消退。虽然有些人出于正当原因放弃了 celery,但其…

    2025年12月13日
    000
  • Django 如何实现一次数据查询,全局网站通用?

    django 实现数据查询通用化 在网站开发中,经常需要从数据库中查询数据,并将其渲染到各个页面中。然而,如果每次页面切换都需要重新查询一次,会严重影响网站性能。那么,如何实现一次查询,全局网站通用? 解决方案:缓存 解决这个问题的关键在于使用缓存。缓存是一种数据存储机制,用于存储经常使用的结果,以…

    2025年12月13日
    000
  • FastAPI中间件如何同步执行?

    将 fastapi 中间件转换为同步模式 当使用 fastapi 时,中间件函数通常需要标记为异步(async)。然而,某些情况下,你可能需要将同步代码集成到中间件中。本文将探讨如何将中间件转换为同步模式。 首先,让我们了解一下中间件的本质。中间件是一种允许你在请求处理的各个阶段(如请求之前或响应之…

    2025年12月13日
    000
  • JWT多账号登录:如何让旧令牌失效?

    JWT多账号登录:旧令牌失效机制 在JWT(JSON Web Token)多账号登录场景中,当用户频繁登录并生成多个令牌时,如何让旧令牌失效是一个常见问题。 回答: JWT的设计理念是无状态的,这意味着服务端不会主动维护令牌的状态。因此,无法直接通过JWT本身实现旧令牌失效。 要实现旧令牌失效,需要…

    2025年12月13日
    000
  • 人工智能民主化:为所有人释放人工智能的力量

    人工智能民主化:为所有人释放人工智能的力量 人工智能(AI)长期以来被视为大公司和专业技术专家保留的工具。然而,人工智能民主化的概念正在改变这种说法,使人工智能技术能够为更广泛的受众所使用,包括中小型企业、个人开发者,甚至非技术用户。这种转变不仅重塑了行业,还引发了有关道德、可及性和技术未来的重要对…

    2025年12月13日
    000
  • 爬虫开发中如何避免数据丢失:请求失败如何自动排队和重试?

    请求重试和排队 在爬虫开发过程中,由于网络波动或其他原因,请求可能会失败。为了提高程序的鲁棒性,需要建立有效的请求失败处理机制,以保证不会遗漏数据。 一种可行的解决方案是使用队列和重试机制。具体实现如下: 使用一个队列(如 redis list)来存储请求失败的 url。建立一个任务处理线程,该线程…

    2025年12月13日
    000
  • SQLRAG: Transforming Database Interactions with Natural Language and LLMs

    在数据驱动的世界中,速度和洞察力的可访问性至关重要,sqlrag 带来了一种与数据库交互的全新方法。通过利用大型语言模型 (llm) 的强大功能,sqlrag 使用户能够使用自然语言查询数据库,从而无需深厚的 sql 知识。在这篇文章中,我们将深入探讨 sqlrag 的工作原理、其主要功能,以及它如…

    2025年12月13日
    000
  • python爬虫分布式怎么构造

    是的,分布式爬虫构造可以通过将爬取任务分配给多个分布式节点来提高效率和可扩展性。构造分布式爬虫的步骤包括:任务管理:分配和监控爬取任务。分布式存储:存储任务状态、结果和中间数据。分布式节点:执行爬取任务。进度监控:跟踪爬虫进度和节点状态。数据合并:整合爬取结果。好处包括:可扩展性、效率、可靠性、灵活…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信