This project is a blog system built using Django and PostgreSQL. The front-end is the Django template system using Bootstrap 5 and some custom CSS. You're looking at the project right now! The app supports CRUD operations for authenticated users to create, update and delete there posts. Unauthenticated users can only read posts. In the code there is support for a front-end user registration system but it's commented out after making it since I don't want the public posting on my portfolio.


  • Authentication system including password managment and reset using the built in auth_views..
  • Portfolio Project system with CRUD support.
  • Blog system with relation database links to projects the blog post are about.
  • TinyMCE rich text editor intigration for Project and Blog Posts main content section.
  • Image upload system using AWS S3 and the database to store the URL of the image.
  • Bootstrap 5 + custom CSS styling makes the site prety mobile freindly.
  • Deployed to Heroku PAAS directly from git

Related posts

This week I tried to add an older command line only project to my portfolio. The first project I picked was my Hashmap project. I thought about building out some sort of gui display but decided agaist it since it's not really a visual project. Insead I linked the GitHub repository to a repelit and went to embed that. I ran into a small bug, by default Django wants to display HTML as plain text is it's pulling it from the data base.

In researching the problem I discovered 2 things. First adding a |safe to my template  like so {{ Object.content|safe }} allows it to display CSS and HTML code. Secound if I'm going to allow HTML in post and projects, adding a rich text editor to format the content is pretty easy.

It looks like TinyMCE supports spell check if you add a dictionary. I'll try to add that in another sitting.

The new CRUD operations for projects are pretty similar to posts. Along the way I ran into a bug with up loading image files. I learned my form tag needs to include
Along with having a file with a UploadFileForm class in the blog app. I left a pretty detailed note to my self in the comments. What surprised me most in researching the bug was how elaborate the workarounds others were compare to the 3 lines of code I put in blog/
I added a project grid view and set it as the home page of my portfolio. Since this is a portfolio I really want my projects to be the first thing people see when they open my site. I need to play around with the CSS a little bit to see if I can make it look better. I added a relational link between posts and projects so posts about projects can be displayed below the project.

I've used other blogging systems before such as WordPress but I wanted to build something that was my own as I start to build a more serious portfolio. A lot of the smaller projects I've made are command line only which is pretty boring so I'm going to use Django's app system to build basic front ends to present the projects. This is my second Django project. So far I'm really impressed with Django and how organized it is.

Contact me

These links will open in new tabs. Check your popup blocker if nothing happens.