Rails, Angular, Postgres, and Bootstrap

Powerful, Effective, and Efficient Full-Stack Web Development

Second Edition, for Rails 5.1, Angular 4, Postgres 9.6

A Book by David Bryant Copeland

Buy Now $24.95Second Edition

Web Development Requires Knowing the Full Stack

  • You…
  • know a bit of Rails.
  • care about user experience.
  • care about performance.
  • want your code simple, testable, and maintainable.

A Holistic View of Web Development

How you design and use your database is just as important as how you style your user interface. By thinking of problems in the context of the entire application stack, you can produce better solutions than by simply focusing on one area.

The Stack You'll Learn

View: Angular and Bootstrap

View: Angular and Bootstrap View: Angular and Bootstrap
  • Manage front-end assets with NPM
  • Create dynamic user interfaces
  • Wrangle asynchronous JavaScript for a great user experience
  • Lay out user interfaces using grid-based design

Middleware: Ruby on Rails

Middleware: Ruby on Rails Middleware: Ruby on Rails
  • Use Webpack instead of the Asset Pipeline
  • Isolate Postgres-specific code
  • Test end-to-end with PhantomJS
  • Unit test JavaScript with Jasmine and Testdouble.js

Datastore: PostgreSQL

Datastore: PostgreSQL Datastore: PostgreSQL
  • Model data using constraints
  • Create sophisticated indexes for fast queries
  • Store indexed JSON
  • Materialized views to simplify complex queries

Why Angular, Postgres, and Bootstrap?

While these aren't the only tools of their type, they are top-notch and widely used. This book will help you get the most out of them.

Talk: “The Power Stack” from Full Stack Toronto


Tired of slinging JQuery, creating data- attributes, and hacking out your own half-implemented client-side framework? Angular makes all that go away, with clean, testable, well-organized code and front-end templates.

  • Dead-simple AJAX calls without callback hell
  • Compose your UI and organize yoru code around components
  • De-couple your code into units, like you would in Rails
  • Clear separation of view templates and view logic
  • Test it all


Postgres is a best-of-breed SQL database. If you are used to MySQL, get ready to have your mind blown by what you can do. You'll have powerful tools to manage your data and control your database's performance.

  • Indexed and Queriable JSON
  • Auto-refreshing materialized Views
  • Index on derived values, not just static ones
  • Sophisticated Constraints
  • UPSERT to create or modify rows in one statement


Bootstrap is a CSS framework that allows you to create a wide variety of user interfaces and designs without writing any CSS. CSS can be a huge source of complexity and frustration, and Bootstrap gives you a ton of tools to create pretty good user experiences without writing your own.

  • Grid-based design
  • Attractive and usable forms and buttons
  • Panels, flashes, progressbars, and many other components
  • Don't write CSS

The Holistic View

Above all else, you'll see how knowledge of these technologies, when considered together, will allow you great freedom in how you approach a particular problem. You won't have to sacrifice user experience, performance, or security, because you'll have a holistic view of your entire application's stack.

My Other Books

Agile Web Development with Rails 5.1

The Senior Software Engineer

11 Practices of an Effective Technical Leader

Build Awesome Command-Line Applications in Ruby 2

Control your Computer, Simplify your Life

About Me

I'm a programmer, musician, and author. I speak frequently at national and regional conferences and spend my days currently as a Director of Engineering at Stitch Fix. I've written applications in C, Java, Ruby, Scala, and many others, on large and small teams. As a developer, I believe in clean code, making it right, providing a great user experience and using the right tool for the job. As a bass player, I believe in using a pick, locking it down, and ripping off Peter Hook. As an author, I insist on the Oxford Comma, try to avoid semi-colons, and have removed “very” and “thing” from my dictionary.

Other Writing