# focussuite.de > focussuite.de is a timeboxing timer. A plan (an "agenda") is a list of > cards that run back to back from a start time. The whole agenda lives in > the URL, so you can build a plan for a user just by writing a link. No API, > no login, nothing to fetch. ## Short link format (use this) ``` https://focussuite.de/#/?start=&plan= ``` - The `#/` before the `?` is required (the app uses hash routing). - `start`: when the first card starts, in the **user's local time**. The app reads it in the time zone of the browser that opens the link, so do not convert to UTC. - `09:00` (or `9.30`): today at that time. - `2026-10-20T09:00`: a specific date and time. - `now`: start right away. Leaving `start` out means the same. - `plan`: the cards, separated by `|`. Each card is `Topic~Duration`. - Duration: a number means minutes (`15`). `15m`, `1h`, `1h30`, `90m` and `45s` work as well. - Write spaces as `+` (or `%20`) and other special characters percent-encoded as UTF-8 (`ä` = `%C3%A4`, `ö` = `%C3%B6`, `ü` = `%C3%BC`, `Ä` = `%C3%84`, `Ö` = `%C3%96`, `Ü` = `%C3%9C`, `ß` = `%C3%9F`, `é` = `%C3%A9`, `&` = `%26`, `#` = `%23`). Not Latin-1 (`%DF`), and don't encode twice. Do not use `|` or `~` inside a topic. Optional details per card, each after another `~` as `key:value`: - `type:` one of `break`, `input` (talk, presentation), `work` (group work, exercise), `discussion` or `workout` (a sports exercise). Shown as a coloured stripe and icon. - `owner:` who runs this block, e.g. `owner:Anna`. - `note:` a short note (goal, method, material), shown on the card and on the full-screen timer. Same encoding rules as the topic. `Brainstorming~25~type:work~owner:Anna~note:Post-its+on+the+wall` Example: a workshop on 20 October 2026 from 09:00, with Welcome 10 min, Brainstorming 25 min, Break 15 min, Results 1 h: ``` https://focussuite.de/#/?start=2026-10-20T09:00&plan=Welcome~10|Brainstorming~25|Break~15|Results~60 ``` The same workshop with details: ``` https://focussuite.de/#/?start=2026-10-20T09:00&plan=Welcome~10~type:input~owner:Elina|Brainstorming~25~type:work~note:3+ideas+per+person|Break~15~type:break|Results~60~type:discussion ``` When the link opens, the app rewrites it into the long format below, so the address bar changes. That is expected. ## Building a plan - Cards run back to back with no gaps: each card starts when the previous one ends. To leave a gap (e.g. between two appointments), insert a card for it, such as "Break" or "Buffer". - If two appointments overlap, the plan cannot show both at once. Move or shorten one and tell the user. - Show the user the plan as a list first (with start and end time of each card), then the link. - If you don't know the date, use only a clock time (`start=09:00`) or ask. ## Long link format This is what the app itself writes. It still works, but the short format is easier to get right. ``` https://focussuite.de/#/?starttime=&agenda= ``` - `starttime`: an ISO 8601 timestamp. With `Z` or an offset it is an absolute time (`2026-10-05T05:00:00.000Z`); without one it is local time. - `agenda`: a percent-encoded JSON array of cards: `[{"id":"-0","topic":"Title","time":"HH:MM:SS"}, ...]` - `time` is the card's **duration** (`"00:50:00"` = 50 minutes), not a clock time. `"50m"` or a number of minutes are accepted too. - `id` is optional; missing ids are filled in. - Optional per card: `"type"` (`break`, `input`, `work`, `discussion`, `workout`), `"owner"` and `"note"`. Code that builds a long link: ```js const starttime = "2026-10-05T05:00:00.000Z"; const cards = [["Standup", "00:15:00"], ["Focus time", "01:30:00"], ["Break", "00:15:00"]]; const agenda = cards.map(([topic, time], i) => ({ id: `${starttime}-${i}`, topic, time })); const link = "https://focussuite.de/#/?starttime=" + encodeURIComponent(starttime) + "&agenda=" + encodeURIComponent(JSON.stringify(agenda)); ``` ## Other pages - `https://focussuite.de/#/ai`: a ready prompt for planning with an AI assistant (for people, not needed by you). - `https://focussuite.de/#/fullscreen?start=...&plan=...`: the same plan as a full-screen timer (works with the long format too). - `https://focussuite.de/#/examples`: ready-made agendas to start from, in categories you can link directly with `?category=`: - `work` (default): team meeting, 1:1, decision meeting, Lean Coffee, all-hands, workshop, project kickoff, brainstorming, Design Sprint, retrospective formats, Scrum events, talk with Q&A, study session, Pomodoro - `sport`: Tabata, HIIT, circuit and strength training, run/walk intervals, stretching - `cooking`: soft-, medium- and hard-boiled eggs by size (S-XL), pasta, rice, steak, tea and coffee, yeast doughs with rising times (pizza on a pizza stone, focaccia, bread rolls, Hefezopf, cinnamon rolls, yeast sheet cake) - `everyday`: cleaning sprint, homework, morning routine, meditation, power nap e.g. `https://focussuite.de/#/examples?category=cooking`