This week I started to implement a node.js server for appsmith. Appsmith is a no-code tool to build apps in a easy to use design tool. The apps might not be the most awesome mobile first responsive applications, but they are good to build internal dashboards, data views, forms and charts. The apps can directly be shared within organizations.
The client of appsmith is a webapp made with react. The server side is with the java springframework. I however plan to reimplement the server side using node.js. With the node.js server, I would like to make it possible to have an appsmith server running with a single command:
npm install -g tappsmith && tappsmith. Because I am not affiliated with the great team behind the appsmith project, I plan to name my project
The server will be build using
fastify. As datastore I will use trdb, that allows me to get developing a first prototype fast and later I can allow for a configuration to switch the db with mongodb.
So far, I am able to login with the fastify server, I have constructed the database collections with many types. As I currently develop the app with js and not typescript, I can not pass in a type into the collection to have good autocompletion. However I will make a little change to the trdb library, that will allow to provide an optional example object to the collection function and have it typed this way.
For the APIs, I just use the appsmith app online, and see what data is responded to the client. That has shown me how a authenticated user or a non authenticated user response looks for the ‘/api/v1/users/me’ API. Now I am working on the ‘GET /api/v1/applications/new’ API. It is more complex and for that I already have to implement all the structures around ‘groups’, ‘roles’, ‘permissions’ and ‘applications’.