Brian Hackett

Agency Management Platform · 2026

AgencyOS

One workspace for projects, people, and clients.

A full-stack agency management platform built to handle the messy reality of client work: projects, tasks, milestones, files, team assignments, and different levels of access for agency staff and clients.

LaravelPostgreSQLBladeTailwind CSSAWS
AgencyOS dashboard showing projects, tasks, milestones, and agency activity

The ProjectBuilt to go beyond basic CRUD.

AgencyOS started as a portfolio project: I wanted to build a substantial Laravel application that went beyond basic CRUD and reflected the kinds of problems found in a real production application.

I chose a digital agency as the setting because it naturally introduced interesting relationships between clients, projects, team members, milestones, tasks, and files. As the application grew, much of the challenge became deciding who should be able to see and manage each of those resources.

The result is a working client and project management platform with separate experiences for agency staff and client users, role-based permissions, project-level access control, task management, file sharing, and activity tracking.

Access & PermissionsThe same application. Very different views.

AgencyOS separates users into agency and client roles. This allows the agency running the application to invite members of their client organizations to help manage and contribute to tasks, if they are so inclined.

An agency member\'s view of the Clients page

Agency users manage assigned projects, clients, tasks, and teams according to their role.

A client member's view of the Clients page

Client users access only their organizations projects, tasks, and files according to their permissions.

Managing The WorkFrom the big picture to the next task.

Projects bring together the people, deadlines, milestones and individual tasks involved in delivering work for a client.

Large projects can be broken into milestones and individual tasks, each with their own assignments, status, priority and deadlines.

Tasks can also be managed visually from the board, with a classic kanban style drag and drop interface.

A view of a single project page
Project Overview
Client, milestones, team and tasks in one place.
A view of a single task page
Task Details
Assignments, comments, files, status and deadlines.
A view of a single project page, in board view
Kanban Board
Move work through each stage visually.

Under The HoodBuilt with Laravel. Designed like a real application.

Laravel + Blade

Server-rendered Laravel application using Blade and Tailwind CSS.

PostGreSQL + Eloquent

Relational data model connecting clients, projects, milestones, tasks, users, files and activity.

Authorization

Laravel policies enforce permissions alongside project membership.

Enums & Validation

PHP enums keep statuses, roles and permissions consistent throughout the application.

AWS

Deployed on EC2 with Nginx, PHP-FPM and PostgreSQL.

Vite + Tailwind

Front-end assets built with Vite and Tailwind CSS.

Building AgencyOSThe project grew with every decision.

What started as a portfolio project became far more complex than I originally expected. Every new feature introduced decisions about how different parts of the application should relate, who should have access to them, and how those rules should be enforced consistently.

Building AgencyOS reinforced how quickly complexity grows beyond the basic CRUD layer. Modeling relationships, designing contextual authorization, keeping roles and permissions manageable, and eventually deploying the application gave me a much better understanding of the decisions involved in building and maintaining a larger Laravel application.