The idea
Design teams struggle to show what their work is worth. Cootle set out to fix that: a company writes down what it is trying to achieve, quarter by quarter, and design and product work is then mapped against those goals so the value can be tracked.
What we built
The project stopped early, at its foundation. What exists is the marketing site, passwordless sign-in, and the first screen of the app: the company profile.
A company profile with its vision, goals and objectives, business values, problems and opportunities, technical constraints and a conclusion.
Profiles are versioned by quarter, with a timeline to move between versions.
People on a profile have a role: authors write it, approvers sign it off and stakeholders follow it, each with an approval status.
Sign-in by email with a six-digit code instead of a password.

The company profile: who writes and approves it, the goals, and the quarterly versions on the right.
My part
I built the backend alone, from February to May 2024: the Express API, the MongoDB data model, validation and the sign-in flow.
The web app was shared with another developer. That developer built the first pass of the login, register, sidebar and company profile screens. I set up the project, restructured those screens into the layout the app ended up with, built the sidebar, header, members and profile content sections, and connected sign-in to the API. The landing page was the other developer's work; I set up the project and added the brand font.
Passwordless sign-in
Registering or logging in takes an email address. The API creates a six-digit code, stores it on the user with when it was sent and how long it is valid, and emails it. The app then swaps the code for a JWT.

Logging in with an emailed code.
A data model built for approval
The backend models four things: users, companies, company members and company profiles. A member has both an access level (admin, member or guest) and a role on the profile (author, approver or stakeholder), so who can edit the workspace and who signs off the content are separate questions. Each profile carries a quarter and a version, so a company can keep its history instead of overwriting last quarter's thinking. Request bodies are validated with Joi before they reach a controller.
The landing page

The landing page.

The landing page on a phone.