Legacy Personal Website
Created: Nov 14, 2016
Deprecated: Feb 1, 2025
This project was my very first attempt at creating my own website and blog to showcase my side projects. I built this website from scratch as a way to demonstrate my growing technical abilities while I was still in college. The development began in late 2016, with the bulk of the feature buildout occurring in 2017.
Creating this project was an exciting experience, as it allowed me to experiment with various new technologies. In hindsight, I may have gotten a bit carried away with the number of features I included compared to the ones that were actually used. Nonetheless, I am proud of what I accomplished with minimal professional experience, driven solely by a passion for learning and a few online tutorials.
Tech Stack
- Laravel 5.2
- PHP 5
- JavaScript
- AWS Integration
- MySQL
- Eloquent ORM
- Heroku
Features
This website functioned as a fully-featured social blog. I was the primary content creator, and users could create accounts, log in, and leave comments on my posts. Registered users could also like or dislike comments, customize their profiles with personal information, and upload a profile picture.
To handle image storage, I integrated Amazon S3, ensuring that all uploaded profile pictures were securely stored in the cloud.
Blog posts and comments were created using an open-source JavaScript rich text editor, which allowed for dynamic and elaborate text styling. The web editor enabled original posters to create and edit their blog posts while logged in and authenticated.
User authentication was managed via Laravel’s token-based authentication system, which validated credentials against the MySQL database. User passwords were salted and encrypted using Laravel’s Illumination security API, ensuring a high level of security.
Database
As mentioned earlier, the database was managed using Laravel’s Eloquent ORM, which simplified database interactions by allowing me to work with database records as if they were regular PHP objects.
Database Schema
Below is the relational database schema based on the migration files:

Relationships:
- users has many profiles, posts, comments, likes, projects, pictures, primary_pics, user_role
- roles has many user_role
- posts has many comments, likes, post_tags, pictures, primary_pics
- projects has many sections, project_tags, pictures, primary_pics
- tags has many post_tags, project_tags
- sections belongs to projects
- comments belongs to users, posts
- likes belongs to users, posts
- pictures belongs to users, posts, projects, sections
- primary_pics belongs to users, posts, projects, sections
- post_tags belongs to posts, tags
- project_tags belongs to projects, tags
- user_role belongs to users, roles
Takeaways
Reviewing the code today, I see a lot of opportunities to improve the code base. For one, I did not include any tests, which means that ongoing development would be risky without adding tests for existing functionality.The database schema has some redundancy that could be optimized to reduce complexity and improve data retrieval. The project has also become very outdated at this point, and it would be quite the endeavor to update all of the dependencies. I have learned much about website design, mobile optimization, and clean code principles since I last committed a change to this project.
Still, this project was a great learning experience, and while I have since moved on to other projects, I still appreciate the technical growth it provided me during my early programming days.