Factor is like a "framework," but takes things a few steps further by adding a CMS-like post system and dashboard. This allows people to create much more useful plugins and themes, which leverage these toolsets.
Factor's unique focus is on helping you build web apps perform better in every metric: functionality, performance, development time needed, etc...
Why Factor? —
Most developers goal is to ship production apps. But today, most developers spend their time doing painful rewrites, dealing with unforeseen complications and getting stuck with vendor lock-in. All this inevitably results in delays, wasted money and ultimately failure.
We faced this problem, and worked years to create a decent app architecture to avoid these problems. After many writes and rewrites this is what resulted in Factor.
It seems that many modern devs are facing similar issues and so we've open-sourced it in the hopes that it may be useful to you.
Use Factor if you want to:
- Avoid writing code that has been written countless times already
- Minimize vendor lock-in
- Give your apps a rich CMS and eCommerce architecture
- Use best practices
You can think of Factor as a system that brings together the following:
- A Dashboard, CMS and eCommerce Features
- A Core Node/VueJS Framework
- An Drop-In Extensions System
- Build System and CLI for managing your app
Dashboard and Page/Post Management System (optional)
- Similar to WordPress' admin
- User management / Authentication
- Real time site editing (no builds and rebuilds)
Comprehensive VueJS/NodeJS framework
- Server-side-rendered (SSR) for Performance and SEO
- Routes(vue-router), Stores(vuex), CLI, Builds
- Themes system for quickly creating beautiful apps
- Plugins to quickly add and extend functionality
Factor, at its heart, is a system that coordinates different developer tools and environments to create a consistent and simple development experience.
The purpose of the this is to abstract away all the configuration, bundling, file generation, etc.. so you can focus on just building your app.
Parts of the build system include:
- CLI (Node)
- Local development server
- Webpack bundling system
- Extension and filter system
In many platforms, Themes are critical in developing apps. However, theming is typically neglected in JS frameworks. With Factor this isn't the case.
The scope of a Factor theme is to give you an advanced starting point for your app and it can save you a ton of time. Themes add or include extensions of their own, and include useful templates and UI tools.
The theme structure is the same as your application structure. This means you can use a theme as starting point or you can inherit from it by adding it in your factor-config file and as a dependency. Inheriting has the added benefit of the theme being 'updateable' which is not possible once you've edited it.
Similar to WordPress, Factor extensions implement common patterns that most web apps benefits from which we call "CMS" features. These include:
- User Dashboard
- Posts and Post Management (in Factor, and similar to WordPress, everything is a post - pages, users, docs, etc... )
- Admin Dashboard
- Basic Data and Image Storage
These features build on top of Factor's core framework and build system and we believe are useful to wide array of projects.
Ready For More?
We’ve briefly introduced the most basic features of Factor - the rest of this guide will cover them and other advanced features with much finer details, so let's dig in.