Is Mantra used only to develop web aplications?
You can build any kind of applications using Node.js ecosystem.
From cli (command line interface apps), web sites, Rest API microservices, daemons, etc.
A complex project is composed by a number of diffent kinds or apps.
Which database providers are currently supported?
We don't talk about database providers, but data repositories instead. You can use any data provider by your own in your components. However, Mantra integrates a highly decoupled data persistance layer using our own project named RedEntities. In current version, all Mysql flavours and Sqlite are supported.
PostgreSql, Azure Tables, DynamoDB and others coming.
What it is simple table model?
By definition, the data persistance needs of any component should be extremely simple and small (just two or tree entities).
By doing that, your component has lower responsabilities and will be more efficient to read and write data.
Mantra follows this principle to avoid complex and big relational databases.
Any way, you can export components data to a third data provider for any other purpose (analytics, reports, etc.).
Can I use React, Vue or Angular (and the like) in a Mantra project with web UI?
Yes. You can use any web UI library. Mustache is used by default to build final html content.
However, the aim of Mantra systems is to build software with the minimal 3rd party dependencies and as simple as posible.
What's a Mantra component?
All functionality in a Mantra project is defined inside components. A Mantra component is a Node.js module which exposes assets to other components between Mantra (Rest APIs, function APIs, data models, blocks, views, templates, extends, events, commands, etc.)
Visit components section to download free and reusable components.
How does a component exposes its functionality or assets?
Each component registers its assets (blocks, apis, views, etc.) using Mantra API object and Hooks method when the component is initialized at application start up.
Some hooks can be defined easier using file and method names conventions, as explained in documentation.
Can I extend Mantra assets?
By default, Mantra integrates some typical assets to be defined in components (APIs, blocks, views, events, and so on), considered as the minimal coding blocks in any application.
Futhermore, you can define your own asset extends using Mantra API to expose it to other components and enrich the behaviour and functionality in your app.
What's Mantra API?
Is an object that acts as the interface between Mantra and all components. In some way, this object is the heart of Mantra.
It is created automatically by Mantra in any component interaction to allow all components to run and interact.
Mantra is designed following the ideas defined in Mantra Development Paradigm to develop specially large projects which will evolve considerably with highly decopled components with reusability in mind and multiple data repositories in the same project.
Anyway, you can define your components in TypeScript and integrate any work flow of your own to do that.
Who is behind this project?
My name is Rafael Gómez Blanes, and I'm a programmer since I was 13 years old and I got a software engineer university degree, with 25 years of experience in software industry.
I'm used to develop, manage and run large and long term software projects and in Mantra I've synthesized all those better software practices to develop complex projects with minimal technical debt and easier to migrate, good testing and cheaper to maintain.
Me and my team use Mantra in our own projects (and in the future ones) and decided some time ago to publish it improving this framework so that others can benefit from it.
Is this site developed by Mantra?