You are on page 1of 52

NOT

How to Code a

SaaS
@ChrisOnCode
Hi I’m Chris
DigitalOcean 😃 Scotch.io 😃 @ChrisOnCode

@ChrisOnCode
What’s the fastest way
to get paying customers?

@ChrisOnCode
Agenda
A SaaS called scotch.io

Anatomy of a SaaS

Idea for a JavaScript SaaS

@ChrisOnCode
Scotch.io Lifecycle

Side Project
Provide Value (Content)
Get Users
Monetize
Analyze and Grow
Sell or Continue
@ChrisOnCode
Biggest scotch.io mistakes…

Quantity > Quality


Built our own CMS
Focused on performance

@ChrisOnCode
@ChrisOnCode
The main takeaway…

Focus on your

Value
@ChrisOnCode
What is the problem
you are solving?

@ChrisOnCode
Scotch.io Best Features

Content
Design
@ChrisOnCode
Let’s talk
SaaS

@ChrisOnCode
Scotch.io Architecture

App Database
Server Server

Droplet Droplet
Droplet

@ChrisOnCode
Scotch.io
AppArchitecture
Server

PHP Ruby Database


Server
Go
Droplet Droplet

JavaScript
Droplet

@ChrisOnCode
Scotch.io Architecture

App Database
Server Server

Droplet Droplet
Droplet

@ChrisOnCode
Scotch.io Architecture
Database Server

MySQL
App
Server
Postgres
Droplet Droplet

MongoDB
Droplet

@ChrisOnCode
Scotch.io Architecture

App Database
Server Server

Droplet Droplet
Droplet

@ChrisOnCode
Core Decisions

Language
Database
Where to store code
Where to host app
View layer
API
@ChrisOnCode
Pick what your team is comfortable with

@ChrisOnCode
Pick what gets you to ship fastest

@ChrisOnCode
Database Server App Server

DigitalOcean Droplet DigitalOcean Droplet

@ChrisOnCode
Database Server App Server

DigitalOcean Droplet DigitalOcean Droplet

@ChrisOnCode
Core Decisions

Language Networking
Database CDN
Where to store code CMS
Where to host app Forms
API View layer

@ChrisOnCode
Extra Functionality

Authentication
Payments
E-commerce
Search
Emails (Transactional)

@ChrisOnCode
Growing and Maintaining

Analytics
Customer Feedback
Ads
Emails (Marketing)

@ChrisOnCode
App Stuff Networking E-commerce
Database Payments
Database Server Forms
App Server
Authentication Search
CDN View Layer
API CMS Emails
DigitalOcean Droplet DigitalOcean Droplet

@ChrisOnCode
Payments Forms
Authentication E-commerce
Networking Search

App Stuff CMS


API
Database Server App Server

Database View Layer


DigitalOcean Droplet DigitalOcean Droplet

Emails
CDN

@ChrisOnCode
Payments Forms
Authentication E-commerce
Networking Search

App Stuff

API Database Server View Layer App Server

Database DigitalOcean Droplet DigitalOcean Droplet

Emails
CMS CDN

@ChrisOnCode
What do my customers really care about?

@ChrisOnCode
Core Decisions

Language Networking
Database CDN
Where to store code CMS
Where to host app Forms
API View layer

@ChrisOnCode
Authentication

@ChrisOnCode
Authentication

!// login a user


auth0.loginWithPopup(params);

!// get user info


auth0.getUser();

@ChrisOnCode
Payments

@ChrisOnCode
Payments

!// charge a customer


Paddle.Checkout.open({ product: 12345 });

@ChrisOnCode
Headless CMS

@ChrisOnCode
Emails

@ChrisOnCode
@ChrisOnCode
Analytics
Authentication
Customer Feedback
Payments
Ads
E-commerce
Emails (Marketing)
Search
Emails (Transactional)

@ChrisOnCode
We have whole teams of devs
waiting to work for us.

@ChrisOnCode
How could I build a SaaS in 2020?
in JavaScript

@ChrisOnCode
JAMstack Architecture

Headless CMS

Database App API Frontend

@ChrisOnCode
Strapi Frontend

@ChrisOnCode
JAMstack Architecture

Headless CMS

Strapi Frontend

@ChrisOnCode
1-Click
DigitalOcean Apps

@ChrisOnCode
marketplace.digitalocean.com

@ChrisOnCode
Strapi as a Headless CMS

Language Networking
Database API
Where to host app CMS

@ChrisOnCode
View layer

@ChrisOnCode
plugins: [
{
View layer
resolve: `gatsby-source-strapi`,
options: {
apiURL: `http:!//localhost:1337`,
contentTypes: [`article`, `user`],
singleTypes: [`home-page`, `contact`],
loginData: {
identifier: "",
password: "",
},
},
},
]
@ChrisOnCode
{ View layer
allStrapiArticle {
edges {
node {
id
title
content
}
}
}
}
@ChrisOnCode
If my SaaS flops…

@ChrisOnCode
At least I didn’t write my own CMS!

@ChrisOnCode
Summary
Focus on core value proposition

Outsource things that don’t matter

@ChrisOnCode
Creating a SaaS is easier in 2020.
If you choose to make it easier.

@ChrisOnCode

You might also like