Personal portfolio and case-study site built with Laravel, Livewire, Flux UI, and Tailwind CSS.
This application combines a public-facing portfolio with a private admin area for managing featured work, skills, portfolio copy, and inbound contact inquiries.
- Public landing page with a structured hero, featured skills, and featured projects
- Project archive and individual project detail pages
- Contact form with validation, throttling, queued mail delivery, and inquiry persistence
- Private admin dashboard for projects, skills, inquiries, and portfolio settings
- Fortify-powered authentication with email verification and two-factor support
- Seeded demo content for local development
- PHP 8.5
- Laravel 13
- Livewire 4
- Flux UI 2
- Tailwind CSS 4
- Pest for automated testing
This repository is pinned to PHP 8.5. If you use Laravel Herd or Valet, the included .valetrc requests PHP 8.5 for the project.
Flux UI is a paid package. Before your first composer install, make sure your machine has valid Flux Composer credentials configured.
composer config http-basic.composer.fluxui.dev <flux-username> <flux-license-key>
composer install
cp .env.example .env
php artisan key:generate
php artisan migrate --seed
php85 artisan app:make-admin
npm install
npm run buildIf you want the full local development stack running together:
composer run devThat starts the Laravel server, queue listener, log tailing, and Vite dev server in one command.
Create or promote an admin account with the bootstrap command:
php85 artisan app:make-adminPass --unverified --send-verification if you want the first admin to complete the normal email verification flow instead of being marked verified immediately.
- Contact submissions are stored in the database as inquiries
- Outbound inquiry mail is queued
- Set
PORTFOLIO_CONTACT_RECIPIENT_NAMEandPORTFOLIO_CONTACT_RECIPIENT_ADDRESSin your environment if you want contact emails delivered
Run the minimum checks you need while working:
php artisan test --compact
composer lintGitHub Actions are included for both linting and automated tests on push and pull request events.
- GitHub: giantsoup/webportfolio