December 16, 2024  •  Insights  •  Education & Development

PRISMA’s Tech Stack

Image
tech stack illustrated with several screens and tool logos

At PRISMA, we’re committed to innovation and transparency as we work to secure Europe’s energy supply and drive the Green Transition through cutting-edge digital solutions. Our technology stack is central to delivering these goals, and by sharing an overview of our tech stack, we aim to give our community—and potential team members—a behind-the-scenes look at the tools and systems that power the PRISMA Platform.

This article will explain the purpose of each tool and technique in our ecosystem, from robust backend frameworks that ensure secure, high-performance processing to front-end technologies that make our platform intuitive and accessible. For those interested in joining PRISMA, it’s an opportunity to see firsthand the technologies you could be working with, as we continue to expand and improve our platform to meet Europe’s energy needs.

Frontend Technologies

React
React is a powerful and flexible JavaScript library for building user interfaces, ideal for creating dynamic, single-page applications that offer a highly interactive experience. Its component-based architecture promotes modularity and reusability, which streamlines development, enhances maintainability, and supports scaling as applications grow.

At PRISMA, we primarily use React to build our web front end and internal back-office applications, leveraging its strengths to create responsive and efficient user experiences.

Image
frontend tools befoe computer and screen

AngularJS
Initially chosen as the successor to a JSF-based web frontend, AngularJS became the backbone of our frontend architecture for many years. It still powers some remaining legacy pages, providing a structured, scalable foundation for our web applications. While the majority of our frontend has migrated to more modern technologies, AngularJS continues to support legacy components embedded in an IFrame within our React application, ensuring stability and consistency across older systems.

React Router
React Router is a robust library that simplifies navigation within React applications, enabling smooth transitions between views without requiring full-page reloads. By keeping the UI in sync with the URL, it enhances performance and creates a seamless experience for users navigating within a single-page app. At PRISMA, we rely on React Router for managing the entire routing structure of our large and complex web application, ensuring intuitive, efficient navigation across its many views.

Vite
Vite is a modern build tool designed for rapid front-end development. With hot module replacement and faster build times, Vite allows developers to see changes in real time, making testing and debugging highly efficient. Its optimized performance shortens the development cycle, letting developers focus more on building than on configuration. At PRISMA we use it to build our customer-facing and internal frontend applications.

Storybook
Storybook provides a dedicated space for developing and documenting UI components in isolation. This tool allows designers and developers to work together smoothly, creating a shared visual language and ensuring that each component is reusable, thoroughly tested, and well-documented—making it ideal for collaborative, component-driven development. At PRISMA many important parts of our frontend workflow build upon Storybook. It is our main source of documentation - from our Design System guidelines to individual components to whole user flows and even developer documentation. On top of this it is the fundament for the majority of our unit tests as well as our visual regression testing.

Backend Technologies

Project Lombok
Project Lombok is a powerful Java library designed to reduce boilerplate code by automatically generating standard methods like getters, setters, and constructors. By eliminating repetitive code, Lombok helps maintain a clean, concise, and readable codebase, allowing developers to focus on the core functionality of their applications.

At PRISMA, we leverage Lombok primarily for its ability to not only streamline development, but more importantly keeping it concise thus reducing mental load in the long run. Remember: code is written once, but read much more often.

Image
backend tools screen with code

Spring Boot
Spring Boot is a robust framework for swiftly building and deploying JVM-based applications in an efficient way.
It offers a comprehensive set of tools and reasonable defaults, enabling developers to quickly build, test, and deploy applications.
With its wide range of support for industry standards, Spring Boot is an ideal choice for creating reliable, production-ready backend services that integrate well in various scenarios. At PRISMA, we use it primarily for developing new services in Java or Kotlin, as we continue to migrate away from our legacy monolithic architecture.

Gradle & Maven
Gradle and Maven are essential build automation tools that help manage dependencies, compile code, and streamline deployment processes. By automating these tasks, they ensure consistency across environments, improve collaboration, and minimize errors, especially in large development teams. At PRISMA, we primarily use Maven and occasionally Gradle for building and packaging our services. For management and deployment, we augmented them with AWS-native approaches.

OpenAPI
OpenAPI is a standardized format for documenting RESTful APIs, enabling seamless communication and collaboration within and between teams. It establishes a common language for APIs, simplifying integration for developers and external partners. Within PRISMA, we use OpenAPI primarily to foster collaboration between frontend and backend when working on a feature. The backend generates Spring endpoint code directly from the API specification, while the frontend uses it as both a reference, ensuring alignment and consistency across the development process.

Database & Data Management

PostgreSQL
PostgreSQL is a powerful open-source relational database, well-suited for managing complex, structured data. Renowned for its stability and advanced querying capabilities, PostgreSQL supports large-scale data storage and management with exceptional reliability. This makes it an ideal choice for secure, high-performance data operations.

At PRISMA, we primarily use PostgreSQL as a JSON database powering our event-store, FactCast, and as a relational database for the query models of our services.

Image
database tools cloud with arrows

FactCast
FactCast is an event store designed to support asynchronous communication in event-driven architectures. By publishing business events to FactCast, it facilitates efficient data distribution across services, ensuring that each service can react to events as needed. At PRISMA, we implement the Eventsourcing Architectural pattern using FactCast to publish and distribute events to the relevant services and keeping a central, auditable log of our business processes.

DynamoDB
DynamoDB is a managed document database service by AWS that offers scalable storage for unstructured data with low-latency access. Its high performance and automatic scaling make it ideal for high-traffic applications. At PRISMA, we use it for managing data from key-value pairs to simple hierarchic data structures. As a fully managed service, DynamoDB eliminates the need for capacity management, scaling, or system maintenance, allowing us to focus on other priorities.

Redis
Redis is an in-memory key-value store known for its exceptional performance in data storage, manipulation and retrieval making it an essential tool for delivering fast, yet reliable services at PRISMA. At PRISMA, we primarily use Redis to power blazingly fast, key-value based query models for our services.

InfluxDB / Prometheus
InfluxDB is a time-series database designed for real-time data collection and analytics, ideal for tracking system performance and identifying trends through high-frequency data. At PRISMA, we have primarily used it for logging and monitoring infrastructure, collecting metrics from our services. However, we are transitioning to Prometheus, which offers more efficient data collection, flexible query capabilities, and better integration with modern cloud-native environments, making it a better fit for our evolving infrastructure needs.

DevOps & Infrastructure

GitLab & GitHub
GitLab and GitHub are widely used version control platforms that facilitate collaboration and efficient code management. These platforms enable teams to track changes, manage their code, and implement CI/CD workflows, ensuring a modern developer experience.

At PRISMA, we use GitLab for all our in-house services, libraries and documentation and make heavy use of the CI/CD capabilities to manage our apllications withing AWS. GitHub on the other hand is used to publish PRISMAs OpenSource libraries for everyone to see and contribute.

 

Image
devops loop and tools

OpenTelemetry
OpenTelemetry helps with detection and analysis of issues. At PRISMA, we primarily use OpenTelemetry for logging and sending traces to AWS X-Ray, enhancing our ability to monitor and troubleshoot system performance.

Docker
Docker is a containerization tool that packages applications and their dependencies into isolated environments, ensuring consistent performance across different platforms. Its lightweight containers enhance scalability, simplify deployments, and improve reliability. At PRISMA, we primarily use Docker to package our services into container images, enabling seamless deployment in AWS ECS.

AWS with CDK
Amazon Web Services (AWS) is a popular cloud infrastructure platform offering a wide range of on-demand services to help businesses scale and operate efficiently without managing physical infrastructure. We use the Cloud Development Kit (CDK) to define the AWS infrastructure through code, fully supporting Infrastructure as Code (IaC) principles. AWS CDK streamlines resource management and offers greater control over cloud services, enabling automated, versioned, and repeatable deployments. At PRISMA, we fully embrace the cloud native stack and adopt AWS services whenever it makes sense to quickly create and easily maintain our projects.

Image
boxes getting stacked

Sentry
Sentry is a real-time error-tracking tool that monitors applications for bugs and issues. By capturing errors as they occur, Sentry enables developers to swiftly identify and resolve problems, ensuring application stability and enhancing the user experience. At PRISMA, we primarily use Sentry for monitoring and analyzing frontend errors, helping us maintain a smooth and reliable user interface.

Grafana
Grafana is an open-source analytics and monitoring platform that visualizes performance metrics from a wide range of data sources. Its intuitive dashboards make it easy to identify trends and proactively address potential issues, supporting data-driven decision-making. At PRISMA, we use Grafana as the central hub of our monitoring and logging infrastructure, connecting dozens of data sources and providing powerful dashboards to monitor the health of our services.

Dependency Track
Dependency Track is a tool for monitoring software dependencies and identifying potential security vulnerabilities. By offering visibility into the dependency landscape, it enables teams to proactively manage risks, ensuring applications stay secure and compliant. At PRISMA, we primarily use Dependency Track to maintain oversight of our dependencies, helping us manage security risks and support compliance.

Renovate Bot
Renovate Bot automates dependency updates, ensuring libraries and frameworks are up-to-date By keeping dependencies current, Renovate Bot helps minimize technical debt, enhancing both the security and quality of our codebase. At PRISMA, we facilitate renovate bot to reduce the effort and mental load necessary to a minimum by automatically executing update guarded by rules, so that developers don’t have to.

Testing & Quality Assurance

Cypress
Cypress is an end-to-end testing tool that automates the testing of user interactions within the browser. It is essential for validating workflows and UI functionality, offering fast, reliable tests that help catch and resolve issues before they reach production.

At PRISMA, we primarily use Cypress for automated E2E tests, which run twice daily and after specific deployments to ensure seamless user experiences.

Image
screen with magnifier looking for bugs, logos of tools

ESLint
ESLint is a static code analysis tool that enforces coding standards and detects potential issues in JavaScript code. By promoting consistency and catching errors early, ESLint enhances code quality and readability across projects. At PRISMA, we primarily use ESLint to maintain code quality in our frontend projects, ensuring adherence to best practices and a cleaner, more reliable codebase. On top of that we use custom rules for large migrations to keep our code up-to-date.

SonarQube
SonarQube is a comprehensive code quality platform that uses static code analysis to spot and alert bugs, security vulnerabilities, and “code smells.” By identifying areas for improvement, SonarQube encourages cleaner, more secure code, enhancing the reliability and maintainability of applications. At PRISMA, we primarily use SonarQube to uphold code quality in our backend projects, ensuring robust and well-maintained codebases.

Jest
Jest is a JavaScript testing framework primarily used for unit testing. Known for its simple setup and fast execution, Jest helps ensure that core logic functions as intended, providing a solid foundation for building and maintaining reliable applications. At PRISMA, we mainly use Jest to verify code quality and functionality in our frontend projects, testing individual components and pages to ensure they work as expected.

Programming Languages

Kotlin
Kotlin is a modern, concise programming language that runs on the JVM and is fully interoperable with Java. With its clean syntax and enhanced safety features, Kotlin reduces boilerplate code and minimizes common programming errors, such as null pointer exceptions. Its growing popularity and versatility make it an excellent choice for building robust, scalable backend services.

At PRISMA, we primarily use Kotlin for several services and to develop a custom DSL that specifies the structure of our FactCast events.

Image
speech bubbles around laptop, logos of programming languages

Java
Java is a programming language renowned for its reliability, security, and cross-platform capabilities. Supported by a vast ecosystem and extensive libraries, Java is well-suited for building complex, large-scale applications. Its stability and performance make it a core language in enterprise environments, ideal for managing critical backend operations that demand high performance and scalability. At PRISMA, we primarily use Java for our monolithic application and the majority of our services.

TypeScript
TypeScript is a superset of JavaScript that introduces static typing and other advanced features to help developers catch errors early. Its type-safety advantage leads to more predictable, robust code, particularly in large-scale applications. Because TypeScript is fully compatible with JavaScript, teams can adopt it incrementally, bringing structure, maintainability, and scalability to frontend development. At PRISMA, we primarily use TypeScript with strict typing in our current React frontend, and parts of our legacy AngularJS codebase also utilize TypeScript.

 



 

Related Insights

News

Explore PRISMA's activities

Do you want to learn even more about PRISMA? Dive into the PRISMA's News, where we share customer project success stories, exciting events, and a glimpse into our company culture.