Sidequest was built with an "everyone's invited" mindset, so please don't hesitate to submit pull requests, write issues and comments. Everyone is welcome to chip in and hack along. Let's work together as friends and likeminds on making a helpful project. :)
Also, @tshafer has forked Sidequest into an alternative direction, so don't forget to check out what he's doing too. Might also be helpful!
Sidequest was created, and actively maintained by Anders Schmidt Hansen, in order to provide the fastest way possible from an idea to a functional SaaS (Software as a Service) product. It focuses on more than just the developer, it focuses on the entire team behind the SaaS. It aims to become "what I wish I had available when I first started Pitcherific", and a little bit more.
Too long, don't wanna read? Watch a (somewhat random) video tour of a few parts of Sidequest. No Audio!
Sidequest can be considered a continuation of Laravel; where it stops, this layer on top of Laravel 5 takes things a couple of steps further. While it is currently a "work-in-progress", Sidequest aims to make the following available to the technical co-founder (and the rest of his team!):
Legend:
- 💡 = Proposed idea or enhancement
- (⌚) = Working on it or not yet fully complete
- (✔) = Should work as intended
- (×) = Not implemented or not working as it should (yet)
-
A complete user management flow: (⌚)
- Registering a new user (✔)
- Logging in a user (✔)
- Sending password reminders to a user (✔)
- Differentiating between admin and non-admin users (✔)
- Sending newly registered users a welcome email (✔)
- Easily turn some users into testers (can access paywalled features freely for a limited time period) (✔)
- more to come...
-
A complete Stripe integration flow: (⌚)
- Signing a user up for a plan (✔)
- Charging a user's credit card (✔)
- Sending the user a receipt email via Stripe that are also recurrent (✔, see setup guide)
- Updating the user's credit card (✔)
- Swapping plans and upgrading a user's plan (✔)
- Cancelling a user's subscription, leaving them on a grace period (✔)
- Simple coupon / discount / "get a month free" handling (:bulb:)
- more to come...
-
A complete email delivery & communications flow: (⌚)
- A pre-prepared and sane standard for e-mail layouts (using a variation of the HTML5 Email Boilerplate) (✔)
- A working integration with Mandrill for transactional emails (✔)
- Signing a new user up for a Mailchimp List (✔)
- Sending bulk email updates with Mailchimp (✔)
- Easily update users on new feature changes (will either be with transactional emails or push notifications) (:bulb:)
- more to come...
-
A complete administrative flow: (⌚)
-
A clean, administrative panel for maintaining the application (✔)
-
A great place to have non-technical founders help out with stuff you as a technical co-founder shouldn't waste your time with (✔)
-
An application settings area where one can set and change...
- Application Name (✔)
- Shortcut icons & Favicon (✔)
- Publishable Stripe API key (✔)
- Google Analytics API key (✔)
- Google Site Verification Key (✔)
- Heap Analytics API key (✔)
- Olark (Customer Support) API key (✔)
- Keen.io API keys (✔)
- All images needed for making the site become web app enabled (using Apple Touch Images) (✔)
- Social Media App IDs for Facebook, Twitter and Google Plus & Play (✔)
- Company details such as the company logo, address, support e-mail etc. (✔)
- more to come...
-
A "Users" area where you can...
- Get a paginated list of all your users (✔)
- View basic statistics of how many users you've got, how many that are plan subscribers and how many that are not (✔)
-
A "Plans" area where you can...
- quickly get an overview of your plans (great for your non-technical co-founders!) (✔)
- import subscription plans from Stripe (✔)
- cache the plans in your database to quickly and easily display them on your "/pricing" page (✔)
- add descriptions to plans (✔)
- add features to plans (✔)
- delete plans from cache (✔)
- delete plans from Stripe (which also deletes them from the cache) (✔)
- more to come...
-
A "Developer Zone" where you can...
- view production mode error logs (and clear the laravel.log file too) (✔)
- have production and staging errors sent to Bugsnag (✔)
- more to come...
-
-
A complete social sharing flow: (⌚)
- Facebook Open Graph meta tags ready (✔)
- Twitter Card meta tags ready (✔)
- Google Play meta tags ready (✔)
- Site description meta tags ready (✔)
- Site image meta tags ready (if images have been uploaded) (✔)
- more to come...
-
A complete web app enhanced experience: (⌚)
apple-mobile-web-app-capable
andmobile-web-app-capable
ready (✔)app-title
ready andapp-status-bar
is set to be transparent (✔)- Mandatory Apple Touch Images and Icons are loaded (✔)
- more to come...
-
A complete "oh right, those legal pages..." flow: (⌚)
- A basic Privacy Policy page (✔)
- A basic Terms of Use page (✔)
- A cookie policy notice that appears (and disappears) when a guest first visits the site (✔)
- Editing of Privacy Policy and Terms of Use content in the Administration Panel (✔)
- more to come...
-
Relevant analytics for SaaS startups: (⌚)
- An integration with the awesome Keen.io, enabling... (✔)
- an Analytics page on the Admin Dashboard with... (✔, see the setup guide here)
- a "Weekly Growth rate" metric based on the weekly growth in revenue since the past week (✔)
- a "New Paying Customers" graph over the last 2 months (✔)
- a "Revenue per month" graph (✔)
- a "Today's revenue" metric (✔)
- a "Last 30 days' revenue" metric (✔)
- a "Total paying customers" metric (✔)
Getting started is straight-forward, especially if you have Laravel Homestead installed. So assuming that you've got it set up, just do the following:
- Create a new project folder in your
Code
folder (or whatever you've made when you set up Homestead). cd
into the folder and clone Sidequest from GitHub:git clone git@github.com:LaravelSidequest.git .
- With the Sidequest content in place, run
homestead ssh
and navigate to your folder. - Run
npm install
to get the necessarynode_modules
. - Run
composer install
. - Run
php artisan migrate
. - Run
php artisan db:seed
. - Run
php artisan key:generate
. - Rename
.env.example
to.env
. - Exit your
ssh
(the Virtual Machine), go to your folder and rungulp watch
. - You're golden.
- Get a Stripe account.
- Get a Heap Analytics account. Remember to grab the development-version key, by clicking on the "click here" link at the install page
- Get a Keen.io account. Note: I recommend creating a new project called development to keep this separate from production when testing.
- Get a Mandrill account.
- Get a Bugsnag account.
- Log in with username
admin@sidequest.io
and passwordsecret
(remember to delete this user or change it when going online!), navigate to http://localhost:3000/admin. - Now it's time to fill out your Application Settings...
- Click on "General Settings" and change the Application Name to whatever your project is named.
- IF you already have Shortcut Icons and Favicons ready in the needed dimensions, upload those. Otherwise, continue.
- Go to the "Engine Room" page and start out by adding your Publishable Stripe API key. How do I find this?
- Next, add your development-version Heap Analytics API key.
- Finally, add your Keen.io Project ID and Keen.io Read Key. How do I find this?
- Hit the green "Save" button.
- Open "Company Details" and fill out your address and support email. If you already have a logo, great, upload it and hit "Save" again.
- Open your local
.env
file and fill out your "Stripe Secret Key", your "MAIL" details (from Mandrill) and "Mandrill Secret Key", and finally your "Bugsnag Secret Key". - The development version of your project should now be ready. You can fill out further details if you want, but this should be enough to get you started.
- Get a Google Analytics account.
- Get an Olark account.
- more to come...
Important: Test, test, test and test again. Check everything.
To be honest, the simplest way to get this kind of Laravel project online is to host it on Laravel Forge. This isn't an ad or anything, honestly, but unless you're very comfortable at setting a Laravel project up on a server, I'd strongly recommend just following this series of setup guides and get things out there.
Important: Test, test, test and test again. Check everything (again).
After being authenticated by Stripe, grab your live secret
and publishable
API keys from your Stripe Dashboard. Add the secret
one to your .env
file and the publishable
goes into the administrative panel. After hitting Save
(and you have a subscription plan defined, of course), you should be good to go.
Note, this is not necessary in development.
Important: You need SSL for your site when charging customers. It also sends a serious signal to your potential customers that your site is secure. Laravel Forge makes this super easy, so if you just want to get going, then use that solution.
After doing homestead up
, run gulp watch
in the root folder to bring up
your browser window at localhost:3000
. BrowserSync should now be running,
allowing you to do edit your PHP, Sass and Coffeescript and have your
application reload automatically on changes. It seriously can't get easier
than this.
To access the BrowserSync UI, go to http://localhost:3001/.
Remember: Don't run gulp watch
through a homestead ssh
connection. That won't work. Just go to your local folder and run the command from there.
Both the consumer-facing and admin-facing ends of Sidequest includes Twitter Bootstrap. Some things have already been set up. Mind you, given the fact that it's an impossible task to pre-prepare a front-end and at the same time not force the developer / front-ender to strip all of it away, I've decided to pre-style a few modules and add more utility classes instead of supplying a ready-to-use front-end (which doesn't really exist in reality).
I'm a huge fan of Way's generators for Laravel 5 and Sidequest would be lacking something if these were not also included right from the get-go. Read more about the "[Laravel 5 Generators - Extended here]"(https://github.com/laracasts/Laravel-5-Generators-Extended).
Sidequest includes Barry vd. Heuvel's "Laravel Debugbar" to make debugging Laravel a bit easier. You can read more about it at the project's own page.
Sidequest utilizes the excellent Laravel Elixir module that comes baked into Laravel 5, which makes pre-processing Sass and Coffeescript (and PHPUnit and much more) a walk in the park.
The project comes with a well-architectured Sass folder structure based on Hugo Giraudel's "7-1 Pattern", which you can read more about here. The architecture is well-documented and you import all your components into the app.scss
file.
Mind you, it is only the architecture that is set up. You will find no pre-defined stylings that you first have to remove before you can get going. You simply go do your front-end thing.
Your mileage will probably vary, and that's cool, but Sidequest is not meant to cover everything. It will always be a Laravel thing with a Stripe integration, which is not for everyone. Feel free to fork the project though, morph it into what you prefer.
Of course you can! Anyone interested can help out, especially if you're a part of the digital startup scene (technical and non-technical founders) and a developer, front-ender, designer, marketer and so forth. Drop me a note on Twitter (@lichine) and let's talk about it.
Sidequest is just Laravel with some extra work added on to it. Therefore, this project is licensed under the MIT license.