A project manager for architects and building surveyors. Photos from site file
themselves, every job follows the RIBA Plan of Work, and the client always has an
up-to-date progress report.
A working model of the dashboard. Pick a stage to see its tasks, and tick tasks in stage 5 to move the client's report on.
Overview
Architects and building surveyors are experts in buildings, not software. Small
practices tend to run each job from an inbox, a phone's camera roll and a spreadsheet
of stages. None of those tools were made for the work, and every workaround asks for
technical knowledge the team doesn't have and shouldn't need. That lack of technical
know-how kept getting in their way, and it was the main source of frustration in their
day-to-day work.
Starchitect replaces that patchwork with one place for each project: the photos from
site, the stages of the RIBA Plan of Work, and a progress report for the client that
keeps itself up to date.
The 20 MB problem
One architect couldn't send his client the photos from a site visit, because his email
provider rejects anything over 20 MB. He didn't know what a megabyte was. With
Starchitect he never has to.
Mail Delivery SystemUndeliverable: Rowan House, site visit photos
Your message to Priya Marsh couldn't be delivered because it's too large.
The kind of message that started the project: one site visit's photos, far over an email provider's limit.
From site to client
Capture On site, the architect takes photos as normal in the Starchitect app. Each one uploads at full size, filed under the right project and stage.
Manage In the office, each project follows the RIBA Plan of Work. Tasks get ticked off and stages move on, with nothing left to memory.
Share At home, the client opens one link to a living progress report that updates itself as the work happens.
Backend
Laravel 8 on PHP 8, MySQL, Redis
Dashboard
Vue 2, Vuex and Tailwind CSS
Site app
Flutter, for Android and iOS
Tenancy
A subdomain and a database for each practice
Workflow
RIBA Plan of Work 2020, stored as an editable template
Storage
S3-compatible object storage, MinIO in development
Started
2021
Status
In development
The dashboard
The dashboard is where the architect runs each project. Every practice works on its
own subdomain, such as hollinswebb.starchitect.app. A new project gets a
workflow copied from the practice's template, which starts out as the RIBA Plan of Work
2020: eight stages, each with its RIBA tasks. The architect ticks tasks off as they
happen, and photos from the site app arrive already filed against the project and
stage.
The working model in the hero opens on a house extension in stage 5, with building
work under way. Ticking a task there updates the client's report further down this page.
The RIBA stages
The template holds all 52 RIBA tasks. The client never sees RIBA's terms: each stage
also has a plain name, and that's what appears in the client's report.
Stage
RIBA name
What the client sees
Tasks
The client report
Clients get one link in place of an email thread. The report is a living document: it
shows the current stage, the architect's latest note, new photos from site and
anything the client needs to decide. It changes as the architect works, so there's
nothing to put together or send.
The report is branded for the practice and lives on its subdomain. The client signs in
with a read-only role, so they can see everything about their own project and change
nothing except their answers to decisions.
Progress report for Priya and Tom Marsh · Rear extension and loft conversion
Where we are
Building work
Latest note
EW
Ellen Webb, your architect · Thu 23 Oct
A good week. The steel beam over the new rear opening went in on Tuesday and building control were happy with it. The loft floor joists are all in too.
The roofers start on the extension on Monday, so expect some noise from 8am.
Your decision neededby Fri 6 Nov
Kitchen floor finish
Choose one so the screed can be ordered in time. Samples of both are in the site office.
This week on site
Coming up
Extension roof goes on
Your choice of kitchen floor finish
Building control inspection of the roof structure
Earlier
Steel beam fitted over the new rear opening and signed off by building control.
Loft floor joists in. Scaffold up at the back of the house.
Builders started on site.Building work began
Building regulations approval received.Construction drawings finished
This report updates by itself as work goes on. Questions? Reply to any update from Ellen, or call the studio.
A working model of the client's report for the same project. Pick a floor finish to answer the architect, or take a photo with the site app below and watch it arrive here.
The site app
The site app, built with Flutter, does one job. The architect picks the project
when they arrive on site, and every photo after that uploads at full resolution,
tagged with the project, the current RIBA stage and the time. There's no file size
to think about anywhere.
No signal
Photos wait on the phone and upload when the site has coverage again
Filing
Project and stage come from the dashboard, so nothing needs sorting later
Sign-in
The practice's own subdomain, with OAuth tokens from Laravel Passport
Platforms
Android and iOS from one Dart codebase
Sync logPress the shutter on the phone
IMG_4093 → Rowan House › Stage 5Added to the dashboard and the client report
IMG_4091 → Rowan House › Stage 5Added to the dashboard and the client report
IMG_4088 → Rowan House › Stage 5Added to the dashboard and the client report
14:02
Rowan HouseStage 5 · Building work▾
Extension roofAuto-filed
All photos syncedWi-Fi or 4G
PhotoNote
A working model of the site app. Press the shutter: the photo uploads and appears in the dashboard and the client report above.
Under the hood
Starchitect is a multi-tenant Laravel application. Each practice gets its own subdomain
and its own database, so one practice's projects, clients and photos never share tables
with another's. The dashboard, the client report and the site app all talk to the same
API.
Every request carries the practice in its subdomain, so the API always works inside one practice's database.
Tenancy
Tenancy is handled by stancl/tenancy. Registering a practice queues jobs
that create its database, its subdomain, its first admin user and an OAuth client for
the site app.
The RIBA plan as data
The Plan of Work 2020 is stored centrally as a template of stages and tasks. A practice
can copy and edit it into templates of its own, such as a shorter one for measured
surveys, and each project gets its own workflow that can change without touching the
template.
// database/seeders/RIBA2020Seeder.php
$template = [
"title" => "RIBA Plan of Work 2020",
"stages" => [
[
"title" => "Strategic Definition",
"description" => "Determine the best means of achieving the client's requirements.",
"tasks" => [
["title" => "Prepare client requirements"],
["title" => "Review project risks"],
// …
],
],
// … seven more stages, 52 tasks in all
],
];
Roles and permissions
Permissions use spatie/laravel-permission behind a thin wrapper. On login
the dashboard asks the API for the user's permissions and only shows what they can do,
so a client can read a report but never edit a stage.
Small actions, thin controllers
Business logic lives in invokable action classes such as CreateProject,
UpdateStage and InviteUsers. Controllers stay thin and hand
over to them, so the same logic can be used from the API, from queued jobs and from
tests.
// app/Actions/UpdateTask.phpclass UpdateTask
{
public function __invoke(array $data): Task
{
$task = Task::findOrFail($data['id']);
$task->fill($data)->save();
return $task;
}
}
Testing and local development
Each API resource (projects, stages, tasks, roles, permissions, users and workflow
templates) has PHPUnit feature tests covering its endpoints, run by GitHub Actions on
pushes and pull requests. Locally, Docker Compose runs nginx, PHP, MySQL, Redis, MinIO
for S3-compatible storage, and Mailhog to catch invite and verification emails.
Limitations
Starchitect is still being built. The foundations are in place, and the parts that
architects and clients would use day to day are designed but not finished:
The stage dashboard, the client report and the site app on this page are working models of the design, not the finished product.
Photos don't upload yet. The pipeline for uploads, thumbnails and signed delivery is still to be built.
The plain names for each stage are part of the design and aren't stored in the workflow templates yet.
There's no billing, so practices can't subscribe yet.
What's built
Practice sign-up, with a subdomain and a database created for each one.
Login, email verification, password reset and invitations to join a practice.
Roles and permissions, with an endpoint for the current user's permissions.
A REST API for projects, workflows, stages, tasks and workflow templates.
The RIBA Plan of Work 2020 as a seeded template.
A project list in the Vue dashboard, with each project's progress and paging.
A feature test suite that runs in CI.
Next steps
The stage dashboard and task tracking, as in the working model.
The client's living progress report, with decisions the client can answer.
The Flutter site app, with its offline upload queue.
Notifications for clients when the report changes, so they don't need to check it.
Subscription billing for practices.
The practice, people and project in the working models are made up.