Motivation

The @leanup ecosystem stands for a lightweight and pure way for application development in JavaScript/TypeScript.

Goals

  • Learnability
  • Controllability
  • Universality
  • Flexibility
  • Scalability
  • Durability
  • Transparency

Differences

Stop the proprietary and transitive knowledge.

📑 We use the minimal configuration and build no overhead stuff on top of the popular tools and make every native command transparent.

🤸‍♂️ We are fast and flexible because we have chosen the minimally sensible tool composition and decoupled it in separately serviceable modules.

Maintainment

We have the following maintenance strategy:

  1. Everything is based on semantic versioning (SemVer)
  2. We use as many dependencies as necessary and as few as possible.
  3. Weekly fully automatic updates of all dependencies (minor level)*.
  4. We're only refectoring the next version.
  5. We use npm labels for version grouping (latest-1.0, canary-1.1).
  6. We are monitoring the security gaps in the latest major release.

* We release every wednesday at 04:00 CET (https://www.mkwd.net/weekly-releases-when-is-the-best-time-to-deploy-code/).

Principles

  • convention over configuration
  • pure commands under the hood
  • don't repeat yourself
  • following the generic instead of the influenced way
  • keep the dependencies always up to date

Demo's

There are some working examples:

Tools

Tool/TechnologyDescriptionStatusNoteRating
TypeScriptLanguage✔️readytypescript
WebpackBundler✔️readywebpack
SnowpackBundlerin progresswebpack
ViteBundlerin progresswebpack
ESBuildTranspiler✔️readyesbuild
BabelTranspiler✔️ready@babel/core
MochaUnit-Test-Runner✔️readymocha
ChaiAssertion✔️readychai
SinonMocking✔️readysinon
NYCCode-Coverage✔️readynyc
ESLintCode-Checker✔️readyeslint
Nightwatch.jsE2E-Test-Runner✔️readynightwatch
AllsureReport✔️ready
CucumberBDD✔️readycucumber
robotframeworkBDDwill be evaluated
StorybookDocumentationin progressstorybook
OpenAPIAPI✔️ready
GraphQLAPI✔️readygraphql
WorkboxPWA✔️readyworkbox
LernaMono-Repo✔️readylerna
Ant-DesignDesign-System✔️provedantd
BootstrapDesign-System✔️provedbootstrap
MaterialDesign-System✔️proved@material/textfield
TailwindcssDesign-System✔️provedtailwindcss
WindiCSSDesign-System✔️provedtailwindcss
Nexus IQVulnerabiliy-Gate✔️ready
LessCSS✔️readyless
SassCSS✔️readysass
PostCSSCSS✔️readysass
TSArchArchitecturein progresshint
WebhintWebhint✔️moved ***hint
TestCafeE2E-Test-Runnerwill be evaluated ****testcafe
TSLintCode-Checkerremoved **tslint
CypressE2E-Test-Runnerexcluded *cypress

* Arguments agains Cypress:

  • reinvent wheel
    • detect css selectors
    • BDD test syntax
    • principals
  • large tooling
  • a lot of binaries
  • many dependencies
  • ci integration vs selenium hub

It is difficult to keep focus with Cypress as it is more a nice tool than an effective tool. It is expected that a lot of time will be invested to justify the requirements of a project.

** TSLint is deprecated.

*** Webhint is not practical for the development of components, since component tags often have no relation to standard HTML. In addition, the webhint package alone is over 100 MB in size. I have good by using a IDE webhint plugin, like VSCode webhint.

**** TestCafe The idea that defined TestCafe architecture was that you don't really need an external driver to run end-to-end tests in the browser. That's interesting.

Last Updated: