This Website Oct. 28, 2024

Hi! I’m Matt, a full-stack web developer currently working at Nextech Systems. Welcome to my portfolio website! I believe every developer deserves a great portfolio, but not everyone has the time or resources to build one from scratch. That’s why I set out to create something more than just a website to showcase my skills. I wanted to build an easy-to-modify, drop-in solution for anyone looking to launch their own portfolio quickly. It’s designed to be modular and easy to customize, while also being able to run seamlessly as a monolith on a single server or in a Docker container. My goal was to make it so simple that someone could set it up in just a day. So, I got to work.

The Stack

I chose Django for this project because it’s both user-friendly and powerful, making it an ideal choice for developers of all experience levels. Its built-in admin interface is a standout feature, providing an intuitive way to manage dynamic content like work experience, education, projects, and blog posts without requiring any additional coding. This ensures that users can maintain and update their portfolio effortlessly.

The database is powered by SQLite, a lightweight and fast option that works perfectly for a portfolio site. Since SQLite is bundled with Python, it eliminates the need for extra setup and supports the project’s goal of being a quick, ready-to-deploy solution. Of course, Django’s flexibility means you can switch to a different database like PostgreSQL with just a few configuration tweaks in settings.py, but for most users, SQLite will suffice.

On the frontend, I kept things simple and clean with HTML and CSS. While I initially aimed for a JavaScript-free design, I added a touch of jQuery for the “About Me” page to create a more dynamic experience. Clicking a skill button reveals additional details about that skill, making the page interactive without requiring a reload. Beyond that, the site avoids JavaScript entirely, staying true to a minimalist design philosophy.

Modular and Reusable Design

This website was built with reusability in mind. The base template (base.html) defines a consistent structure across all pages, including a navigation bar linking the Home, About, Blog, and Contact pages. Each additional page, like about.html and index.html, extends this base, ensuring consistency while making it easy to modify individual sections.

Dynamic content is handled through Django models. For example:
• The about.html page pulls information about work experience, education, and skills directly from the database.
• The homepage showcases featured projects, rendered dynamically based on entries in the database.
• The blog page uses a Django model to store and display posts, making it easy to add new content through the admin interface. Each post is displayed with a title, date, and snippet, with a “read more” link to a detailed view for each entry. This modular approach allows users to add and manage blog posts effortlessly.

The contact page features a functional and secure contact form, built using Django’s forms framework. Users can submit inquiries directly through the site, and Django’s built-in CSRF protection ensures security. The form is customizable, so developers can easily add fields or validation rules to suit their needs.

These models and pages are designed to be versatile and easy to extend, allowing users to tailor the site to their own needs with minimal effort. Since Django includes an admin dashboard out of the box, managing content is as simple as filling out a form.

Deployment

The website is hosted on PythonAnywhere, a platform that makes deploying Python applications straightforward and beginner-friendly. With PythonAnywhere, I didn’t have to worry about complex server configurations or infrastructure management. Setting up the site involved:
1. Uploading the project files.
2. Configuring the PythonAnywhere environment to run the Django application.
3. Setting up static files and database migrations.

The combination of PythonAnywhere’s ease of use and Django’s robustness made the deployment process smooth and efficient.

Reflections

This project wasn’t just about showcasing my skills—it was about creating a tool that other developers can use as a starting point for their own portfolios. I remember applying for my first programming jobs and not having anything to put in the “personal website” slot, and it bothered me that I didn’t have one. By focusing on simplicity and modularity, I feel like I’ve built a solution that’s easy to customize, maintain, and deploy.

The process also reinforced my appreciation for Django’s built-in features, like the admin interface, which made content management so much simpler. Hosting the site on PythonAnywhere demonstrated how accessible and hassle-free deploying Django applications can be.

What’s Next?

Being an open-source project, I encourage others to check out the repository, fork it, and make it their own. I plan on making more projects with in the future and writing about them here. Right now I am torn between learning iOS app development in swift, and maybe learning the Reflex (a new full stack python web framework that allows for dynamic pages with pure python).

Whether you’re a beginner looking for an easy way to create a portfolio or an experienced developer wanting a foundation to build on, I hope this project proves to be a valuable resource.

Check it out on github!

Thanks for stopping by!

-Matthew Levin

Leave a comment:

Comments: