sandwicher/laravel-app

一个测试一些开发概念的工程项目 - Laravel 应用

1.0.3 2021-05-09 23:25 UTC

This package is auto-updated.

Last update: 2024-09-11 22:28:13 UTC


README

CircleCI Latest Stable Version Total Downloads License

索引

摘要

一个应用某些工程和开发概念的证明概念项目。

这个项目由一个简单的应用组成,将使任何三明治爱好者更容易生活。目前,任何想要从他们最喜欢的当地三明治店点三明治的人都需要写下他们的首选选择,当有一大群人时,这个应用可能会在管理您群体的餐点和订单时派上用场。

项目设置

  • 为了设置/运行项目,只需要安装 dockerdocker compose
  • 项目包含 Laravel Sail 脚本以处理 docker 环境,以及容器内的命令执行,因此它将成为您在容器内运行任何内容的最佳伴侣。
  • 要本地配置项目,您可以坐下来,运行 ./sail setup-project 并等待一切配置完成。如果命令执行过程中没有出现任何问题,到命令结束时,一切应该已经配置好了。
  • 如果您希望分别运行命令,也可以按照以下步骤操作
    • 在运行 ./sail 命令以设置项目或 docker 环境时,将自动生成 .env 文件,但如果您想手动操作,请转到项目根目录并运行 cp .env.example .env。如果您不手动操作,默认的 .env 文件将在某个时候从 .env-example 文件自动生成,所以这里没有问题。
    • 要运行任何命令,只需运行 ./sail <command_you_want_to_run>。要启动项目,请运行 ./sail up -d。这将设置 docker 环境,并让所有容器运行。
    • 运行 ./sail composer install 以安装所有 PHP 依赖项
    • 运行 ./sail npm install && ./sail npm run dev (对于生产环境使用 ./sail npm run prod)以安装前端 Node.js 依赖项
    • 最后,为了使应用程序完全配置,您需要运行 ./sail artisan migrate,这将运行所有数据库迁移。
    • 就是这样。现在您应该已经设置好了。
  • 到目前为止,您的 .env 文件已经之前生成了,如果您想进行任何更改,只需简单填写您想更改的 env 变量,例如数据库名称和凭据(这些是预定义的)然后重新启动您的 docker 环境 ./sail down -v && ./sail build && ./sail up -d
  • 要运行所有应用程序测试(unitacceptance),请运行 ./sail composer test

业务逻辑描述/需求

  • 目前,任何想要从他们最喜欢的当地三明治店点三明治的人都需要写下他们的首选选择

  • 我们需要一个由数据库支持的应用程序来管理这个(非常复杂)的过程。

  • 管理员应该能够添加用户(将要吃三明治的人,我们可以称他们为消费者)。

  • 管理员应该为新的餐点打开“注册”。这样,人们就不需要每次都单独点餐了。

  • 餐点有一个状态,管理员可以控制(开启和关闭)。

  • 同一时间只能有一个餐点处于“开启”状态。只有在开启的餐点上,用户才能注册他们的选择。

  • 餐点还有一个日期(餐点食用的日期)

  • 餐点还应有一个唯一的链接。这个链接可以在移动设备上打开(无需密码)以查看当前订单。

  • 每个用户都应该有一个唯一的代码,他可以在特定页面上登录。在该页面上,用户可以挑选

    • 面包种类(下拉列表,从数据库中选择)
    • 面包尺寸(下拉列表,15或30厘米)
    • 是否需要烘烤
    • 三明治口味(从数据库中选择,例如鸡肉玉米卷)
    • 额外配料(额外培根、双层肉或额外奶酪)
    • 你想要在三明治中加入哪些蔬菜(下拉列表,数据库中的多个可能值)
    • 酱料(从数据库中选择)
    • 然后用户可以放置他的订单(在当前的开启订单上)。
  • 用户必须能够编辑他的订单(但只有在订单/餐点仍然开启时才能编辑)。

  • 当用户通过他的唯一链接登录时,他应该能够查看他之前的订单。

  • 较低优先级/可选

    • 每当用户需要下新订单时,他的之前的订单会自动填充在表单中
    • 在管理员的唯一链接上,应该跟踪并使所有用户的移动手机的GPS位置可用(在Google地图上)
    • 用户应该能够对他们的用餐体验进行评分,以便他们可以看到是否应该再次订购相同的餐点
    • 在“管理员移动页面”上的一个按钮可以按下,通过MessageBird提前呼叫三明治餐厅,告知有大订单即将到来

技术细节

架构

此应用程序遵循Laravel标准架构,该架构是MVC导向的。目标是将业务逻辑与应用程序解耦,以便可以轻松地在任何应用程序、任何框架中使用。带有域的存储库可以在这里找到。

除了将域与应用程序解耦之外,另一个目标是将应用程序从前端和后端解耦,以便任何类型的客户端都可以与我们的后端通信,这将是一个简单的API。

该应用程序目前正在重构,以便开始使用域来处理我们应用程序的业务用例。

Composer

此项目(包括Laravel应用程序和域)目前正在Packagist上发布,因此可以轻松地通过composer导入到任何项目中。

CI/CD

项目已集成到CircleCI中,以运行我们的测试流水线(链接在上)。

目前它只运行测试,但作为下一步,在所有测试通过后,应该自动在存储库中创建一个带有代码的版本,以避免手动执行此过程

下一步

  • 目前该应用程序非常“Laravel导向”,还需要进行一些重构和改进。
  • 如前所述,改进此应用程序的下一步将是以下步骤
    • 为应用程序构建验收测试,以便覆盖所有流程,并使用Gherkin语言编写业务可读的步骤(项目已经设置了Behat的基础结构来构建这些验收测试)
    • 将框架与应用程序域解耦(域开发已经在这里进行)
    • 在完成域开发后,在应用程序中使用最新的域版本,以避免业务逻辑与应用程序和框架/工具耦合
    • 在CircleCI中自动化GitHub仓库发布创建过程,以便每次管道运行且所有测试通过时自动生成新的发布
    • 通过拥有一个完全独立的、与后端API通信的前端来解耦前端和后端,该API为前端提供所需的功能和数据