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

Storybook

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

ReactiveSwift

Apollo

Cocoapods

Texture

Fastlane

Quick/Nimble

Our flagship iPhone/iPad app is written in 100% heavily-functional Swift. We have adopted MVVM and dependency injection to distribute responsibilities and make our code easily tested with the Quick and Nimble frameworks.

The app uses ReactiveCocoa/ReactiveSwift for data binding and asynchronous communication throughout the app. For networking, we use a combination of REST APIs backed by Alamofire, and GraphQL APIs backed by Apollo.

We use ReSwift for storing and communicating changes to global state. Lastly, our build process is simplified with Cocoapods and Fastlane, and is glued together with CircleCI.

Android Stack

Kotlin

Retrofit

Espresso

Mockito

Apollo

FCM

Jetpack

Koin

Coroutines

Databinding

The Doximity app is written in 100% Kotlin. We follow the Clean Architecture approach, adhering to SOLID principles. We use a custom architecture on the view layer utilizing Jetpack components and databinding. 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 Mockito. In addition, we use Firebase Test Lab to run our Espresso instrumentation tests.

Data Stack

Python

Spark

Snowflake

EMR

Docker

Airflow

Jupyter

Looker

Doximity relies on Python's powerful data libraries such as pandas, scikit-learn, gensim, and nltk. We also leverage Apache Spark (PySpark), Jupyter, GraphX, and Spark ML. Our centralized warehouse is powered by Snowflake, and 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

Sensu

Terraform

Kubernetes

Chef

Docker

OpenTracing

Grafana & Prometheus

Ubuntu is our operating system of choice for all servers. We leverage Chef, Terraform, and Packer 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 Sensu, Prometheus, Graphite, Grafana, and many others. Hubot deploys, migrates, and restarts our applications. We leverage HackerOne for our security bounty program.

Automation Stack

CircleCI

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

Adobe Creative Suite

Sketch

Zeplin

Figma

InVision

Asana

Flinto

Principal

Proto.io

Dropbox

We leverage Adobe Creative Suite for a myriad of tasks. Sketch is where our ideas start. Zeplin and Flinto share those ideas across teams. Dropbox is our go-to for asset sharing. InVision DSM keeps us consistent.

Follow us for updates and new blog posts.