Engineering Stack

Web Application Stack

Doximity's web applications are built primarily using Ruby, Rails, JavaScript and Go. GraphQL and Kafka power our newer microservices.

Front-end Stack

We build client applications in ES6 and CoffeeScript using tools such as Vue.js and React. Our goal is to build performant clients with an eye for progressive enhancement.

iOS Stack

Our native iPhone, iPad, and Apple Watch apps are written in Objective-C and Swift. We develop and maintain internal frameworks that are reused for core functionality such as networking, model serialization, and caching across our apps. Core Data is used for persistent local caching. We run an in-house APN server to track, customize, and deploy push notifications to our users.

Android Stack

Retrofit, Picasso and OkHttp handle all the network layer communication. We use RxJava and RxAndroid to bring reactive programming to Android. Design support libraries to bring Material design look and feel. Espresso, Mockito, and Robolectric for testing purposes. And we follow the latest Google Android developer patterns in our code.

Data Stores

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

Data Stack

Doximity relies on Python's powerful data libraries, scikit-learn, gensim, and nltk. We also leverage Apache Spark tooling: GraphX, Spark ML and integrate our models with our scripts and data stores with Airflow.

Server Stack

Ubuntu is our operating system of choice for all servers. We leverage Chef, Terraform, and Packer for automation and provisioning across a AWS and DigitalOcean servers. Sensu and New Relic are used to monitor hundreds of services within our application servers. Hubot deploys, migrates and restarts our applications, It also triggers the automation suite runs.

Automation Stack

We rely on CircleCI to run our massive suite of unit tests and feature specs for every single commit of our web applications. Each build is parallelized across multiple containers that auto-scale to provide the development team with quality feedback, fast. To ensure the same quality on mobile, we rely on a self-hosted instance of Jenkins to build, test, and deploy our iOS and Android applications.

Follow us for updates and new blog posts.