Dockyard
Shippedv1.1.1In production

Slate

Client and project management for freelance agencies — and the software Dockyard runs itself on.

Surfaces
Platform, agency, client
Billing
Time and materials, milestone, fixed price, retainer
Isolation
Enforced in the query layer, on the page and on the socket
Hosting
One image: web, worker, live board
Dogfood
Dockyard runs its own agency on it
Slate Agency View - Dashboard

Slate covers the whole shape of agency work: projects, a task board, time tracking, quotes, milestones, approvals, invoicing, payments, and a client portal the client actually logs into.

Three tiers, three surfaces

The platform vendor, the agency, and the agency’s own clients each get their own surface, and tenant isolation is enforced in the query layer rather than trusted to the caller.

Not serverless

It runs self-hosted on a VPS in long-lived Docker containers. That is a deliberate choice, not a limitation: the workloads are long-running and the cost curve is flat.

One image runs three processes. The web app serves the three surfaces. A worker takes the jobs that outlive a request: mail, PDFs, invoice reminders, the overdue sweep, and reconciling a payment. A third process keeps the board and its comments live. The tenant check on that socket is the same check as on the page.

How a job is billed

The dashboard above is the agency surface: what is outstanding, what was tracked, and what is still waiting on a client.

Every project is billed one of four ways — time and materials, milestones, a fixed price, or a retainer — and the invoice is generated from that choice.

A quote can mix units on a single document: days at a day rate, hours, a counted item, and a fixed sum that is not a number of days at all. A task can be tied to the quote line it was sold under, so logged time sits next to what was promised.

An invoice is a record

Issuing an invoice writes the lines and the total down once. Changing the hours on a task the following week, or editing the quote, does not rewrite an invoice that has already gone out. It is a record of what was charged, not a live report of the work.

A deposit and the balance can both come off the same quote. A milestone can be the billing trigger: approving it is what makes that part of the job billable.

Collecting the money is a seam. The deployment can take payment through Stripe, through GoCardless, or by recording that it was paid by hand. The invoice does not know which.

Sign-off is not a comment

A message that says “looks good” is not an approval. An approval is its own row: who was asked, who decided, and when. Pending can become approved, rejected, or sent back for changes, and that decision stands. Asking again opens a new row, so the earlier sign-off is still there when it is disputed later.

The client actually logs in

The client does not get a seat on the agency’s board. They sign in to their own surface, and each contact is granted only the actions they should have — comment, approve, upload a file, start a conversation. Those grants are per person. One contact can approve a quote and message the team. Another can comment and upload, and cannot open a conversation at all.

The dashboard below is that surface.

Slate Client View - Dashboard
Your clients get a full dashboard to understand their projects — show what you want them to see, hide what you don’t.

Three surfaces

Separate logins

01 / Platform

Platform

The vendor surface. This is who provisions an agency. There is no public signup that lands you here.

  • Admin is a role, not a form
  • Agencies are created here
  • One deployment for every tenant

02 / Agency

Agency

The working surface. Projects, the board, time, quotes and invoices, and only this agency’s.

  • Four billing shapes
  • Time logged against the task
  • Mixed units on one quote

03 / Client

Client

A separate login for the agency’s customer. Each person is granted only the actions they should have.

  • Comment, approve, upload
  • Message, or not
  • No seat on the agency board

How a job moves

Quote → Board → Sign-off → Invoice
01

Quote

Days, hours, a counted item and a fixed sum can sit on the same document.

Deliverable · Accepted quote

02

Board

Tasks move across the board. Logged time can be tied to the quote line it was sold under.

Deliverable · Time against what was promised

03

Sign-off

Pending becomes approved, rejected, or sent back for changes. A comment is not a decision.

Deliverable · An approval row

04

Invoice

The lines and the total are written once. Later edits to the work do not rewrite them.

Deliverable · An issued invoice

Billing

Four billing shapes. One record.

Want one of your own?

Slate is the software Dockyard runs its own agency on. If you want something in that shape, an engineer reads every message.

hello@dockyard.buildRemote, UK hours