Pup

v1.x

Introduction

Pup is a web application boilerplate, based on the Meteor JavaScript platform. It is intended to be a starting point for developers looking to build their first software product. Our goal above all else is to simplify the process of building your first piece of software. We're not against intermediate or advanced developers using Pup (it's a serious time saver), but our decisions will always be made in favor of beginners.

So it's clear, our definition of a beginner is someone who:

  • Understands and can build a website using HTML and CSS.
  • Has a beginner to intermediate understanding of JavaScript.
  • Has never built—or has only dabbled with building—a web application before.
New to HTML and CSS? We recommend learning it on Code School.
New to JavaScript? We recommend learning it on Code School.

While we do our best to keep things as simple as possible, the cold truth of web development is that it's difficult. This is not something that you'll just jump into and be brilliant at in a few months. It takes a lot of practice and determination. Fortunately, tools like Pup can help.

How Pup helps

Pup includes the following features to help you get to work on your application a little faster:

  • Support for React and Bootstrap via React Bootstrap.
  • Defines an application structure following the Meteor Guide.
  • Defines a set of routes using React Router (v4+).
  • Defines an accounts workflow for signing up and logging in users, as well as aiding in password recovery. Support for password-based and OAuth authentication via Facebook, GitHub, and Google is included.
  • Defines a MongoDB database collection—Documents—and connects that data to React components using containers, publications, and subscriptions.
  • Showcases how to handle basic CRUD database operations using Meteor's Methods feature.
  • Automatic account creation for an administrator and five test users. Also creates test documents for each user (including the admin).
  • Includes two static pages for displaying "Terms of Service" and "Privacy Policy." Backed by an easy-to-extend pattern for generating static content pages using Commonmark Markdown.
  • Includes a hand-picked collection of packages for adding additional functionality.
  • Includes a small suite of unit and acceptance tests using Jest and Enzyme.
  • Linting via ESLint. Follows AirBnB style guide, Meteor style guide, React style guide.

Our approach

Pup attempts to combine what we feel is the best scenario possible for building your first web application right now. In respect to our choices of tools, libraries, etc., we try to balance:

  • Which tools are easiest to grasp at a fundamental level. Can we teach this to someone who is wholly new to web development?
  • Which tools are most popular in respect to developer momentum (i.e., how many people are working on future improvements) and size of community (i.e., an increased likelihood of finding solutions to problems beyond the Clever Beagle team).
  • Which tools are most stable. Even though we value popular solutions, we're focused on stability over chasing the bleeding edge. Our customers are building products, not toys, so Pup will always prefer proven, tested tech over the new hotness.
  • Which tools we like. As Pup is primarily intended as the backing stack for our mentorship service, we ensure that all of our mentors not only understand but are comfortable using what goes into Pup.

To be blunt: unless you're a beginner having trouble with something we've built or a customer who's found a valuable modification, we really, truly, deeply do not care about your opinion. We're not jerks, but our nerdy brethren tend to assert unsolicited opinions so we gotta flex on this one. Pup is open source, fork it.

Next steps

If you're ready to board S.S. Pup, head over to the Getting Started section to learn how to get Pup up and running on your machine.

Get Started