StackShareStackShare
Follow on
StackShare

Discover and share technology stacks from companies around the world.

Follow on

© 2025 StackShare. All rights reserved.

Product

  • Stacks
  • Tools
  • Feed

Company

  • About
  • Contact

Legal

  • Privacy Policy
  • Terms of Service
  1. Home
  2. Companies
  3. Heap
Heap

Heap

san franciscoheapanalytics.com

Heap automatically captures every user action in your app and lets you measure it all. Clicks, taps, swipes, form submissions, page views, and more. Track events and segment users instantly. No pushing code. No waiting for data to trickle in.

39tools
3decisions
302followers
OverviewTech Stack39Dev Feed

Tech Stack

View all 39
Stack by Layer
Application & Data18
Utilities5
DevOps11
Business Tools5
Application & Data
18 tools (46%)
Utilities
5 tools (13%)
DevOps
11 tools (28%)
Business Tools
5 tools (13%)

Application & Data

18
TypeScriptApache FlinkNode.jsMobXNGINXAmazon S3Apache SparkAmazon VPCScalaAmazon Route 53ExpressJSCoffeeScriptReact StorybookRedisPostgreSQLCitusInfluxDBAmazon EC2

Utilities

5
MandrillTwilio SendGridSlackHeapKafka

DevOps

11
AnsibleSaltPrometheusgulpWebpacklogz.ioGrafanaPagerDutyTerraformGitHubCircleCI

Business Tools

5
ReactSelect2HighchartsD3.jsG Suite

Latest from Engineering

View all
Dan Robinson
Dan Robinson

Sep 13, 2018

Needs advice

The front end for Heap begun to grow unwieldy. The original jQuery pieces became difficult to maintain and scale, and a decision was made to introduce Backbone.js, Marionette, and TypeScript. Ultimately this ended up being a “detour” in the search for a scalable and maintainable front-end solution. The system did allow for developers to reuse components efficiently, but adding features was a difficult process, and it eventually became a bottleneck in advancing the product.

Today, the Heap product consists primarily of a customer-facing dashboard powered by React, MobX, and TypeScript on the front end. We wrote our migration to React and MobX in detail last year here.

#JavascriptUiLibraries #Libraries #JavascriptMvcFrameworks #TemplatingLanguagesExtensions

434k views434k
Comments
Dan Robinson
Dan Robinson

Sep 13, 2018

Needs advice

At Heap, we searched for an existing tool that would allow us to express the full range of analyses we needed, index the event definitions that made up the analyses, and was a mature, natively distributed system.

After coming up empty on this search, we decided to compromise on the “maturity” requirement and build our own distributed system around Citus and sharded PostgreSQL. It was at this point that we also introduced Kafka as a queueing layer between the Node.js application servers and Postgres.

If we could go back in time, we probably would have started using Kafka on day one. One of the biggest benefits in adopting Kafka has been the peace of mind that it brings. In an analytics infrastructure, it’s often possible to make data ingestion idempotent.

In Heap’s case, that means that, if anything downstream from Kafka goes down, we won’t lose any data – it’s just going to take a bit longer to get to its destination. We also learned that you want the path between data hitting your servers and your initial persistence layer (in this case, Kafka) to be as short and simple as possible, since that is the surface area where a failure means you can lose customer data. We learned that it’s a very good fit for an analytics tool, since you can handle a huge number of incoming writes with relatively low latency. Kafka also gives you the ability to “replay” the data flow: it’s like a commit log for your whole infrastructure.

#MessageQueue #Databases #FrameworksFullStack

141k views141k
Comments
Dan Robinson
Dan Robinson

Sep 13, 2018

Needs advice

PostgreSQL was an easy early decision for the founding team. The relational data model fit the types of analyses they would be doing: filtering, grouping, joining, etc., and it was the database they knew best.

Shortly after adopting PG, they discovered Citus, which is a tool that makes it easy to distribute queries. Although it was a young project and a fork of Postgres at that point, Dan says the team was very available, highly expert, and it wouldn’t be very difficult to move back to PG if they needed to.

The stuff they forked was in query execution. You could treat the worker nodes like regular PG instances. Citus also gave them a ton of flexibility to make queries fast, and again, they felt the data model was the best fit for their application.

#DataStores #Databases

75.4k views75.4k
Comments

Tools Owned

Heap
Heap
Verified
555 followers689 stacks

Team on StackShare

3
swag
matinm
Dan Robinson