Project documentation · for internal use · published anyway
This website as a project
A PMI chapter's website ought to be run like a project. So here are its documents: a project charter, a work breakdown structure, a risk register and a retrospective, written for people who will recognise the format. The tone is a joke. The contents are not: every fact on this page is true, and the placeholders are real placeholders.
Rule of this page: nothing on it is invented. Where a number is missing, it is missing on the rest of the site too.
- Project
- pmi-macedonia.mk, rebuilt
- Phase
- Executing — built locally, in full; deployment waits on the board.
- Percent complete
- 64%23 / 36
Counted as work packages done ÷ all work packages in the structure below. This is the least honest way to measure progress and the one every status report uses. By pages built: 46 of 46. By facts the board has supplied: [%].
Project health
- Scopeon trackEverything in the build brief exists in both languages. Nothing was added without a numbered decision.
- SchedulewatchThere is no launch date, so nothing is late. That is not the good news it sounds like: launch is blocked on one question to PMI Global (Q2).
- Coston track0 MKD spent. Hosting after the move costs 0 MKD a year; the domain stays at 825 MKD. Volunteer hours are not in the budget, which is how volunteer budgets work.
- Contentat risk17 rows of facts are still wanted from the board; the board and documents pages are empty until they arrive.
- Riskswatch11 open, 1 closed. See the register.
The design system allows four colours and none of them is green, so the traffic light is: purple “on track”, cyan “watch”, orange “at risk”. Recorded as a constraint.
Project charter
- Purpose and business case
- The chapter's current site runs on WordPress and Divi, is dated and slow, and costs 7,198 MKD a year in hosting on top of 825 MKD for the domain. The replacement is a static site on free hosting that the board can edit without a developer, in both languages, with a conference archive and a sponsor pitch the chapter has never had online. The email stays where it is, so the real saving depends on the current provider's price for a mail-only plan — which nobody has confirmed. The charter therefore promises no number.
- Sponsor
- The board of Здружение за проектен менаџмент — ПМИ Македонија Скопје. Approves the charter, supplies the facts, chose the theme.
- Project manager
- None appointed. One volunteer built the site, maintains it and wrote this charter — three roles in one, noted in the retrospective.
- In scope
- Home; what is PMI; about, board, documents; membership and how to apply; events with PDU data and a calendar feed; conference with a per-year archive; news; speakers; sponsors; volunteering; certifications and the PDU knowledge base; a sourced MK–EN glossary; a weekly dilemma; contact; a 404 that belongs to the site; the admin panel; scheduled publishing; this page.
- Objectives
- Every structural page in Macedonian and English, Macedonian first.
- A static site on Cloudflare Pages, no database, no server to patch.
- The board publishes news, events and sponsors itself from /admin.
- The annual conference gets a proper archive: theme, speakers, talks, photos, per year.
- Sponsorship is sold on the site, with prices visible on the page.
- No third-party requests on the public site, no cookies, no consent banner.
- Success criteria
- “npx astro build” is clean, with no warnings, for both themes. (Met.)
- 46 pages, every one with a reciprocal alternate in the other language. (Met.)
- One script on the whole site, and the page it is on works without it. (Met — the glossary filter.)
- A board member publishes a news post without asking a developer. (Not testable until the repository and the login Worker exist.)
- All five email-critical DNS records survive the cutover and contact@ still receives. (The cutover has not happened.)
- The launch complies with PMI Global's rules, whatever they turn out to be. (Unknown — Q2.)
- Out of scope — by decision, not by omission
- Event registration and payments — decision no. 7. Membership is bought at pmi.org; conference tickets go through the conference team's own form.
- Member accounts or any kind of login — decision no. 7.
- A newsletter — decision no. 11. All three neighbouring chapters run one; the board may ask; the answer is a link to a hosted service, not a change to this site.
- A contact form that sends mail — decision no. 5, until a sending service is chosen. The static host has no mail server.
- Moving the email — decision no. 2. It stays with the current provider, and nothing there is cancelled — decision no. 6.
- PDUs for workshops — decision no. 17. The chapter runs no workshops; the conference is the one activity that carries PDUs.
- A job board, a mentoring page and a separate conference site — later, per the site plan.
- Constraints
- Four brand colours, sampled from the chapter's own logo, and no fifth — decision no. 14. That includes not having a green for the status report.
- The PMI logo is never redrawn, recoloured or rebuilt into a new lockup — decision no. 14, learned by doing it once and reverting.
- Static output; no database; no server-side code — decision no. 3.
- No JavaScript beyond one inline glossary filter — decision no. 18. The phone menu, the accordion, the PDU filter and the dilemma reveal are CSS.
- No new dependencies without a stated reason — build brief.
- Every account — GitHub, Cloudflare — in the chapter's name, never a personal one — decision no. 4.
- Nothing invented: a fact the board has not supplied is a bracketed placeholder, visibly.
- Assumptions — unverified
- PMI Global does not mandate a website platform or a pre-launch review for chapters (Q2). pmi.org refuses automated requests, so a human with a Leadership Central login has to confirm.
- The domain and the hosting account are registered to the association, not to a former board member (Q3).
- Milestones
- 19–20 August 2026 — research and decisions: hosting, stack, scope, languages.
- 20–21 August 2026 — the build, overnight, unattended.
- 14 September 2026 — the board chooses the light theme.
- 15 September 2026 — the glossary and the dilemma of the week.
- [DATE] — private repository in the chapter's GitHub account.
- [DATE] — CMS login Worker, cron and deploy hook.
- [DATE] — DNS cutover, per the runbook, last.
- Key stakeholders
- The board (sponsor and content owner) · members and prospective members · sponsors, of which there are none yet · PMI Global, whose trademark rules bind the logo and the copy · the conference team, which runs registration · the email provider, which must not notice anything · the domain registrar · the volunteer, who is the entire project team.
- Budget
- 0 MKD spent. Recurring after the move: 825 MKD a year for the domain; hosting 0 MKD.
Approved by
[BOARD MEMBER, SIGNATURE]
Date
[DATE]
Bracketed values are facts the board has not supplied yet. They are left visible on purpose.
Work breakdown structure
The site decomposed into work packages, with the state each one is actually in. Level 1 follows the site plan's build order; the leaves are what got built, what is a placeholder and what has not started.
1Foundations
- 1.1Astro skeleton, static outputdone
- 1.2MK/EN routing, one route table, reciprocal alternatesdone
- 1.3Design tokens; two themes from one codebase; light chosendone
- 1.4Content collections and the CMS schemadone
- 1.5Sveltia CMS at /admin, local backenddone
- 1.1
2Content
- 2.1Structural copy, both languages, in one filedone
- 2.2Conference archive: 2025 and 2023partialattendance is a placeholder
- 2.3Board members and documentsplaceholderempty until the board supplies them
- 2.4Sponsor numbers and pricesplaceholder
- 2.5Glossary, 165 terms from cited sourcesdone33 still without a Macedonian source
- 2.6Dilemmas, 12 for the first quarterdonethe second quarter is empty
- 2.7News, events, speakersplaceholderempty by design; the real content comes from the board
- 2.1
3Pages by area
- 3.1Homedone
- 3.2About, board, documentsdonewith placeholders
- 3.3Membership, how to applydone
- 3.4Events, event detail, calendar feeddone
- 3.5Conference, per-year archivedone
- 3.6News, postdone
- 3.7Speakers, profiledone
- 3.8Sponsorsdoneprices pending
- 3.9Certifications, PDU knowledge basedonenumbers verified 14 September 2026
- 3.10Volunteering, contact, what is PMIdone
- 3.11Glossary, dilemma of the weekdone
- 3.12The 404 page, now with a Gantt chartdone
- 3.13This pagedonethe only work package that was 100% complete when it was written
- 3.1
4Deployment
- 4.1Local git historydoneno remote, on purpose
- 4.2Private repository in the chapter's GitHub accountnot starteddeliberately: it has to land in the right account
- 4.3Cloudflare Pages preview at *.pages.dev, uploaded directlydone
- 4.4CMS login Workernot started
- 4.5Cron and deploy hooknot started
- 4.6DNS cutover per the runbooknot started
- 4.1
5Operations
- 5.1Weekly redeploy for the dilemmamanual, for nowuntil 4.5 exists
- 5.2Re-verify the PDU numbers when PMI reissues the handbookmanual, for now
- 5.3The board's content checklist, 17 rowsnot started
- 5.4Pre-launch checks: two pmi.org links, the CMS relation widgetnot started
- 5.5Q2 — PMI Global's answer on platform and brandingnot started
- 5.1
Risk register
Real risks of this site, with the response each one already has. Probability and impact are judged, not measured; the responses are the ones in the documents. Closed risks stay in the register, because that is what a register is for.
| ID | Risk | Probability | Impact | Response | Status |
|---|---|---|---|---|---|
| R-01 | Nobody updates the news page after launch, and by spring the site looks abandoned. | high | medium | Mitigate. The CMS at /admin means no developer is needed; the weekly dilemma changes the site without anyone writing news — but only until 7 December 2026, unless a second quarter is written by late November; the news page shows its empty state honestly rather than a 2026 post in 2028. Owner: the board, which has not yet named an editor. | open |
| R-02 | A sponsor's term ends and the logo stays on the page. | low | medium | Mitigate. Every sponsor carries an end date and the build drops expired ones. Until the daily cron exists, that depends on someone redeploying — see no. 5. | open |
| R-03 | A bracketed placeholder ships to production. | high | high | Mitigate. Every placeholder is listed in one table and carries a visible note on the page, so it reads as deliberate rather than broken. Avoid: the DNS cutover checklist starts with searching the built site for an opening bracket. | open |
| R-04 | PMI reissues the CCR handbook and the PDU numbers on the site go stale. | medium | medium | Mitigate. The page names the handbook edition, links it, and says the numbers are PMI's. Re-verify at each reissue; last verified 14 September 2026. | open |
| R-05 | The dilemma of the week needs a redeploy every week, and there is no cron. | certain | low | Transfer. A missed week shows last week's dilemma, never an empty page. The permanent fix is the Workers cron and deploy hook already planned for news and sponsors; until then a person runs the deploy script. | open |
| R-06 | The DNS cutover breaks contact@pmi-macedonia.mk. | low | critical | Avoid. The email stays with the current provider by decision; five records keep it working and are copied down before any change; the runbook has a rollback; the *.pages.dev preview touches no DNS at all. Constraint number one of the whole project. | open |
| R-07 | The CMS login Worker is never set up, so the board can never log in and the developer stays on the critical path forever. | medium | high | Mitigate. The panel already works locally, so the gap is one Worker and one GitHub app — but they depend on the repository first existing in the chapter's account (4.2). A chain of three not-started items. | open |
| R-08 | The board cannot agree on a theme. | low | low | Accept. Closed 14 September 2026: two themes were built from one codebase and the board chose the light one. The dark one still builds as a fallback and costs nothing. | closed |
| R-09 | PMI Global mandates a website platform, or a review before launch (Q2). | unknown | critical | Accept. Nobody could check — pmi.org refuses automated requests. The content, the copy, the archive and the glossary survive any platform change; only the Astro-specific work is exposed. Owner: a board member with a Leadership Central login. | open |
| R-10 | The domain or the hosting account turns out to be registered to a former board member (Q3). | unknown | high | Avoid. Ownership transfer comes before anything else; the registrar is never moved and nothing goes into a personal name. Until confirmed, nothing touches DNS. | open |
| R-11 | One unpaid volunteer is the entire project team. | medium | high | Mitigate. Everything is written down in the repository's docs; the site is static, so it keeps working untouched; the CMS lets non-developers publish; every account is in the chapter's name, so the site cannot be held hostage by accident. | open |
| R-12 | Someone fills in the 33 glossary terms without a source, and a coined word becomes “official” by repetition. | medium | medium | Avoid. Rule no. 18: a Macedonian term enters only with a cited source, and adding a source is a deliberate developer step. The untranslated terms are tagged and grouped, on purpose, as the board's to-do list. | open |
Retrospective
Lessons learned, written by the person who learned them. What went well, what did not, and what we would do differently — from the decision log and the notes at the top of the open-questions file.
What went well
- Deciding before building. Hosting, stack, scope, languages and “no registration” were all settled on paper on 19–20 August, and the build never reopened one of them.
- The build brief as a contract. An unattended session built 37 pages overnight because the brief said what it may decide alone and what it may not — the logo, a fifth colour, new dependencies, inventing facts, deploying.
- One codebase, two themes. Because components name the job and not the colour, the light variant was a token set, and the board compared two real sites instead of two mockups.
- Inventing nothing. Every missing fact is a visible bracket and a row in a table. The site looks unfinished in exactly the places where it is.
- The light theme's contrast audit caught three accessibility failures already sitting in the approved dark design — a white-on-orange button, purple text on black, and a ghost button over an orange wedge. All three fixed.
- Reading the licence. Vercel's free tier forbids commercial use, and advertising a conference ticket is commercial use. Cloudflare Pages allows it. The cost argument would have inverted at $240 a year.
What did not
- The logo was redrawn on day one — the P/M square as four colour blocks with a custom wordmark — which PMI's rules forbid twice over. Reverted the same day. It is now the first hard rule in the design system.
- “Every event carries PDUs” was written across the site as fact. The chapter runs no workshops; the conference is the only activity that carries them. A promise the chapter could not keep, caught on 14 September and rewritten.
- “Zero JavaScript” lasted until the glossary. One inline filter box is now the whole script budget, and the rule had to be rewritten to say so.
- The canonical tag and the hreflang alternate disagreed by a trailing slash, so no language pair reciprocated. 108 alternates fixed in one commit, after the fact.
- Nobody has watched the homepage animate. The build machine forces reduced motion, which proved the fallback and nothing else.
- No project manager. On a PMI chapter's website. The volunteer is the team, the maintainer and the author of this retrospective, which is a lesson in itself.
What we would do differently
- Ask the board for the facts before building the pages that need them. The pages waited weeks for numbers a single meeting supplies; the meeting brief exists and is still the critical path.
- Create the repository in the chapter's account on day one. The CMS login, the cron and the deploy hook all queue behind it, and “push later, deliberately” has now been the plan for 25 days.
- Set the “no scripts” rule as a budget, not an absolute — one script, justified in writing — so the glossary filter is a decision rather than an exception.
- Have a human with a login ask PMI Global the platform question (Q2) in week one, instead of discovering on every page that pmi.org returns 403.
- Run the contrast audit first, on the theme that was approved, rather than finding it as a by-product of building the second one.
Where the originals are
This page summarises the repository's docs folder — the decision log, the site plan, the design system, the open questions and the DNS runbook. Those are the source; if this page and a document disagree, the document is right and this page has a bug. Corrections go to the contact page.
Write to us