A mechanism to prevent code in master from affecting the way the product behaves. There are lots of different types of flags/toggles: they might be set at compile or run time; they might be purely internal or visible to the user, and so on.
We use prettier to lint and standardise code style across our projects
We use continuous integration pipelines to automate building, testing and analysis our codebase.
Each commit merged to the main branch is automatically deployed to production via a staging environment with automated e2e tests.
We're building a public-facing SDK to help partners build on epilot
AWS Well-Architected helps cloud architects build secure, high-performing, resilient, and efficient infrastructure for their applications and workloads. See AWS Well-Architected
We use correlation ids across our services to trace transactions within our distributed architecture.
The idea of Micro Frontends is to break down the frontend monolith into smaller, more manageable pieces, thus each team can own its own features.
RFCs are a transparent way to propose solutions, share knowledge and invite others in the company to collaborate on ideas. An RFC is a document describing a proposed approach for solving a problem.
Before we write a single line of code, we design the APIs of a service in a way that any other team, whether internal to epilot or external, can use the APIs interface with our service without prior knowledge.
We've built a Data Lake into our product leveraging AWS S3, Firehose, Glue, Redshift and more.
MSW Mock service workers are used to mock backend APIs in tests
We use pairing mob programming and other teaming techniques in our product teams for effective remote work and knowledge sharing
We provide configurable webhooks to allow 3rd parties to subscribe to most epilot business events
TypeScript provides an advanced type system on top of JavaScript. It also provides highly productive development tools for JavaScript IDEs and practices, like static checking. TypeScript makes code easier to read and understand.
Most of our frontend codebase is written in React. Arguably the safe choice.
Some of our new frontend microservices are being written in Svelte. Many frontend engineers really seem to enjoy this.
The AWS Serverless Application Model (SAM) is an open-source framework for building serverless applications.
Terraform is the IaC solution of choice to manage the AWS environments. Re-usability is the central argument for adoption due to modular nature.
AWS CDK is a software development framework for defining cloud infrastructure in code and provisioning it through AWS CloudFormation
The OpenAPI Specification, originally known as the Swagger Specification, is a specification for machine-readable interface files for describing, producing, consuming, and visualizing RESTful web services.
GraphQL is an open-source data query and manipulation language for APIs, and a runtime for fulfilling queries with existing data.
Python is an interpreted high-level general-purpose programming language. Python's design philosophy emphasizes code readability with its notable use of significant indentation.
TanStack Query is a popular javascript library that offers hooks for fetching, caching and updating asynchronous data in React
Tailwind CSS is an open-source CSS framework that allows users to rapidly build custom user interfaces.
Handlebars is extensively used on multiple projects to perform dynamic variable replacements on Document and Email Templates.
CSS modules are a CSS framework that allows you to write CSS classes and animations that are locally scoped by default.
Zustand offers a robust and efficient state-management solution that simplifies setup by eliminating unnecessary boilerplate.
Redux is an open-source JavaScript library for managing application state.
We use Material UI from Google as the basis of our design system and component libraries.
GitLab CI is a powerful tool built into GitLab that allows us to apply various CI/CD (Continuous Integration, Delivery, and Deployment) strategies.
We use Datadog as our central monitoring, observability and logging platform
AWS is the cloud provider of choice. The rich ecosystem for building serverless applications makes it a perfect fit for a SaaS solution.
AWS Lambda is a serverless compute service that lets you run code without provisioning or managing servers, creating workload-aware cluster scaling logic, maintaining event integrations, or managing runtimes.
Our public open source SDK and libraries are hosted on GitHub.
Jest is a delightful JavaScript Testing Framework with a focus on simplicity.
A fast Vite-native testing framework. Only reruns the related changes, just like HMR for tests!
Slack is used extensively as the communication tool, with experimental extensions for ChatOps.
AWS Step Functions is a serverless function orchestrator that makes it easy to sequence AWS Lambda functions and multiple AWS services into business-critical applications.
Amazon EventBridge is a serverless event bus that makes it easy to connect applications together using data from your own applications, integrated Software-as-a-Service (SaaS) applications, and AWS services.
Storybook is a tool for UI development. It makes development faster and easier by isolating components. This allows you to work on one component at a time. You can develop entire UIs without needing to start up a complex dev stack, force certain data into your database, or navigate around your application.
Amazon DynamoDB is a key-value and document database that delivers single-digit millisecond performance at any scale.
Elasticsearch is a distributed, RESTful search and analytics engine capable of addressing a growing number of use cases.
Amazon Cognito lets you add user sign-up, sign-in, and access control to your web and mobile apps quickly and easily.
Single-SPA allows multiple frameworks in a single-page application, allowing you to split code by functionality with: Angular, React, Vue.js, etc.
We use Atlassian JIRA for issue tracking and roadmap.
We use Atlassian Confluence for internal product documentation and RFCs
We use monorepos to ease our microservices development
Our teams use Turborepo to set up their monorepos
We are using Zod for TypeScript-first schema validation with static type inference
Headless UI for building powerful tables.
API tooling for robust SDKs, Terraform Providers and End to End Testing. OpenAPI Native.
Collection of open source libraries and tools for full stack Typescript development inspired by modern alternatives like GraphQL and tRPC.
Jupyter Notebooks is an interactive programming environment great for exploring data e.g. for Business intelligence or prototyping
We use Playwright test runner to run browser tests across multiple browsers and environments
Snyk is a tool for automated security and vulnerability scanning.
We initially used Lerna for monorepos, but since it's no longer maintained, we're switching to Turborepo