我如何使用自动化工具构建 300 多个开源项目

2025-06-04

我如何使用自动化工具构建 300 多个开源项目

你好,程序员们,

一年前,我写了一篇关于我用于简单项目的工作流程的短文:如何使用自动化工具构建 100 多个开源应用程序。这篇文章在 Dev 上引起了一些关注(超过 2 万次阅读),并且还被翻译并发布在俄罗斯流行的平台HABR
上。 在这篇文章中,也就是整个故事的第二部分,我想再简单介绍一下我在这个令人惊叹的(自动化)领域的研发工作,正是这些工作帮助我开发了build in the last 12 months 200+ open-source starters100 多个商业产品,并被全球众多开发者使用。


谢谢!内容由App Generator提供


包含 DEMO 的候选名单,如动画演示中所示:


300 多个带有自动化工具的开源项目 - 动画演示。


最新仪表板 - Django Datta Able

管理仪表板由 AppSeed 平台在Datta Able (一个现代 Bootstrap 4 仪表板模板)之上的 Django 框架中生成。Django 代码库提供了身份验证、数据库、ORM 和部署脚本。



Django Dashboard Datta Able - 使用 Django 编码的开源管理面板。


最新的 Web 应用 - Soft UI Flask

Soft UI 设计系统是一款由 Creative-Tim 设计的现代 Bootstrap 5 UI 套件,专为喜欢大胆元素和精美网站的用户而设计。Soft UI 设计系统 Flask是 AppSeed 提供的一款简单的 Flask 入门工具,包含模块化代码库、数据库、身份验证和部署脚本。



软 UI 设计系统 - 开源 Flask 启动器。


基本思想

在使用 CodeIgniter、Laravel、Flaks、Django、Express 等不同框架编写了大约 50 个简单项目后,我发现了所有技术中一些常见的模式,并意识到我可以使用工具代替手动工作来加快我的工作速度以及跨项目的重复性任务。目前对我来说,一些耗时的任务:

做好开发准备

通常,客户选择的设计以平面 HTML 形式交付,其中包含一些预先构建的页面,远不可用于任何框架。

项目配置和结构

数据库访问、代码库结构。

通用模块

身份验证和基本助手可以操纵时间、处理文件,也许还有简单的 REST(不太常见)。

部署配置

大多数客户不知道这一部分,但 25% 的客户要求提供特定的平台。

为了优化工作流程并减少每个阶段所花费的时间,我决定将我的工作分为两部分:


1# - HTML 文件处理

为了准备生产设计并将平面 HTML 转换为可用的组件,我使用 Python 编写了一个 HTML 解析器,它看起来像一个能够执行以下任务的控制台:

  • 加载整个目录(HTML 主题)
  • 比较页面(DOM 树)并检测页脚、侧边栏、顶部菜单和常见内容区域等常见部分
  • 提取母版页(通用布局)以供日后使用
  • 提取要在 Php、Jinja、Blade 或 Nunjunks 中使用的组件。
  • 资产管理 - 图像、JS 和 CSS 的路径涵盖normalized所有从标准路径加载的文件/static/assets/{js, CSS, images}

一旦此阶段完成,通常每个设计最多需要 2 小时或更短时间,我就可以继续并将development ready文件注入已经预先构建的简单启动器中,其中包含数据库、ORM、基本帮助程序和知名技术的部署脚本:Docker、Gunicorn、HEROKU。


2# - 代码库注入

使用 Flask、Django、Nodejs/Express 和 11ty 编写的 Starter 相当简单,方便我轻松添加新功能。并非所有客户的项目都需要 Stripe,有时对于预算低、月流量低的项目,SQLite 可能就足够了。
当然,所需的模块/功能取决于项目,但我更倾向于保持极致简洁,只在必要时添加新技术和潮流元素。无论技术如何,我在所有 Starter 中都添加了以下内容:

  • 模块化代码库,超级易于维护
  • 双数据库配置:SQLite/PostgreSQL(适用于大型项目)
  • DB 工具:一个不错的 ORM 和用于 DB 迁移的工具
  • 基于会话的身份验证(登录、注册)
  • 为 Docker、Gunicorn、HEROKU 部署脚本。

此阶段包括复制第一阶段生成的文件并
主要在表单中添加基本功能:

  • CSRF 令牌(Flask、Django 等中的语法不同)
  • 使用 UI 工具包中的 CSS 类生成身份验证表单
  • 生成代码库所需的常用页面:空白页启动器、错误页面(404、500、403)。
  • 在页面标题、页脚以及有时在侧边菜单中注入品牌足迹(链接和名称)

最终产品

所有 300 多个开源项目均根据许可证(MIT、LGPL)发布,并且可以直接从 Github 用于无限制的业余爱好和商业项目。

下面我将仅介绍每个类别中的几个,完整索引请随时访问 Github代码库或访问AppSeed平台。
通常,我会从最受欢迎的几个开始。


Flask 仪表板

完整索引发布于此处:Flask Dashboards


Flask Dashboard——黑色,主仪表板屏幕。


Django 仪表板

完整索引发布于此处:Django Dashboards


Django iDashboard - 免费产品,主仪表板屏幕。


静态站点

完整索引发布于此处:静态站点


Eleventy - Html5Up Ethereal,由 AppSeed 生成的示例项目。


Flask应用程序

完整索引发布于此处:Flask Apps


Flask Pixel UI Kit - 由 AppSeed 生成的开源启动器。


Jinja 模板

此类别的产品并未production-ready使用超轻量级 Flask 代码库(没有数据库或硬依赖项)进行编码,但......基于 Jinja 与其他模板引擎(如EjsLiquidDjango 模板引擎、Blade(Laravel)或Nunjunks )之间的巨大相似性,可能会很有用。

只需进行微小修改即可完成此转换,并且该设计可用于 Nodejs(任何框架)、Laravel、CodeIgniter、11ty。


Jinja 模板 - Boomerang UI 套件


感谢您阅读这么长的文章。

自动化的工作流程帮助我更快地交付小型项目,有时一天可以完成两个,只需重复使用样板代码并将 HTML 文件解析/转换为development-ready不同框架的组件。


我的昵称是Sm​​0ke ,在TwitterDiscord上也非常活跃。请在评论区分享你的想法。

文章来源:https://dev.to/sm0ke/how-i-ve-built-300-open-source-projects-with-automation-tools-41b5
PREV
巧妙编码,而非困难编码
NEXT
如何通过添加一行 CSS 让你的 HTML 实现响应式