HOCO B2B
Ways of working

Ways of working

The operating model of the three-person team and HOCO: who owns what, the weekly rhythm and the golden rules that apply from day one.

These pages are the team's operating rules, not suggestions. They apply to Anis, Imad and Akram from the first day of the plan, and to anyone who joins later. When a rule stops working, it is changed in a pull request to apps/docs/content/docs/workflow/ (usually after a retro). Until that PR is merged, the current page applies.

The working week is Sunday to Thursday. Every time on these pages is in Africa/Algiers (UTC+1). Dates are never written here: they come from the plan (timeline).

The operating model

Three tracks run in parallel from day one, and they meet at two interfaces: the API contract (packages/contracts, published as OpenAPI) between Anis and Imad, and the Claude Design handoff between Akram and both developers. HOCO validates at fixed moments and decides through the decision register. Anis is HOCO's single point of contact for scope, dates and cost.

Who owns what

R does the work · A answers for the result (one per row) · C is consulted before · I is informed after.

ActivityAnisImadAkramHOCO
Plan (tasks.json), Progress page, client relationshipA/RCCI
Scope, change requests, decision registerA/RCCDecides
API contract (packages/contracts)A/RR — reviews and approves every changeI—
Server, back-office, reseller web, docs site, DevOpsA/RC — as API consumerC — design QA—
Reseller app and delegate appC — API usage, securityA/RC — design QA—
Design system and every screenCCA/RValidates per surface
Design QAR — fixes web findingsR — fixes mobile findingsA/R—
Deployments to staging, pre-production, productionA/RIIAccepts on pre-production
Mobile builds and store releasesCA/RR — store assetsOwns the store accounts
Acceptance (recette) and the PVA/R — organisesR — mobile fixesR — test campaign (QA-03)Executes and signs
Production incidentsA/R — server, dataR — appsIInformed
Training and user guidesA/RCR — materials (DQA-06)Attends

Each person's load and working window, live from the plan:

PersonRoleEffortTasksWindowOwns
AnisFull-stack developer · 1 FTE60.75 d3918 Oct 2026 → 18 Feb 2027Server (API), back-office dashboard, reseller web app, docs, DevOps
ImadMobile developer (Flutter) · 1 FTE69.75 d4418 Oct 2026 → 31 Jan 2027Reseller app and delegate app (Flutter monorepo)
AkramUI/UX designer · 1 FTE43.25 d3618 Oct 2026 → 22 Feb 2027Design system and every interface, design QA, training and store assets

The weekly rhythm

WhenWhatWho
Sunday 10:00 (30 min)Planning — the week's tasks by id, blockers, what HOCO must provideTeam
Monday–Thursday, by 10:00Stand-up message in the team group — yesterday / today / blockers, with task idsEach person
Every working day, by 11:00Issue triage in both repositoriesAnis
Design days, 15:30 (15 min)Feasibility check of the day's screensAkram + the developer of that platform
Wednesday 14:00 (20 min)Mid-week sync — blockers, contract and design changes coming, demo preparationTeam
Thursday 11:00 (45 min)Internal demo of what is done, on stagingTeam
Thursday, by 16:00Progress update — task statuses in tasks.json and the Progress pageAnis
Every second Thursday 14:00 (60 min)Client review with HOCOTeam + HOCO
Every second Thursday 15:15 (30 min)RetroTeam

Details, agendas and the Ramadan schedule: rituals and communication.

Golden rules

  1. The plan lives in tasks.json; dates are never typed by hand. The scheduler computes every date. A slip is a changed effort, dependency or scope, visible in the diff of the plan (planning method).
  2. Contract first. No endpoint is implemented or consumed before it exists in packages/contracts on dev, reviewed by Imad (API-contract workflow).
  3. Every branch, commit and PR names its task id: feature/SRV-14-crm-module, feat(server): reseller lifecycle [SRV-14]. Work without a task id is a bug (it has an issue number) or it is not planned: ask Anis before starting it.
  4. No direct pushes to dev or master. Everything lands through a PR with green CI. master only receives release/* and hotfix/* branches (git workflow).
  5. A decision not written in the register did not happen. Calls, chats and meetings produce proposals; the decision register produces decisions.
  6. HOCO tests on pre-production, never on staging. Staging is the team's integration environment and breaks on purpose. HOCO sees work in the client review and hands-on on pre-production release candidates (environments).
  7. Not described in the cahier or not validated → change request. The scope clause (cahier, p. 2) is applied literally. Nobody says "yes" to new scope in a meeting (change requests).
  8. Done means demonstrated on staging. Merged is not done. The definition of done is.
  9. Bugs live in GitHub issues. A bug reported in a chat is copied into an issue the same day by whoever received it (bugs and incidents).
  10. Developers build what is "Ready for dev" in Claude Design, nothing else. A design change after handoff is an issue, not a message (design workflow).
  11. Secrets never travel through git, chat or email. They live in the password manager, GitHub secrets and Dokploy (repositories and access).
  12. A branch lives three working days at most. Bigger tasks ship as several PRs under the same task id.

The pages

On this page