labs@atheron:~/work/team-portal$ cat team-portal.md
The team portal
One back office for everything.
Hiring, pay, invoices, clients, projects, support queues and the community, in one place, on one database. Every screen asks the database who is allowed to see it, so a permission granted once holds everywhere.
// what it does
- Runs hiring end to end: vacancies, applicants, scorecards, interviews, offers and onboarding.
- Holds employment records, and reads the company's legal identity from one record so every document agrees.
- Keeps the books: invoices, payments, taxes and the rate card our own estimates are priced from.
- Runs projects and client billing for the Labs studio, with milestones, approvals and timesheets.
- Answers support from every site in one set of queues, and moderates the community rooms.
// how we built it
- Permissions live in the database, so a screen, a function and a report cannot disagree about who may act.
- Every service signs in with its own login and is allowed only what it needs.
- More than five hundred migrations, applied in order and recorded, so any environment can be rebuilt from nothing.
- The whole suite, mutation tests and secret scans are re-run by a separate server every few hours.
- A privacy inventory says how long every column of personal data is kept, and a test fails when one is missing.
// the size of it
- applications
- Six on one database: the team portal, the members portal, the careers site, the client portal, the sign-in service and the desk console
- migrations
- More than 500, each applied in order and recorded
- test files
- More than 370, run before anything is deployed
- checks
- Suite, mutation tests and secret scans every few hours on a separate server
// stack
- Next.js
- React
- TypeScript
- PostgreSQL
- Microsoft Graph
- Tailwind CSS
// where it stands
Running every day. It is the back office we work in, not a product we sell, and what we learned building it is what we build client back offices with.
// a comparable build
- Build
- ≈ US$236,000 to US$361,000, within 46 weeksCAD 335,700 to 513,500
- Hosting
- ≈ US$344 a monthCAD 490 a month
- Support
- ≈ US$2,500 a monthCAD 3,565 a month
Prices in your currency are estimates from today's Bank of Canada rate. All invoicing is in CAD or USD.
the effort in it
- Development
- 1407 to 2152 h
- Frontend developer
- 305 to 467 h
- Product designer
- 274 to 420 h
- Senior frontend developer
- 183 to 280 h
- Senior product designer
- 183 to 280 h
- In all
- 3258 to 4984 h
what this price covers
A back office of this size as one build: the areas above, the permission model under them, and the migrations and tests that keep it safe to change.
An estimate for a build like this one, worked out from our rate card as you read it. It is not a quote. Yours changes with your scope, and we write a real one after a call.
Open this in the estimator →// the rest
The other projects.
// start
Want one built like this?
The same team, the same tests, the same care. Tell us what you need, or price it yourself first.