How I’ve built 300+ open-source projects with automation tools
Tags: webdev, automation, opensource, appseed
Published: 2020-09-19 15:44:21

---
title: How I’ve built 300+ open-source projects with automation tools
published: true
description: Using automation tools and boilerplate code I've built and released under the MIT License more than 300 starters
tags: webdev, automation, opensource, appseed
cover_image: https://raw.githubusercontent.com/app-generator/static/master/blog/generate-300-oss-starters-with-automation-tools.jpg
---
Hello Coders, 

One year ago I wrote a short article about my workflow used for simple projects: [How I’ve built 100+ open-source apps with automation tools](https://dev.to/sm0ke/100-open-source-apps-built-with-automation-tools-3jmj). The article got some attention here on Dev (20k+ views) and also was translated and published on [HABR](https://habr.com/ru/company/plarium/blog/469829/), a popular Russian platform. 
In this article, the PART-II of the whole story, I would like to say just a few more words about my R&D work on this amazing (automation) field that helped me to `build in the last 12 months 200+ open-source starters` plus 100 commercial products used by many developers across the globe. 

---

> Thank you! **Content provided by [App Generator](https://appseed.us)**.

---

**A shortlist with DEMOs**, as they appear in the animated presentation:

- [Django Datta Able](https://appseed.us/admin-dashboards/django-datta-able) - A simple Flask Dashboard
- [Eleventy Ethereal](https://appseed.us/static-site/eleventy-html5up-ethereal) - Free **11ty** starter 
- [Flask Pixel Lite](https://appseed.us/apps/flask-apps/flask-pixel-bootstrap-uikit) - Multipurpose app with accessibility-first UI
- [Django Dashboard Argon](https://appseed.us/admin-dashboards/django-dashboard-argon) - a minimal Django dashboard
- [Flask Webpixels](https://appseed.us/apps/flask-apps/flask-illustrations-webpixels) - Free app with nice illustrations
- [Django Corona Admin](https://appseed.us/admin-dashboards/django-dashboard-corona-dark) - Dark-soul, COVID-19 free dashboard

---

![300+ open-source projects with automation tools - Animated Demo.](https://raw.githubusercontent.com/app-generator/static/master/blog/350-oss-apps-built-with-tools-intro.gif)

---

### Latest Dashboard - [Django Datta Able](https://appseed.us/admin-dashboards/django-datta-able)

Admin Dashboard generated by the AppSeed platform in Django Framework on top of **Datta Able**, a modern Bootstrap 4 dashboard template. The Django codebase is provided with authentication, database, ORM, and deployment scripts.

---

- [Django Datta Able](https://appseed.us/admin-dashboards/django-datta-able) - product page
- [Django Datta Able Demo](https://django-datta-able.appseed-srv1.com/) - LIVE Deployment

---

![Django Dashboard Datta Able - Open-Source Admin Panel Coded in Django.](https://raw.githubusercontent.com/app-generator/django-datta-able/master/media/django-dashboard-dattaable-screen.png)

---

### Latest Web App - [Soft UI Flask](https://appseed.us/product/flask-soft-ui-design-system)

[Soft UI Design System](https://appseed.us/ui-kit/soft-ui-design-system) is a modern Bootstrap 5 UI Kit designed by Creative-Tim designed for those who like bold elements and beautiful websites. *Soft UI Design System Flask*  is a simple Flask starter provided by AppSeed with a modular codebase, database, authentication, and deployment scripts.

---

- [Soft UI Flask](https://appseed.us/product/flask-soft-ui-design-system) - product page
- [Soft UI Flask - Demo](https://flask-soft-ui-free.appseed-srv1.com/) - LIVE Deployment

---

![Soft UI Design System - Open-source Flask starter.](https://raw.githubusercontent.com/app-generator/soft-ui-design-system/main/media/soft-ui-design-system-intro.gif)

---

## The basic idea

After coding ~50 simple projects in different frameworks like CodeIgniter, Laravel, Flaks, Django, Express I saw a few common patterns across all technologies and realize that I can use tools instead of manual work to speed up a little bit my work and the repetitive tasks across projects. Some time-consuming tasks for me at that moment:

**Prepare the design to be development-ready**

Usually, the design chosen by the client is delivered in flat HTML form with a few pre-built pages, quite far away to be used in any framework. 

**Project configuration and structure** 

Database access, codebase structure. 

**Common modules**

Authentication and basic helpers to manipulate time, working with files, a simple REST maybe (not so often).

**Deployment Configuration**

Most of the clients were not aware of this part but 25% ask for specific platforms. 

To optimize the workflow and spend less time on each phase I decided to split my work in two:

---

## 1# - HTML files processing

To prepare the design for production and transform the flat HTML to usable components I wrote an HTML parser using Python that looks like a console able to perform tasks like:

- Load an entire directory (HTML theme) 
- Compare pages (DOM Tree) and detect the common parts like footer, sidebar, top menu, and common content area
- Extract master pages (common layouts) for later use
- Extract components to be used in Php, Jinja, Blade, or Nunjunks.
- Assets management - paths for images, JS, and CSS are `normalized` across all files to be loaded from standard paths
 `/static/assets/{js, CSS, images}`. 

Once this phase is complete, usually takes max 2h or less per design, I can move forward and inject the `development ready` files into simple starters already pre-build with the database, ORM, basic helpers, and deployment scripts for well-known technologies: Docker, Gunicorn, HEROKU.

---

## 2# - Codebase Injection

The starters coded in Flask, Django, Nodejs/Express, and 11ty are fairly simple, just to help me to add new features with ease. Not all clients require Stripe in their projects and sometimes SQLite might be enough for a low budget project with low monthly traffic. 
Of course, the required modules/features depends on the project, but I prefer to keep things super simple and adding new & tech trendy stuff only when is the case. What I put in all starters despite the technology:

- Modular codebase for a super easy maintenance
- Dual DB configuration: SQLite/PostgreSQL (for heavy projects)
- DB Tools: a decent ORM and tools for DB Migration
- Session-based authentication (login, register)
- Deploy scripts for Docker, Gunicorn, HEROKU.

This phase consists of copy the files produced in phase #1 and 
add basic functionalities in forms mostly:

- CSRF tokens (syntax is different in Flask, Django, etc ..)
- Generate authentication forms using CSS classes used in the UI kit
- Generate common pages required by the codebase: blank page starter, Error pages (404, 500, 403).
- Inject brand footprint (links & name) in page titles, footer and sometimes in sidemenu 

---

## Final products

All 300+ open-source projects are released under permissive licenses (MIT, LGPL) and cand be used for unlimited hobby & commercial projects directly from Github. 

I will present bellow only a few from each category, for full index feel free to access the Github [repository](https://github.com/app-generator) or visit the [AppSeed](https://appseed.us/?ref=dev) platform.
As a rule, I will start with the most popular ones.  

---

### [Flask Dashboards](https://appseed.us/admin-dashboards/flask)

> The full index published here: [Flask Dashboards](https://appseed.us/admin-dashboards/flask)

- [Flask Dashboard - Datta Able](https://appseed.us/admin-dashboards/flask-datta-able) - product page
- [Flask Dashboard - Black](https://appseed.us/admin-dashboards/flask-dashboard-black) - product page
- [Flask Dashboard - Volt](https://appseed.us/admin-dashboards/flask-dashboard-volt) - product page
- [Flask - Star Admin](https://appseed.us/admin-dashboards/flask-star-admin) - product page

---

![Flask Dashboard - Black, main dashboard screen.](https://raw.githubusercontent.com/app-generator/flask-black-dashboard/master/media/flask-black-dashboard-screen.png)

---

### [Django Dashboards](https://appseed.us/admin-dashboards/django)

> The full index published here: [Django Dashboards](https://appseed.us/admin-dashboards/django)

- [Django Dashboard - Volt](https://appseed.us/admin-dashboards/django-dashboard-volt) - product page
- [Django Material](https://appseed.us/admin-dashboards/django-dashboard-material) - product page
- [Django Light Design](https://appseed.us/admin-dashboards/django-dashboard-light) - product page
- [Django Atlantis Dark](https://appseed.us/admin-dashboards/django-dashboard-atlantis-dark) - product page
- [Django Star Admin](https://appseed.us/admin-dashboards/django-star-admin) - product page

---

![Django iDashboard - Free product, main dashboard screen.](https://raw.githubusercontent.com/app-generator/django-idashboard-free/master/media/django-idashboard-free-screen.png)

---

### [Static Sites](https://appseed.us/static-site)

> The full index published here: [Static Sites](https://appseed.us/static-site)

- [Eleventy - Html5Up Ethereal](https://appseed.us/static-site/eleventy-html5up-ethereal) - product page
- [Eleventy - Html5Up Paradigm](https://appseed.us/static-site/eleventy-html5up-paradigm) - product page
- [Eleventy - Html5Up Highlights](https://appseed.us/static-site/eleventy-html5up-highlights) - product page

---

![Eleventy - Html5Up Ethereal, sample project generated by AppSeed.](https://raw.githubusercontent.com/app-generator/eleventy-html5up-ethereal/master/media/eleventy-html5up-ethereal-screen.png)

---

### [Flask Apps](https://appseed.us/apps/flask-apps)

> The full index published here: [Flask Apps](https://appseed.us/apps/flask-apps)

- [Flask Pixel UI Kit](https://appseed.us/apps/flask-apps/flask-pixel-bootstrap-uikit) - product page
- [Flask IraDesign](https://appseed.us/apps/flask-apps/flask-illustrations-iradesign) - product page
- [Flask Paper Kit](https://appseed.us/apps/flask-apps/flask-paper-kit) - product page
- [Flask Webpixels](https://appseed.us/apps/flask-apps/flask-illustrations-webpixels) - product page

---

![Flask Pixel UI Kit - Open-source starter generated by AppSeed.](https://raw.githubusercontent.com/app-generator/flask-pixel-bootstrap-uikit/master/media/flask-pixel-bootstrap-uikit-screen.png)

---

### [Jinja Templates](https://appseed.us/jinja-template)

The products from this category are not so `production-ready` being coded in a super lightweight Flask codebase (no database or hard dependencies) but .. might be useful based on the huge similarities between Jinja and other template engines like [Ejs](https://ejs.co/), [Liquid](https://shopify.github.io/liquid/), [Django template](https://docs.djangoproject.com/en/3.1/ref/templates/language/) engine, [Blade](https://laravel.com/docs/8.x/blade) (Laravel) or [Nunjunks](https://mozilla.github.io/nunjucks/).

This transition can be done with minor modifications and the design can be used in Nodejs (any Framework), Laravel, CodeIgniter, 11ty.

- [Jinja Quick UI](https://github.com/app-generator/theme-jinja2-quick-uikit) (sources) - [LIVE Demo](https://github.com/app-generator/theme-jinja2-quick-uikit)
- [Jinja Paper Dashboard](https://github.com/app-generator/jinja-template-paper-dashboard) (sources) - [LIVE Demo](https://jinja-template-paper-dashboard.appseed.us/)
- [Jinja Sb Admin](https://github.com/app-generator/jinja-template-sb-admin) (sources) - [LIVE Demo](https://jinja-template-sb-admin.appseed.us/)
- [Jinja Boomerang UI](https://github.com/app-generator/jinja-template-boomerang-uikit) (sources) - [LIVE Demo](https://jinja-template-boomerang-uikit.appseed.us/)
- [Jinja AdminT](https://github.com/app-generator/theme-jinja2-admint) (sources) - [LIVE Demo](https://theme-jinja2-admint.appseed.us/)

---

![Jinja Template - Boomerang UI Kit by ](https://raw.githubusercontent.com/app-generator/jinja-template-boomerang-uikit/master/media/jinja-template-boomerang-uikit-screen.png)

---

> Thank you for reading such a long article.

The automated workflow helped me to deliver much faster small projects, sometimes two in a single day, just by reusing boilerplate code and parsing/converting the HTML files into `development-ready` components for different frameworks.

--- 

My (nick)name is **Sm0ke** and I'm pretty active also on [Twitter](https://twitter.com/Sm0keDev) and [Discord](Sm0ke#7120). Let me know your thoughts in the comments.