In this document, we will look at the differents technologies that makes voca. This will gives you a rough overview of the project, and hopefully an idea of the learning curve.
Jelastic Virtuozzo
For now, voca uses Jelastic to mount and run. Jelastic offers two kind of APIs:
Traefik
We use Traefik to route our primary service voca, and all the different Decidim that he mounts.
Traefik uses two providers: a file provider (yaml), and a http provider.
NextJS
The frontend is made with react, using a material design library. It is served by a next server to handle nicely authentication. The components are carefully craft to respect our design system. This frontend will consume a graphql api, served by our backend.
In the frontend, we do (almost) no next magics, it is made of plain react component that represents the state of the API and are designed to have a fluid experience.
NextJS
The react front end uses only next endpoints, who will proxy requests to our backend. Thus, it is possible to hide the backend in a private network.
Strapi
Strapi generates a standard and navigable graphql API from it’s model. To this API, we add several resolvers in order to ask status and manipulate Decidim instances through a secure and private gRPC interface - private as in a private network, not private as closed source ;)
You will find most of our graphql custom resolver in Decidim endpoints: there you can retrieve informations directly from the Decidim Instances (Rails).
The Graphql API offers as well some endpoints to get the status of the infrastructure, in order to know if the instance is running (you can interact with), or stopped.
Strapi
, BullMQ
, Redis