Hover handles domain registration for cushionapp.com.
The marketing website is hosted on GitHub Pages, which is free, static, and version-controlled.
GitHub hosts the source code of the app and GitHub Issues is used to track bugs, features, and milestones.
Siteleaf makes it possible to easily update the marketing website without needing to deploy the app.
Google Apps hosts email for the team as well as spreadsheets for research and expense tracking.
ExpeditedSSL installed the SSL certificate and automatically renews it each year. The service is a set-it-and-forget-it.
The SSL certificate encrypts requests between the app and the API.
The web app currently runs on Heroku, which is very easy to set up and maintain, but very expensive.
The web app uses a PostgreSQL database running on Heroku, which includes automatic backups.
Sentry alerts me of any uncaught exceptions in Cushion and provides all the details I need to debug them.
Papertrail pulls in all the server logs from Cushion, so I can easily query them when I need to dig deeper on an issue.
Codeship handles testing, compiling, and deployment of Cushion. It’s incredibly flexible and easy to use.
Slack is a great for chat, but also perfect for centralizing notifications from other services, like Stripe and Intercom.
Cushion uses Mandrill to send triggered emails, like password resets or failed payment follow-ups.
The newsletter update emails are sent using Mailchimp. It’s easy and powerful.
The first newsletter update email was sent using Campaign Monitor.
The asset files are served by AWS CloudFront, a content delivery service that greatly improves transfer speeds.
Hosted Graphite serves the dashboard for StatsD server metrics and user activity.
Librato serves the dashboard for server metrics and user activity, pulling in data from logs and StatsD.
Intercom is essential to communicating with Cushion users, providing customer support, user analytics, and in-app messaging.
Code Climate reviews the app code, grades it, and highlights areas that could be improved. This isn’t a necessary service, but useful for a clean codebase.
The web workers run background jobs, like generating downloadable backups and requesting 3rd party services.
The Redis database is used to queue and manage background jobs. Redis Cloud is a one-click Heroku add-on, but very expensive.
Zapier automates several workflows on the marketing side of Cushion.
Baremetrics integrates with Stripe to analyze revenue and monitor payment activity.
The scheduler spawns background jobs every 10 minutes to import new clients, projects, and invoices from Harvest for the auto-import integration.
The web app fonts are self-hosted and licensed from Just Another Foundry. The fonts include several styles from the Facit typeface by Tim Ahrens and Shoko Mugikura of Just Another Foundry.
The marketing website’s fonts are self-hosted and licensed from MyFonts. The header font is Effra Bold by Dalton Maag and the body font is FF Tisa Pro by Mitja Miklavčič.
Skylight profiles server requests and pinpoints which ones are the slowest and which are the heaviest.
Flickity is the responsive and touch-enabled carousel library by David DeSandro. We use it on the marketing page to cycle through user testimonials.
The wildcard SSL certificate secures all of Cushion’s subdomains. Namecheap came recommended, but there are plenty of other certificate resellers.
To spread the word in person, we ordered stickers from Sticker Mule. The proof was approved same-day and the stickers arrived 5 days later.
We tried Google Adwords for advertising, but quickly realized that we’re better off spreading the word in other ways while our budget is low.
We started posting design process shots to Dribbble as a way to reach a wider segment of the design community.
ChartMogul integrates with Stripe to analyze revenue and generate reports about MRR, churn, and lifetime value.
We use Postmark to send transactional emails, like confirming a user’s email upon signup, resetting passwords, etc. They’re one of those “do one thing and do it well” kind of services that we love.
Heap helps us analyze the traffic and funnels on our marketing website. We can make changes and easily see the effects.
We pay international freelancers using TransferWise, which is much cheaper and easier than using a bank.
JustWorks handles health benefits, payroll, and paying freelancers. They make it easy, so we can focus on Cushion.
To keep an eye on all of our server metrics, we use Datadog on a separate monitor to gather everything in one spot. It helps us keep an eye on any spikes in traffic, memory, etc.
We use Segment to abstract all of our analytics APIs into one.
Craft is the CMS for Cushion’s marketing website. It’s incredibly flexible, allowing us to arrange entire product pages without touching code.
An interview series where we talk to freelancers about important topics in the freelance world.
Take a close look at the costs that go into running a web app and why we use specific services.
Follow along with the journal for insight into the overall experience of building an app.