Technology Stack

Clinicians rely on Doximity every day. This is how we empower them.

Web Application Stack

Ruby

Rails

JavaScript

Elasticsearch

GraphQL

Kafka

Go

Doximity's web applications are built primarily using Ruby, Rails, JavaScript, and Go. The core application is supported by a handful of Rails-powered microservices that allow teams owning the corresponding product areas to move quickly and autonomously. We leverage GraphQL, Kafka, and Elasticsearch extensively.

Front-end Stack

Vue.js

Apollo

Nuxt.js

Mocha

Cypress

Webpack

We build client applications using modern javascript with Vue.js and Nuxt.js. We use Apollo Client to help take full advantage of our GraphQL. Our goal is to build performant clients with an eye for progressive enhancement.

iOS Stack

Swift

SwiftUI

Swift Concurrency

Combine

The Composable Architecture

Apollo

Swift Package Manager

Quick and Nimble

Our flagship iPhone/iPad app is written in 100% Swift with a mix of SwiftUI and UIKit. We have adopted The Composable Architecture for managing state across features and rely heavily on Dependency Injection throughout our stack.

We use both Swift Concurrency and Combine for data binding and asynchronous communication. Our networking stack uses a combination of GraphQL with Apollo and REST APIs.

Our dependencies are managed by Swift Package Manager and we have an extensive set of unit tests using Quick and Nimble, UI automation testing with Waldo, and automated continuous integration with GitHub, Fastlane, and CircleCI.

Android Stack

Kotlin

Retrofit

Espresso

Mockk

Apollo

FCM

Jetpack

Koin

Coroutines

Databinding

Jetpack Compose

The Doximity app is written in 100% Kotlin. We follow the Clean Architecture approach, adhering to SOLID principles. We make ample use of Jetpack libraries throughout the app. While we traditionally used databinding on the view layer, we are currently migrating our entire UI to Jetpack Compose. On the networking layer, we use Kotlin Coroutines to interface with Doximity’s GraphQL API. We strive to provide ample unit test coverage using JUnit and Mockk. In addition, we use Firebase Test Lab to run our Espresso and Compose instrumentation tests.

Data Stack

SQL

Python

Spark

Snowflake

AWS EMR

Kafka

Docker

Airflow

Hex

Looker

Doximity relies on SQL and Python’s powerful data libraries (such as Pandas, NumPy, SciKit-Learn, etc.) to create product and client facing analytics. Our ML models leverage Spark (PySpark) and Spark ML, among other homegrown tech tools built on AWS. We use Hex notebooks for Exploratory Data Analysis and prototyping, and our ETL pipelines avail numerous third-party data APIs such as SendGrid, Twilio, Sumo Logic, SharedCount, Google APIs, etc. Doximity’s centralized warehouse is powered by Snowflake, and we use Kafka streams to communicate with our app-side microservices. Our models and transforms run within Docker containers scheduled through Airflow.

Data Stores

Aurora

Redis

Memcached

Neo4J

Snowflake

Elasticsearch

S3

MySQL, more specifically Aurora, runs the show. We rely on Redis and Memcached to provide support for caches and background job processing. Elasticsearch powers things like full text search, search suggestions, some functions of our network graph, and our recommendation engine. It even sometimes acts as cache store. We utilize Neo4j to perform complex network graphing operations.

Server Stack

Ubuntu

AWS

Terraform

Kubernetes

Chef

Docker

OpenTracing

Grafana & Prometheus

The bulk of our applications and services are being run on AWS EKS and are managed via Helm, ArgoCD, and internal tooling. Ubuntu is our operating system of choice for all longer running standalone servers and track LTS versions. We leverage Ansible, Chef, Terraform, and AWS Image Builder for automation and provisioning AWS servers and other infrastructure. We are currently in the process of introducing Kubernetes to mirror local development built on Docker. We use a variety of tools to monitor our systems such as Prometheus, Graphite, Grafana, and many others. Lita Bot deploys, migrates, and restarts our applications. We leverage HackerOne for our security bounty program.

Security Stack

HackerOne

Signal Sciences

AWS WAF

AWS Shield Advanced

AWS Cloudwatch

Lacework

Cloud Posture Management

Intrusion Detection

Zscaler (ZIA + ZPA)

GitHub Dependabot

Okta ASA

Terraform Modules

WAF-as-a-Service

Sumologic

Sonar(Qube/Cloud)

Chef Libraries

Clinician and patient privacy and security is a top priority. Our library of infrastructure-as-code and application support modules enables us to launch new application services efficiently. These modules help with best practices and secure defaults. Our active HackerOne bug bounty program lets us continuously battle-harden our security. Utilizing tools such as Rubocop, Brakeman and SonarQube prevents issues before they make it to production. Web application firewalls, DDoS protection services and custom tooling provide robust preventative protection. We create observability and monitor application and infrastructure security events.

Automation Stack

CircleCI

GitHub Actions

Capybara

RSpec

Karma & Jest

XCUI, Quick & Nimble

Espresso & jUnit

Pytest

Docker

We leverage CircleCI to execute our comprehensive suite of automated tests, providing feedback on every single commit. Each build is parallelized across multiple containers that auto-scale to provide the development team with quality feedback, fast. This, along with other automated tasks, adds up to a pipeline designed to simplify and speed up our developers’ daily workflows.

Platform Stack

Ansible

Kubernetes

Helm

Docker

Ambassador

Istio

Go

Our platform leverages Ansible and Terraform to create, update, and maintain a Kubernetes deployment (using Amazon EKS). This allows us to provide a container-based deployment model for infrastructure and product teams. We use Go(lang) to build tools that simplify the setup of development environments, application deployments, and development workflow tools.

Design Stack

Figma

Adobe Creative Suite

InVision

Asana

Framer

Flinto

Principal

Proto.io

VueJS

Cloudinary

GitHub

We leverage Adobe Creative Suite for a myriad of tasks. Figma is where ideas and collaboration start. InVision hosts our product style guides. VueJS powers our in-house design system and keeps us consistent. Cloudinary powers our in-house asset management system. GitHub stores all of our design components.