web tech 2016

from a startup, from a startup hater

Unavoidable startup stuff

I promise to keep this short

OpenRide

  • Rideshare app
  • Started as MBA project
  • First contact: Aug 2015
  • First commit: Sept 22
  • Full time: Nov 1
  • Launch: Feb 1

https://openride.co

OpenRide

  • Hundreds of users
  • Thousands of searches
  • Dozens of rides posted

↓ Market

tech that way →

"Sharing Economy"

Bootstrapping

  • Transient supply and demand
  • Harder than eg., Airbnb or Etsy
  • Eh, works on Facebook

↓ Bias (people suck)

tech that way →

  • 50% acceptance for white sounding names, 42% for black sounding names
  • Taxi tips
  • Job callbacks
  • Ebay
  • Classified ads rates

↓ Trust

tech that way →

Trust vs. Confidence

  • Reviews give you confidence
  • Mutual friends and shared networks inspire trust

↓ Growth

tech that way →

↓ Funding

tech that way →

↓MVP/Soft Launch

tech that way →

MVP/Soft Launch

  • What features does your app need to function?
  • What features does it need for people to use it?

↓Liability

tech that way →

Not
Like
Uber

Tech:
build the house
you live in

aka. everything is garbage

Fast, Correct, Scalable, blah

  • We hope to scale -- fast
  • We will hire people

Known knowns

Known unknowns

Unknown unknowns

....?

https://i.ytimg.com/vi/r-67qz0fKpY/maxresdefault.jpg

Stack

HAProxy (Load Balancer)

Proxy (Docker container)

Client static app

App server

API server

MongoDB

Facebook

Email,

SMS, ...

Proxy container

Client static app container

  • Serves static HTML, CSS, JS
  • Soon: Templating for meta vars
  • Later: CDN (for CSS and JS at least)

App container

  • Authentication, ie. Facebook OAuth
  • Account verification
  • Requests proxied at path prefix /_app/

API container

  • Data!
  • Other third-party services
  • Requests proxied at prefix /_api/

Testing

Server

Client

  • Unit: babel-tape-runner (everything is terrible)
  • Integration: todo (!!!)
  • End-to-end: in progress

Facebook test accounts

Continuous Integration (CI)

Local dev

GitHub

(feature branch)

CircleCI

(test + build)

Docker Hub

Back-end

Hapi

MongoDB

logging, crash reporting, sending sms, emails, slack notifiers

One
Web Client
Three

Web Client

component (React)

reducer

initial state

updaters

accessors

actions

Recommended:

  • CycleJS (probably?)
  • Elm

Google Analytics

  • Bullet One
  • Bullet Two
  • Bullet Three

Analytics

Server Logs

  • Bullet One
  • Bullet Two
  • Bullet Three

Third-party services

Payments

  • Bullet One
  • Bullet Two
  • Bullet Three

One
Two
Three

Monitoring

Security

One
Two
Stack

User Experience

One
Two
Three

Process

One
Two
Three

API

One
Stack
Three

Accessibility

Static Analys
Two
Three

Static Analysis

Web Client
Two
Three

Development Environment

Stack
Two
Three

startup

By Phil Schleihauf