DOC Query Language Internship
Paris or Montpellier, France
DecisionBrain is a young international company that develops and sells software solutions for decision support. The internship will preferably take place in our offices in Montpellier (Millénaire). Remote work is possible if imposed by regulation.
Decision Optimization Center
Decisionbrain develops a platform to create, deploy and maintain fully scalable decision support solutions. Quickly, easily, efficiently. DOC accelerates the creation and deployment of decision support solutions.It is written in Java for the back-end and in Angular for the front-end, and relies on a number of technologies such as Spring, Docker, etc.
DOC is providing a data access API to query data from a generated data-model using GraphQL. This API is generic and generated at runtime to expose the project data-model and meta-model information. It’s connected through a JPA (Hibernate Criteria) layer to a relational database (Postgresql). This API already supports requesting data with complex filter expressions. However building complex filters requires custom code because the web client (UI) does not provide a user-friendly way to create them. JIRA software is for example exposing a such feature with its JQL query language: https://www.atlassian.com/blog/jira-software/jql-the-most-flexible-way-to-search-jira-14. This subject can be divided in several steps:
- Define a query language (DSL) to express these filters with its documentation.
- Study different parser generation libraries, and validate this can be implemented in the DOC web library (Possible candidate to implement the parser: https://sap.github.io/chevrotain).
- Implement the corresponding dynamic parser in the DOC web library (Angular), with tests. This parser will be responsible for parsing query expressions and will output filtered queries definitions objects, consumed by the existing GraphQL APIs.
- Integrate the parser in a UI component. This integration should be composed by a query editor provided as standard to users.
- A validation API with suggestion capabilities would be nice.
- Back-end development, preferably in Java. Use of a dependency injection framework such as Spring. Familiarity with databases, in particular MongoDB.
- Front-end development, preferably with Angular.
- Versioning systems, preferably Git. Build tools such as Gradle or Maven.
The internship subject touches a variety of technology. Most of its complexity comes from that, and probably a significant part of its interest, too. The candidate is not expected to fully master all of these technologies, but to have strong skills in a sufficient number of them to be able to acquire the missing ones. The technologies in question include:
At DecisionBrain, working as a team is really in our DNA as we believe it makes us stronger and enables us to deliver better long-term results to our customers. Therefore we are looking for talented people who are not only passionate about software and high-tech and excellent in their domain, but also share our vision and values and are willing to be part of a strong team. Working at DecisionBrain means that you will have the opportunity to join a visionary and quickly growing young company, have a direct impact on the evolution and success of the company, evolve rapidly with a very experienced and dynamic team, and work with customers around the globe.