Skip to content

glitter-node/management-hub

Repository files navigation

Freelancer Project Management Hub

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.


Screenshots

Add project screenshots here

  • Landing page
  • Dashboard
  • Client management
  • Project management
  • Quote workspace
  • Invoice list and approval flow
  • Settings / branding

Features

Client and Project Management

  • 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

Quote System

  • 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

Invoice System

  • 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

Email and Approval Workflow

  • 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

PDF and Branding

  • 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

Dashboard and Public Pages

  • 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

Theme System

  • Light mode
  • Dark mode
  • Dim mode
  • Theme persisted in localStorage
  • Shared across landing page and internal app

Tech Stack

  • Laravel 12.x
  • Inertia.js
  • React 19
  • Tailwind CSS
  • MariaDB
  • Vite
  • barryvdh/laravel-dompdf

Architecture Overview

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

Relationship Flow

  • Client → Projects
  • Project → Quotes
  • Quote → QuoteItems
  • Project → Invoices

Key Characteristics

  • 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

Installation

1. Clone repository

git clone
cd Freelancer-Project-Management-Hub

2. Install backend dependencies

composer install

3. Install frontend dependencies

npm install

4. Configure environment

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}"

5. Generate application key

php artisan key:generate

6. Run migrations

php artisan migrate

7. Create storage symlink

php artisan storage:link

8. Start frontend dev server

npm run dev

9. Start Laravel server

php artisan serve


Usage Flow

  1. Create a client
  2. Create a project
  3. Add quote items
  4. Generate invoice
  5. Send invoice email
  6. Client approves via secure link
  7. Mark invoice as paid

Environment Variables

Key Description
APP_NAME Application name
APP_URL Base URL
DB_* Database config
MAIL_* SMTP config
FILESYSTEM_DISK Storage disk

Folder Structure

app/
Http/Controllers/
Mail/
Models/

database/
migrations/

resources/
js/Pages/
views/emails/
views/pdf/

routes/
web.php


Future Improvements

  • Multi-user support (roles & permissions)
  • Payment gateway integration
  • Public invoice view page
  • Advanced analytics

License

MIT

About

Freelancer-focused all-in-one hub for managing clients, projects, quotes, and invoices in a single workflow.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors