Skip to content

nomagick/civ-fe

Repository files navigation

Civ-FE

Overview

Civ-FE is the frontend branch of CivKit, a TypeScript full-stack development framework created by professionals, for professionals, to build long-lasting reusable components and applications.

It aims to tackle some of the structural deficiencies plaguing the Frontend industry, filling the gap between "frontend" and general software engineering.

Web frontend developers had been mostly "new" to reference managing, and always repeatedly generate similar but new objects of specific structure. This is the root cause of frontend performance issue and a twisted mindset. Same happens to OOP, a cornerstone of software engineering, causing major deficiency in code structure and maintainability.

Civ-FE is designed to address these issues, and provide a solid foundation for building scalable and maintainable web applications.

Design Focus

  • Careful, responsible reference and data management without using external libraries

  • Solid OOP, Class hierarchy, Decorators and Dependency Injection

  • Adherence to web standards

  • Separation of template and logic

  • Surgical DOM-data binding and updating

  • Help with DOM, not hide from DOM

FAQ

Why another framework?

React: mixing template and logic, readability nightmare, superficial "functional programming", Edo-Tensei of PHP
Vue: erosion of engineering principles, mindless copycat, normalization of bad practices, marketing over substance
Angular: over engineering, arbitrary use of rxjs, KPI centric, corporate bloat

Thing in common: repelling of DOM, undermining long term career development of frontend developers.

What about Functional Programming?

In frontend the term "functional programming" means totally different than in general software engineering. It is mostly a marketing term to justify their smart-ass APIs. It's just chained collection processing and value type to reference type wrapping. That is not functional programming.

I was expecting "Immutability"

Immutability is not a magical word that makes everything better. It was needed because frameworks needs to simplify things, perhaps due to bad design in the first place. Civ-FE aligns with the browser DOM, and not pretends to be "theoretical" to look superior.

Too traditional

There's no such thing as "traditional" vs "modern". It's just solid engineering principles vs otherwise. Web developing should be part of software engineering. Every other branch in software engineering has something of its own, and "traditional" tricks applies to all of them. "Frontend" is nothing special. "Frontend" is not a somehow weakened version of software engineering and not comparable to the real thing.

What happens to state management

Sadly "State management" is also something specific in frontend. Property management is essential in software engineering. Looking at other branches of software engineering, nobody else has "state management". Developers are expected to simply manage props and variables in classes or memory references, using programming language features, just like in any other programming branches.

My productivity is lower by applying any "principles"

Real productivity comes from the long lasting and reusing of code and components. Not the speed of creating fresh demos. There's zero sense of productivity, when code is not maintainable and needs to be rewritten again and again just because there's a change in requirements or personnel.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published