As part of my Full Stack Web Developer Nanodegree at Udacity, we were assigned the project of building a multi-user blogging software.
Its intent is to teach an intro to backend programming.
I built Simple Blog, a simple blogging framework.
To handle encrypting passwords and authentication, I used the Passlib Python library.
See a working example of Simple Blog: https://simple-blog-151718.appspot.com
Here is the GitHub repo for: https://github.com/byanofsky/simple-blog
What It Does
Udacity required some basic functionality to be included in the final project. This included:
- Users can create accounts
- Account passwords are encrypted and stored in the database
- Users can login and logout
- Logged in users can create new posts, or edit and delete their existing posts
I learned how to build this functionality during the Udacity course.
As recommended by Udacity, I expanded upon these capabilities by adding:
- Commenting – users can create comments; and edit/delete their own comments
- Liking – users can like other users’ posts, and unlike ones they have already liked
The course did not teach how to build this functionality; I had to learn these on my own to implement properly.
What I Learned
I won’t lie. I struggled through a few aspects of building Simple Blog.
But struggling through helped me learn quite a bit.
Here’s just some of what I learned:
- How to properly structure a Python program (Spencer’s post in Udacity forum helped a lot. If you are a Udacity student, you can view it in Udacity’s Forum)
- How to properly structure a Google App Engine application (Shout out to Sunil Arora’s gae-boilerplate)
- Securely encrypting user passwords
- How to work with the NDB Datastore efficiently (NDB Documentation)
- Using Python decorators to handle common functions such as checking if a user is logged in (this primer on Python decorators helped me understand this)
Ways To Improve
There are a few things I’d still like to do to improve upon this application:
- I’d like to introduce some CSS to give it basic styling. But because I want this to be a framework, I want the styling to be easily changed or customized.
- Right now when a post is displayed, it outputs as preformatted text. I’d like it to output HTML.
- Add more functionality to the like, such as showing who else has liked a post.
- Simple Blog was built to run on Google App Engine. I’d like to build it so it can run on other platforms (such as a server through AWS).
- While user passwords are stored securely, if someone copies a cookie from one browser to another, they can be logged in to a user’s account. I’d like to research an implement a way to prevent this. I believe tokens may help with this, but need to learn more about them.
- I want to build a more extensive user dashboard. Right now, user’s can log out and create a new post from the dashboard. It’d be nice to allow them to view their own posts, and view posts they’ve liked.