This project involved building an interactive catalogue web application with items in various categories. I chose to implement a catalogue of animals organised into high-level categories.

This is project 3 of Udacity’s Full Stack Web Developer Nanodegree course. To see my other projects, go to portfolio.stevenwooding.com.

The web app was built using the Flask framework (Python) and used SQLAlchemy to interface with an SQL database using object-relational mapping (ORM). It uses the Jinja2 templating language to render HTML output.

The app supports full CRUD (Create, Read, Update, Delete) functionality of the animals, with users logging in using OAuth providers Google+ or Facebook. Users are also able to upload a photo of the animal.

The front-end uses Google’s Material Design Lite framework.

A live demo of this project is available here: zooma.stevenwooding.com.

Data is also exposed via JSON and XML endpoints at the following URLs respectively, zooma.stevenwooding.com/catalog.json and zooma.stevenwooding.com/catalog.xml.

The app has protection against cross-site request forgery (CSRF) attacks by using the Flask plugin SeaSurf. This places a unique code on form pages that has to match the code in the CSRF cookie for the form to be accepted by the web app.

The GitHub repository for this project is here: https://github.com/SteveWooding/fullstack-nanodegree-vm/tree/master/vagrant/catalog