Freelancer Project Management Hub is a monolithic SaaS-style application for freelancers and small service teams to manage clients, projects, quotes, invoices, approvals, and payments from a single Laravel + Inertia.js + React codebase.
This system reduces the overhead of managing freelance work by unifying client, project, quoting, invoicing, and approval workflows into one platform. It replaces fragmented spreadsheets, manual follow-ups, and disconnected billing processes with a single operational workspace.
It provides a server-driven frontend using Inertia, secure invoice approval via email tokens, PDF invoice generation, branding controls, a public landing page, and an internal dashboard for operational visibility.
Add project screenshots here
- Landing page
- Dashboard
- Client management
- Project management
- Quote workspace
- Invoice list and approval flow
- Settings / branding
- Create, edit, and delete clients
- Create, edit, and delete projects
- Track project status:
- quoting
- in_progress
- completed
- on_hold
- Link every project to a client
- Create quote items per project
- Track:
- item name
- hours
- hourly rate
- Calculate line subtotals and total quote amount
- Protect quote changes after invoicing to preserve invoice integrity
- Generate invoices from project quote items
- Store invoice amount as a snapshot at creation time
- Use invoice lifecycle states:
- draft
- sent
- approved
- paid
- Generate collision-safe invoice numbers by year
- Mark invoices as paid only after approval
- Send invoice emails to clients
- Include secure approval link with token-based access
- Support public approval route without exposing internal IDs
- Attach PDF invoice to outgoing email
- Generate server-side PDF invoices using barryvdh/laravel-dompdf
- Upload custom logo
- Configure application name
- Select invoice currency:
- USD
- KRW
- Apply branding to invoice PDFs
- Public landing page at
/ - Internal dashboard at
/dashboard - Dashboard KPIs:
- total clients
- active projects
- monthly revenue
- unpaid invoice total
- Recent projects and unpaid invoice lists
- Light mode
- Dark mode
- Dim mode
- Theme persisted in localStorage
- Shared across landing page and internal app
- Laravel 12.x
- Inertia.js
- React 19
- Tailwind CSS
- MariaDB
- Vite
- barryvdh/laravel-dompdf
This project uses a monolithic Laravel architecture with Inertia.js for server-driven frontend rendering.
- No separate REST API layer
- Backend controllers return Inertia pages directly
- React pages live inside the Laravel application
- Eloquent handles core domain relationships
- Client → Projects
- Project → Quotes
- Quote → QuoteItems
- Project → Invoices
- Laravel handles routing, validation, database access, email, and PDF generation
- Inertia bridges Laravel responses to React pages
- React handles UI interaction and form state
- Financial calculations are enforced on the backend for integrity
git clone
cd Freelancer-Project-Management-Hub
composer install
npm install
cp .env.example .env
Update .env:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database
DB_USERNAME=your_user
DB_PASSWORD=your_password
MAIL_MAILER=smtp
MAIL_HOST=your_smtp_host
MAIL_PORT=587
MAIL_USERNAME=your_smtp_user
MAIL_PASSWORD=your_smtp_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=no-reply@example.com
MAIL_FROM_NAME="${APP_NAME}"
php artisan key:generate
php artisan migrate
php artisan storage:link
npm run dev
php artisan serve
- Create a client
- Create a project
- Add quote items
- Generate invoice
- Send invoice email
- Client approves via secure link
- Mark invoice as paid
| Key | Description |
|---|---|
| APP_NAME | Application name |
| APP_URL | Base URL |
| DB_* | Database config |
| MAIL_* | SMTP config |
| FILESYSTEM_DISK | Storage disk |
app/
Http/Controllers/
Mail/
Models/
database/
migrations/
resources/
js/Pages/
views/emails/
views/pdf/
routes/
web.php
- Multi-user support (roles & permissions)
- Payment gateway integration
- Public invoice view page
- Advanced analytics
MIT