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"
policyalternatives.ca/publications/monitor/apploitation-city-instaserfs
illustration by Remie Geoffroi
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
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
- Unit tests: Tape / Faucet
- Integration: Sticky
Client
- Unit: babel-tape-runner (everything is terrible)
- Integration: todo (!!!)
- End-to-end: in progress
Facebook test accounts
Continuous Integration (CI)
Local dev
GitHub
CircleCI
(test + build)
Docker Hub
Web Client
Monitoring
Three
Back-end
Hapi
MongoDB
logging, crash reporting, sending sms, emails, slack notifiers
One
Web Client
Three
Web Client
Recommended:
- CycleJS (probably?)
- Elm
Google Analytics
- Bullet One
- Bullet Two
- Bullet Three
Analytics
Server Logs
- Bullet One
- Bullet Two
- Bullet Three
Static Analys
Monitoring
Three
Third-party services
Payments
- Bullet One
- Bullet Two
- Bullet Three
One
Two
Three
Monitoring
One
Static Analys
React
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
startup
- 1,106