#Hello, this is magic ! #
The materialize boilerplate project is an amazing fusion from material design, polymer web components, and boilerplate framework for easy and quick deployments of web applications on the Google Cloud Platform.
###Get started in just a few easy steps*
- Download the last version of the Cloud Platform SDK and App Engine SDK for Linux, Mac OS or Windows. - hint for linux users: you must copy appengine sdk files into cloud platform sdk/bin/ folder.
- Download or clone the code of this Boilerplate (here)
- Run locally (instructions).
- Create your new project in Cloud Platform Console and get your PROJECT_ID. You can then go to https://console.cloud.google.com/code/tools?project=PROJECT_ID and download your preferred IDE.
- Set your 'application' name in app.yaml
- Set custom config parameters in bp_content/themes config/localhost.py, config/testing.py and config/production.py like secret key, recaptcha code, salt and other.
- Boilerplate will identify which config file to use in local, unit testing and production.
- To get started, look the default settings in bp_includes/config.py. Those settings will be overwrite for your config files.
- Most of the default settings will need to be changed to yield a secure and working application.
- Deploy it online with these instructions or use the installed Google AppEngine Launcher for Mac and Windows users - recommended setup: python 2.7, high replication datastore
Please note that your custom application code should be located in the bp_content folder within your own theme. The intention is that separating the boilerplate code from your application code will avoid merge conflicts as you keep up with future boilerplate changes.
*As is from GAEBoilerplate Repo
Also, you can see a simple and quick setup in this video:
###What's Materialize? Materialize simplifies life for developers and the users they serve. It speeds up development, heavy lifting has been done for you to provide a smoother experience for visitors. (showcase)
###What's Polymer? Polymer lets you build encapsulated, re-usable elements that work just like HTML elements, to use in building web applications. It makes it easier than ever to make fast, beautiful, and interoperable web components. (polymer-project)
###What's Boilerplate? A Boilerplate is used to describe sections of code that can be reused over and over in new contexts or applications which provides good default values, reducing the need to specify program details in every project. (wikipedia)
#####Functions and features
- Authentication (Sign In, Sign Out, Sign Up)
- Federated Login - login via your favorite social network (Google, Twitter, etc...) powered by OpenID and OAuth
- Reset Password
- Update User Profile
- Contact Form
- Client side and server side form validation
- Automatic detection of user language
- Support for many Languages (English, Spanish, Italian, French, Chinese, Indonesian, German, Russian, etc)
- Visitors Log
- Notifications and Confirmation for users when they change their email or password
- Responsive Design for viewing on PCs, tablets, and mobile phones (synchronized with Twitter-Bootstrap project)
- Mobile identification
- Unit Testing
- Error handling
- Basic user management features available under /admin/users/ for Google Application Administrators
#####Technologies used
- Python 2.7.5
- NDB 1.0.10 (The best datastore API for the Google App Engine Python runtime).
- Jinja2 2.6 (A fully featured template engine for Python).
- WTForms-1.0.2 (Forms validation framework keeping user interaction secure and flexible with or without javascript).
- Babel-0.9.6 and gaepytz-2011h (Industy standard internationalization renders the site in multiple languages).
- webapp2 2.5.2 (A lightweight Python web framework, the most compatible with Google App Engine).
- webapp2_extras.sessions
- webapp2_extras.routes
- webapp2_extras.auth
- webapp2_extras.i18n
- Code written following the Google Python Style Guide
- Unit testing with unittest, webtest, pyquery
- OpenID library provided by Google App Engine
- OAuth2 for federated login providers that do not support OpenID
#####Front-end Technologies
#####Interesting integrations
#####Security SSL
- SSL is enabled site wide by adding secure: always to the section: - url: /.* in app.yaml (remove this line to disable)
- SSL either requires a free google app engine *.appspot.com domain or a custom domain and certificate
- Alternatively SSL can be enabled at a controller level via webapp2 schemes. Use the secure_scheme provided in routes.py
- It is recommended to enable ssl site wide to help prevent session hijacking
Passwords
- Passwords are hashed and encrypted with SHA512 and PyCrypto.
CSRF
- Cross-site request forgery protection