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 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:
- (⌚) = 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 (✔)
- 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 (✔)
- more to come...
-
A complete email delivery flow: (⌚)
- A pre-prepared and sane standard for e-mail layouts (using a variation of the HTML5 Email Boilerplate) (✔)
- A working integration with Mandrill (✔)
- 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 (✔)
- 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...
-
Maybe some startup relevant widgets:
- A weekly growth calculator
- A cash burn rate calculator
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 [email protected]: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
. -
Exit your
ssh
(the Virtual Machine), go to your folder and rungulp watch
. -
You're golden.
-
(Optional): Log in with username
[email protected]
and passwordsecret
(remember to delete this user or change it when going online!), navigate toadmin/
and play around.
Grab your 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.
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.
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.