The NorJS Framework
NorJS is an universal app framework with a simple scalable full-stack architecture and design.
- It’s open source. It will be multi licensed as GPL, MIT, or with a commercial license.
- It will support AngularJS, Angular, ReactJS and VueJS. See our roadmap.
- It has a long term commercial support – up to 10 years!
- It has very slight dependency footprint – only depends on NodeJS, Lodash, and few other well known and tested libraries
- The frontend client has a small bundle size – less than 1 MB!
- It has well designed architecture for implementing your apps from microservices to the frontend.
We have a proof of concept demo, and some parts of the framework have been already published in Github. The source code for our POC demo app is also available at Github. However we have not yet published the Edge Backend nor Edge Frontend which runs it.
The username for demo is
email@example.com and password
NorJS implements a full-stack Model-View-ViewModel architecture
Model refers to a data access layer. It’s simplified access to data stored in a storage of some kind, such as an entity-relational database. In NorJS it is the controller and/or services of your app. Example is available as BeWorkViewController.
View Model is the browser software which dynamically implements the view. It is also the only part of the stack which is running inside the browser. We call it as the NorJS Frontend Software. You only need to touch it if our pre-made UI components are not enough and you need to write new UI components.
Our Edge Backend software is responsible to bind these independent layers together.
Your NorJS app
Your app in NorJS is similar to Angular components, but it runs inside our Edge Backend on the server side, and has nothing to do with AngularJS nor any other frontend UI solutions.
Our demo timecard app is available at Github.
The NorJS Edge Backend Software
The Edge Backend is our software solution which runs your business level logic on the server side and communicates with the NorJS Frontend Software to provide an UI for the app.
It is written for NodeJS and supports latest EcmaScript standards natively without Babel and pre-compiling. The import/export part is implemented using the esm module. It can also run inside of an embedded OpenWRT router, which makes it perfect for edge computing and IoT solutions.
It has a design which makes it possible to write apps which do not have to know anything about specific 3rd party UI toolkits. The UI part just needs to support compatible UI data models (descriping the view), and we already provide a complete frontend software solution implementing them dynamically.
The NorJS Edge Frontend Software
The frontend part of an NorJS app is implemented by a small independent software running inside the browser. It implements user interfaces dynamically for your 3rd party apps based on our data models received from the NorJS Edge Backend or your own backend software.
This unique design makes it possible to have the complete frontend bundle size in less than 1 MB. This bundle is the only thing(*) the browser needs to load beside our dynamic data models and translations, and is very easily scalable using a CDN because it does not need to contain any of your own app specific logic.
It is also the only part of the architecture which is using AngularJS, Babel and Webpack. We also have roadmap to add implementations for Angular, ReactJS, and VueJS.
*) Of course you may want to provide your own CSS styles, media, etc.
While we also provide some solutions to build small microservices, you are free to use any APIs and microservice products supported by NodeJS in your edge backend apps to provide services for your business logic.
The project intends to fix problems we have detected in software development – especially in commercial app development, from the view point of the business owner(*).
We think software development should not require:
- Constant changes to the code of your apps because of 3rd party API changes
- Weeks of development to get your app in production
- UI specific dependency in your apps
- Doing same things over and over again (especially when you start a new project or change the company)
- Multiple different skill sets to work on your app
It’s not intended to be fun & hot new hit buzzword; Far from that, it’s just a pragmatic solution for doing cost efficient software development.
TLDR; The project was made so that we could implement complete apps in a day for Sendanor and our customers.
*) This project may not be a good match if you are paid by the hour for a 3rd party, since it will reduce your work load and so less work to do, and possibly less money. However, you may get more stuff done and more happier users and more time to focus on your own app.