Turning My Personal Portfolio Into a Laravel Application
I started this project with a fairly simple goal:
Build my personal portfolio.
But instead of stopping at a collection of frontend pages, I decided to turn it into a proper Laravel application.
The idea is simple: the public website should showcase my work, while a private backend should eventually allow me to manage the content without constantly editing Blade files.
The foundation
The project is being built with Laravel 13. I already had the frontend design, so I didn't want to redesign everything just because I was moving to Laravel.
Instead, I converted the existing HTML structure into Blade.
The frontend now uses reusable layouts and partials for things such as:
- Header
- Footer
- Offcanvas navigation
- Head/SEO
- JavaScript assets
This keeps the page-specific Blade files focused on their actual content.
The Contact System
The first complete backend feature I built was the contact system. The public contact form now submits to Laravel instead of using a static HTML action.
The flow is: Visitor → Contact Form → Laravel → Database → Admin
Messages are stored in the database with information such as:
- Name
- Subject
- Message
- Read/unread status
- Read timestamp
Building Admin
I also started building the private administration panel.
The public website and the administration panel are intentionally separated.
The current Admin system includes:
- Private login
- Session-based authentication
- Account active/inactive checking
- Login rate limiting
- Protected routes
- Security headers
- No-index directives
- Contact message management
- Read/unread status
- Pagination
- Message deletion
The login system also limits repeated failed attempts instead of allowing unlimited password attempts.
Why I'm building it this way
The goal isn't just to have an admin dashboard because it looks cool. Eventually, I want to manage the portfolio itself from there.
- Projects
- Skills
- Experience
- Achievements
- Services
- Journal
- Social links
- SEO
- Media
- Settings
The public website should eventually consume that data rather than having everything hard-coded into the frontend.
One important distinction
I'm also keeping my writing separate from the Journal. Writing will belong to my achievements and extra-curricular activities. Journal will be its own content type. That distinction matters because they serve different purposes.
What's next?
The next major step is building the Journal system. I already have the frontend archive and article-detail designs. The plan is to build the database structure around those designs and eventually add a rich-text editor to Obito so I can write articles more like using a document editor instead of manually writing HTML.
For now, the foundation is in place. And that's probably the most important part. A portfolio is easy to make.
Building one that can actually evolve with you is more interesting.
Top comments (0)