Build faster. Own the stack.
Business software without unnecessary layers.
Total.js combines a fast Node.js framework, production-ready UI components, and proven applications so teams can build dashboards, portals, SaaS products, and internal tools with less glue code and more control.
Routing, actions, REST, WebSocket, schemas, files, views, mail, and runtime control in one place.
Inputs, datagrids, forms, charts, dashboards, modals, and production-ready interfaces.
Total.js is used by teams around the world to build internal platforms, automation, portals, and business software that stays under their control.
A stack you can understand, extend, and own
Total.js keeps the important pieces close: backend, UI, data, real-time communication, and business logic without spreading your product across unnecessary layers.
One backend. One UI philosophy.
Routes, actions, schemas, views, bindings, and components fit naturally together. Less glue code, fewer decisions, and a cleaner path from idea to production.
Pure framework
total5 / node.jsA clear structure for business logic, APIs, sockets, jobs, and real processes without framework noise.
// Routes, schemas, database, mail, TMS, files, jobs, and sockets
require('total5');
exports.install = function() {
ROUTE('GET /', 'view');
ROUTE('+API ? orders-query --> Orders|query');
ROUTE('+POST /api/orders/ --> Orders|create');
ROUTE('SOCKET /live/ @json <2MB', live);
ROUTE('FILE /invoice/{id}/', invoice);
ON('service', counter => counter % 5 === 0 && ACTION('Orders|sync').callback(NOOP));
};
NEWACTION('Orders|query', {
query: 'page:Number, q:String',
action: function($) {
DATA.find('orders')
.search('email', $.query.q)
.paginate($.query.page || 1, 20)
.sort('dtcreated_desc')
.callback($);
}
});
NEWACTION('Orders|create', {
input: '*email:Email,*total:Number,items:[Object]',
output: 'id:String,email:Email,total:Number,dtcreated:Date',
publish: true,
action: function($, model) {
model.dtcreated = new Date();
DATA.insert('orders', model).callback(function(err, doc) {
if (err)
return $.invalid(err);
MAIL(model.email, 'Order received', 'mail/order', doc, NOOP);
$.success(doc);
});
}
});
NEWACTION('Orders|sync', {
action: function($) {
// Background jobs use the same action pipeline
$.success();
}
});
function live($) {
$.autodestroy();
SUBSCRIBE('Orders|create', order => $.send(order));
$.on('message', (client, message) => ACTION('Orders|create', message, client).callback(response => client.send(response)));
}
function invoice($) {
FILESTORAGE('orders').read($.params.id, $.callback);
}
Total.run();UI with jComponents
spa.min@20Build forms, dashboards, tables, and complete workflows with components made for real business screens.
<!-- Client-side UI library with scoped state and components -->
<script src="https://cdn.componentator.com/spa.min@20.js"></script>
<link rel="stylesheet" href="https://cdn.componentator.com/spa.min@20.css" />
<!-- Multilingual UI out of the box: @(Orders), @(Save order), @(Customer) -->
<ui-plugin path="orders">
<ui-component name="input" path="?.filter.q" config="placeholder:Search orders;autofill:1"></ui-component>
<ui-component name="validate" path="?.form">
<button class="exec" data-exec="?/save">Save order</button>
</ui-component>
<ui-component name="datagrid" path="?.orders" config="margin:0;click:?/detail">
<script type="text/plain">
[
{ name: 'email', text: 'Customer', width: 220 },
{ name: 'total', text: 'Total', align: 2, template: "{{ total | format(2) }}" },
{ name: 'dtcreated', text: 'Created', template: "{{ dtcreated | format('dd.MM.yyyy') }}" }
]
</script>
</ui-component>
<ui-component name="linechart" path="?.sales" config="height:180;type:curves"></ui-component>
<ui-bind path="?.online" config="text:value + ' online'"></ui-bind>
<ui-bind path="?.order" config="template">
<script type="text/html">{{ value.email }} · {{ value.total | format(2) }}</script>
</ui-bind>
</ui-plugin>
<script>
PLUGIN('orders', function(exports) {
exports.reload = function() {
exports.tapi('Orders|query', exports.model.filter, function(response) {
exports.set('?.orders', response);
});
};
exports.save = function() {
SETTER('loading/show');
exports.tapi('Orders|create ERROR @showloading', exports.model.form, function(response) {
SETTER('loading/hide');
PUSH('?.orders', response);
exports.set('?.form', {});
SETTER('message/success', 'Order saved');
});
};
exports.websocket = function(message) {
PUSH('?.orders', message);
EMIT('orders/live', message);
};
});
</script>Real products, one foundation
Flow, OpenPlatform, CMS, and other Total.js applications are not demos. They are working products built with the same foundation you can use for your own platform.
Flow
Automation, integrations, and business processes connected to APIs, services, and AI.
OpenPlatform
A private portal foundation with identity, applications, users, and controlled access.
CMS
Content management that can stand alone or become part of a larger business solution.
Code
Collaborative web code editor for Total.js development, running directly on your own server for faster changes and full control.
UI Builder
Visual interface building for dashboards, portals, forms, and business screens.
Todomator
Task management for teams that need clear priorities, execution, and daily operational focus.
Tables
A no-code PostgreSQL workspace for designing tables, connecting data, and managing records with custom views.
More apps
Tools built with the same philosophy: practical, direct, and ready for real work.
Build your AI workflow
Total.js gives AI work a stable place to run: close to your data model, your actions, your permissions, and your operational rules.
Athena and assistants
Guide review, writing, support, and product operations with project context instead of isolated prompts.
MCP/MVP ready
Connect assistants to Total.js workflows so they can inspect state, call actions, and help teams move faster with guardrails.
AI-ready codebase
Keep backend, UI, schemas, files, and business logic together so AI tools can understand the system before changing it.
Human control
Use AI to accelerate work while Total.js keeps validation, permissions, logs, and final decisions inside your product.
Launch sooner.
Scale with confidence.
A faster foundation means shorter delivery cycles, lower maintenance costs, and business software that can keep growing without rebuilding everything.
TotalDesktop Suite
Native apps for building, organizing, and operating Total.js projects on macOS and iPadOS, with a suite designed for daily work.
TotalHub
TotalHub gives daily Total.js work a dedicated home: grouped apps, persistent sessions, and quick tools without browser clutter.
TotalMaker
Create native macOS wrappers for Total.js web apps with configurable name, icon, URL, and signing.
TotalPG
Native PostgreSQL client for querying, browsing, editing, and exporting data with a clear safe workflow.
TotalResources
Manage multilingual content from a native app: translation, spelling assistance, review, and AI support for every product text.
Premium Total.js components, support, and updates for product teams
Total.js Enterprise is the official annual subscription for teams that want premium open-source components, plugins, apps, templates, widgets, and direct Total.js support without rebuilding everything from scratch.
Subscribe once for the annual period, get 12 months of premium content and updates, and keep using downloaded components in your commercial products after the subscription ends.
At Total.js, we build software that lasts
Custom applications, dashboards, portals, SaaS products, and private platforms built on a coherent foundation instead of accidental complexity.
Custom development
Applications, dashboards, portals, internal tools, and digital products built with Total.js.
Architecture and consulting
Technical decisions, foundation review, and a practical plan before the product grows.
Implementation and evolution
From first version to continuous improvement, with the same technical direction.
Maintenance and improvement
Optimization, refactor, new features, and progressive evolution of existing platforms.
Tell us what your business needs to run better
We design and build Total.js applications with a clear technical foundation and a practical path to production.
Teams around the world already build with Total.js.
View all referencesTell us what you want to build and we’ll reply with a practical next step.