HM Portfolio — Resume, Tech Blog & Project Management Platform
Overview
This project is, quite literally, the very site you're looking at right now — a multi-purpose platform bringing three distinct roles together under one roof: my resume and portfolio showcase, a full technical blog with a complete writer system, and an end-to-end client pipeline from project request to contract, payment, and final delivery. Unlike a simple static resume site, this is a complete application with three user types, SMS-based authentication, and real business workflows.
Key Features
- Passwordless SMS-based authentication for every role (writers, employers)
- A full technical blog: multiple authors with dedicated public profiles, article categories and tags, a comment system, author-following, and bilingual publishing for every article
- A 3-step project request wizard with searchable select fields and category-aware feature suggestions
- A formal digital contract with electronic signatures (drawn signature + SMS verification) and two-sided signing progress tracking
- A milestone-based payment system integrated with the ZarinPal gateway, fully configurable from the admin panel (sandbox/live switch, merchant ID)
- Automatic SMS reminders for upcoming payment milestones, and an "awaiting payment" state for projects with an overdue milestone
- A support ticket system with an automatic "unread reply" indicator that shows exactly once, until the ticket is opened
- A profile-completion gate: employers can't submit a project request until the information required for their contract (tailored to individuals vs. legal entities) is complete
- The portfolio showcase itself (this very section!) with a draggable, infinitely looping slider, category filtering, and a custom-generated cover for every project
- Full bilingual support (Persian/English) with RTL/LTR-aware layout throughout the entire site
Technical Architecture
The backend is built with Laravel, with a fully custom admin panel built on Filament — nothing about content management or settings (from blog posts to payment gateway and SMS configuration) is hardcoded or env-only; everything is editable from the panel. The database is MySQL. The frontend is built with Next.js (App Router) and React, using ISR to intelligently cache public content (like this very projects page) for both speed and short-latency freshness. Jalali (Persian) calendar dates are handled with a custom-built implementation with no external package dependency. SMS goes through Kavenegar and payments through ZarinPal, both with admin-editable settings. The entire service (backend, frontend, Nginx, MySQL) is run and managed with Docker Compose.
My Role
I designed the complete architecture, modeled the database, implemented every API and the entire admin panel on the backend, built the complete frontend UI, and integrated the payment and SMS services — all solo, by myself. This is the very project you're using right now.