The finest web ingredients, blended into a scrumptious boilerplate for Google App Engine.
Sample websites created with Not VanillAE: SAMA Kitchen, Superhuman Labs, VitalMedicals, NoJack, YourShow
Responsive Client
HTML5 Boilerplate, Twitter Bootstrap, Modernizr, PJAX.js, socialite.js, and sticky footer, seamlessly blended and buttery smooth.
Simpler Server
Webapp2, Jinja2 and Google Service APIs on Python 2.7, all drizzled with home-made decorators and wrappers for lightweight routing, templating and user authentication.
Fast
Liberally sprinkled with smart caching treats, async javascript loading and squished css/javascript to keep your site fast and your GAE costs down.
Not VanillAE is great for anyone who wants a rapid setup on Google App Engine, using pre-built starter code that merges high-quality boilerplate, frameworks and clever stuff from the community.
This isn't a good fit if:
- You're not using Google App Engine
- You're building a large app that would benefit from a full MVC framework such as Django
- You need a Content Management System (take a look at Django-cms + Google Cloud SQL, or Vosao for Java on GAE)
- You don't want some random lunatic deciding what is the 'best' tech for your app
Although VanillAE incorporates a lot of great stuff, I haven't just thrown in everything and the kitchen sink. Each component performs a specific useful function that you probably want, and does it better than you (easily) could without it. Each component is used in the starter site bundled with VanillAE. If for some reason you don't want a particular component, it's easy to remove.
- Twitter Bootstrap
- HTML5 Boilerplate
- Modernizr (disabled by default in favour of html5shim)
- Font Awesome
- PJAX.js
- socialite.js
- Sticky Footer
- Jinja2
- Google APIs
- Google Users API
Some features provided by other boilerplates are not included. I will be considering these for future versions:
- User preferences and mangagement outside Google accounts
- Sessions
- I18N
- Unit testing
- Form validation
If you need these features you can take a look at App Engine Essence or Google App Engine Boilerplate
- Python 2.7. Mac OS X 10.7 Lion users already have Python 2.7 installed.
- The App Engine SDK for Python. Run the installer if appropriate for your platform, or extract the zip file in a convenient place.
You'll need to host your app on an instance of Google App Engine:
- Go to http://appengine.google.com.
- Click Create Application and create a public Google App Engine instance hosted on appspot.com.
- Give the application an Application Identifier and select Google Accounts users. You'll need the application identifier later to configure Not VanillAE.
- The proper way: Clone (or fork and clone) this repository
git clone https://github.com/SoulAuctioneer/NotVanillAE.git
- The easy way: Download the zip and extract it.
- Edit
app.yaml
and change theapplication
value to the Application Identifier you specified on appspot.com. - Edit
settings.py
and changeapp_title
,urls
,oauth
andgoogle_analytics
.
- Run the following command from a prompt:
appcfg.py update notvanillae/
or click Deploy in Google App Engine Launcher. - Enter your Google username and password at the prompts.
You can now see your application running on App Engine. If you set up a free appspot.com domain name, the URL for your website begins with your application ID:
http://your-app-id.appspot.com
Congratulations!
Not VanillAE uses Grunt to automate css and js minification and concatenation. To install:
- Install Node.js
- Install the Grunt CLI:
npm install -g grunt-cli
- Change to the project's root directory.
- Install project dependencies with
npm install
. - Run Grunt with
grunt
.
- Add templates to the
templates
directory, using_template.html
for an example. - Configure routes in
routes.py
, using the examples to get started. - Add handlers for non-static routes.
- Decorate your handler methods with
@decorators.checks_auth
and/or@decorators.sends_response
. A@cached
decorator is also available. - PJAX any internal links by adding a
data-pjax
attribute to your link tags, i.e.<a href="..." data-pjax>...</a>
- Add custom CSS to
/assets/css/main.css
- Add custom JavaScript to
/assets/js/main.js
- Allow app to be deployed without Grunt
- Comment all code
- Score >95% on Google Page Speed.
- Determine a dependency management strategy.
- Integrate option for user authentication via OpenID.
- Identify and review similar boilerplate projects for good ideas to incorporate.
- Create more comprehensive customization documentation.
Author: Ash Eldritch @ PajamaNinja http://www.pajamaninja.com/
License: Distributed under the MIT license. All dependencies have their own licenses.