I once interviewed for a job as a python web developer. During the technical interview, HR was impressed with my level of experience. Although I was familiar with the framework, I didn’t have a major project with it. I had a blog at the time, but I used WordPress to design it.
The interviewer also asked if my blog was designed using python. Got me thinking, what was the point of learning the framework if I am not going to use it for any of my products.
I started building a blog app. Initially, it was meant to be a pet project, but as my youtube channel began to grow, the need to have a website and blog for sharing text-based tutorials became paramount.
The Building Process
Working on this project exposed me to some advanced concepts that are not covered in most tutorials online.
Concepts such as optimizing your site for search engines (adding sitemap, robot.txt, RSS feeds), using SEO-friendly URLs, deploying on a hosting server.
During the building process, I came to realize that there’s a difference between following along with a tutorial and coding a real project from scratch.
The blog app was built using Python and Django web framework for the backend. The front end utilizes Jinga templating engine along with some HTML, CSS, Bootstrap, and JavaScript.
It uses Django’s default user model and the basic authentication in Django.
Features of the Blog App
This is a full-featured web application, which means virtually all the features you get when using a CMS is available on this app.
Thanks to Django’s admin application that provides a GUI for managing your app, much like the WordPress admin dashboard.
Here are some of the features of the app at a glance.
1. User registration and login.
2. Comment on posts and also reply to other comments.
3. Ability to create posts for users with author’s privilege.
4. Search posts based on title and content.
5. Filter posts based on category.
6. Ability to add multiple categories to a single post.
7. Rich Text Editor
8. RSS feeds
9. Sitemap for SEO
10. User dashboard.
11. Newsletter for collecting emails.
12. Store App (Coming Soon).
Tool Used to Built the Django Web App
Frontend: The frontend uses a mix of HTML, CSS, Bootstrap, JavaScript, and Python Jinja templating engine.
Backend: For the backend, the app is powered by Django, a python web framework for rapid web development.
DevOps: Static and media files are hosted on the AWS S3 bucket. The app is hosted on Heroku’s free dynos although we plan on moving to another host due to an increase in traffic. Insane right?
Secure SSL from Cloudflare.
Future Plans
1. Move to a paid hosting platform
2. Implement REST API endpoint and convert frontend to use React.
3. Compress image size to improve website speed.
4. Create content to increase brand awareness.
Testing the Web Application
The web application is available at ndmediadesigns.com which is this blog you are currently reading. I converted the blog application into a business website, which means that the main domain is a landing page. The blog is available at ndmediadesigns.com/blog.
Accessing posts is free for all users, however, to comment on the website, you need to register and log in to your account. The reason for this is to minimize the number of spam comments from bots.
With this app, you can search a specific keyword to filter posts based on the keyword you specified in the search field.
There is also an option to list posts in specific categories. So if you are interested in our YouTube tutorials, you can simply access the YouTube category link and it will display all the posts in that category. A feature I had to learn on my own.
We would appreciate it if you could go through the application and help point out some bugs we haven’t caught yet. You can also request features you’d like us to implement on the app.
Wrapping Up
I’m excited about building this project from the ground up and happy with the number of engagements it’s getting already (all thanks to my youtube channel BTW).
For now, the application has been monetized through Google Adsense with plans to scale to offering services and creating products to help our subscribers grow their careers.
This project has helped me gain more knowledge on the Django Web framework and I’m looking forward to building more fun projects. In the future, however, I intend to use a mix of React and Django REST frameworks.