Technology Stack

Blue is a mix of open-source software and hundreds of thousands of lines of our proprietary code.

Our approach to making technology decisions is that SaaS (Software-as-a-Service) and managed services are better than self-hosting or building solutions in-house. This is because we will always be short of engineering time, but not of money, and so it is better to trade money for time and leverage managed services where we do not have the overhead of keeping the service running. We also gain the added advantage of leveraging the expertise of thousands of additional engineers who work at those companies and help keep the lights on.

If everything else is equal, we default to open-source.

Core

NodeJS

A JavaScript runtime built on Chrome's V8 JavaScript engine, Node.js is used for building scalable network applications.

Rust

A multi-paradigm programming language focused on performance and safety, particularly safe concurrency, used for system development. We use this exclusively for our import/export feature to scale to hundreds of thousands of records.

GraphQL

A query language for APIs and a runtime for executing those queries by using a type system defined for the data.

Prisma

An open-source database toolkit, including an ORM (Object-Relational Mapping), migrations, and a query builder for Node.js and TypeScript.

Typescript

An open-source language which builds on JavaScript by adding static type definitions, allowing for catching errors early and providing a more robust coding experience.

Vue

An open-source model–view–viewmodel front end JavaScript framework for building user interfaces and single-page applications.

Vuetify

A Vue UI Library with beautifully handcrafted Material Components, aiding in the creation of responsive applications with Vue.js.

Apollo Client

A comprehensive state management library for JavaScript that enables the management of both local and remote data with GraphQL.

Infrastructure

Cloudflare

This is where we host the blue.cc DNS management. We do not currently use any other Cloudflare features for our product. We're considering using the R2 storage in the future, but it's not there yet.

We use Cloudflare pages for our marketing website.

Render

Frontend

Render hosts the user interface of the application, ensuring fast loading times and high availability.

APIs

The APIs, which are crucial for backend-frontend communication, are also hosted on Render, benefiting from its reliable infrastructure.

Background Workers

These are essential for executing tasks in the background, such as data processing or maintenance tasks, without affecting the user experience.

Redis / BullQueue

Utilized for queue management, these tools help in efficiently handling asynchronous tasks and job scheduling, which is critical for ensuring smooth operation and scalability.

AWS

Aurora

AWS Aurora is used for database services. It's a high-performance relational database that provides scalability, reliability, and availability.

SES (Simple Email Service)

This is used for our email automations, because we needed features that are not available in customer.io such as custom sender names, and in the future fully custom email domains.

S3

Amazon's Simple Storage Service (S3) provides object storage solutions. It's used for storing and retrieving any amount of data, like user uploads, backups, or log files.

Redislabs

Acts as a real-time engine for the Blue application.

Godaddy

This is where our domain is owned.

Services

Stripe

This is our payment processing platform that manages the invoicing, subscriptions, and charging customers.

Helpscout

This our ticketing system.

Emails that we use:

  • help@blue.cc

  • sales@blue.cc

  • partners@blue.cc

  • hello@blue.cc

Customer.io

We use Customer.io as our main email-sending service for the following:

  • Newsletter — This newsletter announces new features and changes to the platform.

  • Cadences — These are the series of welcome emails to company owners and new users that educate our user base on Blue features.

  • Notification Emails — Any email from a Blue notification to end users.

Note that emails triggered via email automations are not sent via Customer.io but via AWS SES (Simple Email Service). This is due to a limitation within Customer.io where we cannot have a custom "from" name and, in the future, have emails sent from our customer's domains.

AppSignal

We use AppSignal for monitoring and tracking the performance of the application, as well as hosting our Status Page.

Rewardful

This is the platform we use to manage our Partner Program that helps third parties grow their business, while helping us grow ours.

Metabase

We host Metabase via a managed Render.com instance, and it is directly hooked up to our production database, where it periodically clones new data so we can run analytics. This can be accessed here for users with access:

Firebase (Analytics)

A service likely used for tracking and analyzing user interactions within the application. Firebase Analytics helps in understanding user behavior, which is crucial for improving user experience and guiding product development.

ReCaptcha

Implemented for securing form entries against bots and automated abuse. ReCaptcha is a widely-used service by Google to distinguish human users from automated systems, thereby enhancing the security of online forms and processes.

Dependencies

Dependencies are external software packages or libraries that Blue leverages to function. These external dependencies provide reusable code, functionality, or resources that help us build and maintain the Blue platform more efficiently.

  • @apollo/server

  • @appsignal/nodejs

  • @bull-board/api

  • @bull-board/express

  • @fullcalendar/core

  • @fullcalendar/daygrid

  • @fullcalendar/interaction

  • @fullcalendar/timegrid

  • @fullcalendar/vue

  • @giphy/js-components

  • @giphy/js-fetch-api

  • @graphql-tools/graphql-file-loader

  • @graphql-tools/load

  • @graphql-tools/load-files

  • @graphql-tools/merge

  • @graphql-tools/schema

  • @graphql-tools/stitch

  • @joeattardi/emoji-button

  • @popperjs/core

  • @prisma/client

  • @sindresorhus/slugify

  • @stripe/stripe-js

  • @tiptap/core

  • @tiptap/extension-bubble-menu

  • @tiptap/extension-character-count

  • @tiptap/extension-code-block-lowlight

  • @tiptap/extension-collaboration

  • @tiptap/extension-collaboration-cursor

  • @tiptap/extension-focus

  • @tiptap/extension-highlight

  • @tiptap/extension-link

  • @tiptap/extension-mention

  • @tiptap/extension-placeholder

  • @tiptap/extension-superscript

  • @tiptap/extension-text-align

  • @tiptap/extension-typography

  • @tiptap/extension-underline

  • @tiptap/starter-kit

  • @tiptap/suggestion

  • @tiptap/vue-2

  • @vue/apollo-composable

  • @vue/apollo-option

  • @vue/apollo-util

  • @vue/composition-api

  • @vueuse/components

  • @vueuse/core

  • ag-grid-community

  • ag-grid-enterprise

  • ag-grid-vue

  • apollo-cache-inmemory

  • apollo-client

  • apollo-link

  • apollo-link-context

  • apollo-link-error

  • apollo-link-http

  • apollo-link-retry

  • apollo-link-ws

  • apollo-utilities

  • autolinker

  • aws-sdk

  • axios

  • bcrypt

  • body-parser

  • bullmq

  • cheerio

  • color

  • content-disposition

  • cookie-parser

  • cors

  • country-code-info

  • country-code-lookup

  • cropperjs

  • cuid

  • dataloader

  • diff

  • dotenv

  • ejs

  • elasticsearch

  • express

  • firebase

  • firebase-admin

  • flat

  • flatpickr

  • form-data

  • fuse.js

  • geoip-lite

  • glightbox

  • graphql

  • graphql-playground-html

  • graphql-tools

  • graphql-ws

  • graphql-middleware

  • graphql-rate-limit

  • graphql-redis-subscriptions

  • graphql-scalars

  • graphql-shield

  • graphql-subscriptions

  • graphql-tag

  • graphql-tools

  • graphql-ws

  • gsap

  • hex-to-rgba

  • html-to-text

  • http-aws-es

  • ical-generator

  • indicative

  • ioredis

  • jsonwebtoken

  • knex

  • langchain

  • leaflet

  • lodash

  • markdown-it

  • markdown-it-emoji

  • markdown-it-link-attributes

  • marked

  • mjml

  • moment

  • moment-timezone

  • mongoose

  • morgan

  • multer

  • mysql2

  • nanoid

  • node-fetch

  • nodemailer

  • nodemailer-mailgun-transport

  • oembed-parser

  • papaparse

  • prismjs

  • pusher-js

  • redis

  • request-ip

  • sanitize-html

  • sharp

  • slug

  • socket.io

  • source-map-support

  • string-template

  • stripe

  • text-clipper

  • ua-parser-js

  • uuid

  • validator

  • vee-validate

  • vue

  • vue-apollo

  • vue-chartjs

  • vue-click-outside

  • vue-codemirror

  • vue-content-loader

  • vue-cookies

  • vue-datetime

  • vue-dropzone

  • vue-flickity

  • vue-fontawesome

  • vue-google-autocomplete

  • vue-i18n

  • vue-infinite-loading

  • vue-js-modal

  • vue-meta

  • vue-notification

  • vue-observe-visibility

  • vue-property-decorator

  • vue-router

  • vue-swatches

  • vue-sweetalert2

  • vue2-leaflet

  • vue2-transitions

  • vuedraggable

  • vuetify

  • y-prosemirror

  • y-websocket

Last updated