Collapse file tree
Files
Search this repository(forward slash) forward slash/
tT
/
Copy pathindex.html
More file actions
More file actions
303 lines (283 loc) · 25.7 KB
/
Copy pathindex.html
File metadata and controls
303 lines (283 loc) · 25.7 KB
Add to spaceAsk Copilot about this file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
<!doctype html>
<html lang="en-GB">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<meta name="description" content="PHAEMA: free, open-source property and estate management software for councils in England and Wales, developed in the open. Try it, read the roadmap and take part.">
<title>PHAEMA</title>
<meta name="claude:viewport-fit-sides" content="cover">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:ital,wght@0,400;0,700;1,400&family=Bricolage+Grotesque:opsz,wght@12..96,600;12..96,800&display=swap">
<style>
/* Layout: a single-column estates "terrier" page; the one bold device is the red edging of a title plan. */
:root {
--paper: #f6f8f7; --sheet: #ffffff; --ink: #13233a; --muted: #4a5864; --line: #cfd6d8;
--edge: #c1272d; --survey: #2c6a3e; --link: #1b5c89; --tint: #e8efec; --focus: #ffdd00; --on-survey: #ffffff;
--amber: #8a5a00;
--display: "Bricolage Grotesque", "Arial Narrow", Arial, sans-serif;
--body: "Atkinson Hyperlegible", Verdana, Arial, sans-serif;
--mono: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
}
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) {
--paper: #0e151d; --sheet: #15202b; --ink: #e6ecef; --muted: #a9b5be; --line: #2d3b48;
--edge: #ff6f69; --survey: #7fc78f; --link: #86bfe9; --tint: #1a2732; --on-survey: #0e151d; --amber: #f2c46d; color-scheme: dark; } }
:root[data-theme="dark"] {
--paper: #0e151d; --sheet: #15202b; --ink: #e6ecef; --muted: #a9b5be; --line: #2d3b48;
--edge: #ff6f69; --survey: #7fc78f; --link: #86bfe9; --tint: #1a2732; --on-survey: #0e151d; --amber: #f2c46d; color-scheme: dark; }
* { box-sizing: border-box; }
body { margin: 0; background: var(--paper); color: var(--ink); font: 1.0625rem/1.6 var(--body); }
.wrap { max-width: 1140px; margin: 0 auto; padding-left: max(16px, env(safe-area-inset-left, 0px)); padding-right: max(16px, env(safe-area-inset-right, 0px)); }
a { color: var(--link); text-underline-offset: .15em; }
a:hover { text-decoration-thickness: 3px; }
a:focus-visible, button:focus-visible, .scroll:focus-visible {
outline: 3px solid var(--focus); outline-offset: 0; background-color: var(--focus); color: #0b0c0c; box-shadow: 0 4px 0 #0b0c0c; }
.scroll:focus-visible { background: none; box-shadow: none; }
h1, h2, h3 { font-family: var(--display); line-height: 1.1; text-wrap: balance; margin: 0 0 .5em; font-weight: 800; }
h1 { font-size: clamp(2.3rem, 5.2vw, 4rem); letter-spacing: -.02em; }
h2 { font-size: clamp(1.75rem, 3.4vw, 2.5rem); letter-spacing: -.01em; }
h3 { font-size: 1.3rem; font-weight: 600; }
p { margin: 0 0 1em; max-width: 68ch; }
.skip { position: absolute; left: -9999px; top: 0; z-index: 20; }
.skip:focus { left: 16px; top: 8px; background: var(--focus); color: #0b0c0c; padding: 8px 12px; }
.top { background: var(--ink); color: var(--paper); position: sticky; top: env(safe-area-inset-top, 0px); z-index: 5; }
body::before { content: ""; position: fixed; inset: 0 0 auto; height: env(safe-area-inset-top, 0px); z-index: 10; background: var(--ink); }
.top__inner { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 28px; padding-block: 12px; }
.brand { color: var(--paper); text-decoration: none; font-family: var(--display); font-weight: 800; font-size: 1.35rem; letter-spacing: .14em; display: inline-flex; align-items: center; gap: 10px; }
.brand__mark { width: 18px; height: 14px; border: 2.5px solid var(--edge); display: inline-block; }
.nav { list-style: none; display: flex; flex-wrap: wrap; gap: 4px 20px; margin: 0; padding: 0; }
.nav a { color: var(--paper); font-weight: 700; font-size: 1rem; }
.nav a[aria-current="page"] { text-decoration: none; border-bottom: 3px solid var(--edge); }
.view { padding-block: 48px 64px; }
.hero { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: 48px; align-items: center; }
.hero__text { min-width: 0; }
.kicker { color: var(--muted); font-size: 1rem; margin-bottom: .75em; }
.lede { font-size: 1.2rem; }
.fine { font-size: .92rem; color: var(--muted); }
.cta { display: flex; flex-wrap: wrap; gap: 12px; margin: 1.5em 0; }
.button { display: inline-block; background: var(--survey); color: var(--on-survey); font-weight: 700; text-decoration: none; padding: 12px 20px; border-radius: 3px; box-shadow: 0 3px 0 rgba(0,0,0,.35); }
.button--quiet { background: transparent; color: var(--link); box-shadow: inset 0 0 0 2px var(--link); }
.status-line { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; color: var(--muted); font-size: .98rem; }
.pill { font-weight: 700; font-size: .85rem; padding: 2px 10px; border: 2px solid var(--amber); color: var(--amber); letter-spacing: .06em; text-transform: uppercase; }
/* The title plan: a screenshot "edged red", as on a Land Registry plan */
.plan { margin: 0; min-width: 0; }
.plan__sheet { background: var(--sheet); border: 1px solid var(--line); padding: 14px; position: relative; }
.plan__sheet::after { content: ""; position: absolute; inset: 7px; border: 3px solid var(--edge); pointer-events: none; }
.plan__sheet img { display: block; width: 100%; height: auto; }
.plan figcaption { display: flex; gap: 10px; align-items: center; font-size: .95rem; color: var(--muted); margin-top: 10px; }
.plan__key { width: 26px; height: 14px; border: 3px solid var(--edge); flex: none; }
.band { margin-top: 48px; padding-block: 28px; border-top: 3px solid var(--ink); border-bottom: 1px solid var(--line); }
.band__lead { font-size: 1.25rem; }
.three, .benefits, .involve { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; margin-top: 32px; }
.three p, .benefits p, .involve p { font-size: 1rem; }
.benefits > div, .involve > div { border-top: 1px solid var(--line); padding-top: 16px; min-width: 0; }
.modules { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 40px; margin-top: 24px; }
.modules article { border-top: 1px solid var(--line); padding-block: 18px 6px; min-width: 0; }
.modules p { font-size: 1rem; }
.shots { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px; margin-top: 40px; }
.shots figure { margin: 0; min-width: 0; }
.shots img { display: block; width: 100%; height: auto; border: 1px solid var(--line); }
.shots figcaption { font-size: .95rem; color: var(--muted); margin-top: 8px; }
/* Roadmap: four stages, the way a title plan marks land edged, hatched and outlined */
.stages { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; margin-block: 24px 28px; align-items: start; }
.stage { background: var(--sheet); border: 1px solid var(--line); padding: 18px 20px; min-width: 0; }
.stage h3 { display: flex; align-items: center; gap: 10px; font-size: 1.15rem; }
.stage__mark { width: 22px; height: 12px; flex: none; border: 3px solid var(--muted); }
.stage--done .stage__mark { border-color: var(--survey); background: var(--survey); }
.stage--now { border: 3px solid var(--edge); }
.stage--now .stage__mark { border-color: var(--edge); }
.stage--next .stage__mark { border-style: dashed; border-color: var(--link); }
.stage--later .stage__mark { border-style: dotted; }
.stage ul { margin: 0; padding-left: 1.1em; font-size: .97rem; }
.stage li { margin-bottom: .45em; }
.resources { list-style: none; margin: 24px 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 32px; }
.resources li { border-top: 1px solid var(--line); padding-block: 18px 8px; min-width: 0; display: flex; flex-direction: column; }
.resources p { font-size: 1rem; }
.resources .go { margin-top: auto; font-weight: 700; }
.soon { display: inline-block; font-size: .9rem; font-weight: 700; color: var(--muted); border: 2px dotted var(--muted); padding: 1px 8px; }
pre { font: .95rem/1.5 var(--mono); background: var(--sheet); border: 1px solid var(--line); padding: 14px 16px; margin: 0; }
.scroll { overflow-x: auto; max-width: 100%; }
.copy { user-select: all; }
.foot { border-top: 1px solid var(--line); padding-block: 24px 40px; color: var(--muted); font-size: .92rem; }
@media (max-width: 960px) {
.hero { grid-template-columns: minmax(0, 1fr); }
.stages { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.resources, .benefits, .involve { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.three { grid-template-columns: minmax(0, 1fr); gap: 8px; }
}
@media (max-width: 600px) {
.modules, .shots, .stages, .resources, .benefits, .involve { grid-template-columns: minmax(0, 1fr); }
.view { padding-block: 28px 40px; }
}
@media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } }
</style>
</head>
<body>
<a class="skip" href="#main">Skip to content</a>
<div class="top"><div class="wrap top__inner">
<a class="brand" href="#about" aria-label="PHAEMA home"><span class="brand__mark" aria-hidden="true"></span>PHAEMA</a>
<nav aria-label="Sections"><ul class="nav">
<li><a href="#about">About</a></li>
<li><a href="#capabilities">What it does</a></li>
<li><a href="#open-source">Why open source</a></li>
<li><a href="#roadmap">Roadmap</a></li>
<li><a href="#resources">Resources</a></li>
<li><a href="#take-part">Take part</a></li>
</ul></nav>
</div></div>
<main id="main">
<section class="view" id="about" aria-labelledby="h-about">
<div class="wrap hero">
<div class="hero__text">
<p class="kicker">Open-source property and estate management for councils in England and Wales</p>
<h1 id="h-about">Estate management software, built in the open.</h1>
<p class="lede">PHAEMA (Property Holding and Estate Management Application) covers a council's property register, leases, casework, projects, rents, service charges, repairs, compliance and asset valuations in one system. It is free, open source and being developed in public. Councils, surveyors and developers are invited to try it and help shape it.</p>
<div class="cta">
<a class="button" href="#resources">Training and manuals</a>
<a class="button button--quiet" href="#take-part">Take part</a>
</div>
<p class="status-line"><span class="pill">Alpha</span> In testing, November 2026. Not yet ready for live estate management.</p>
</div>
<figure class="plan">
<div class="plan__sheet"><img src="img/my-work.jpg" width="1920" height="1230" alt="PHAEMA's My work dashboard for a surveyor: items that need attention, upcoming events, open cases and the properties they manage."></div>
<figcaption><span class="plan__key" aria-hidden="true"></span>My work: one surveyor's overdue items, next 90 days, cases and properties.</figcaption>
</figure>
</div>
<div class="wrap band">
<h2>Where the project is</h2>
<p class="band__lead">All twelve modules are built and documented, with about 240 automated tests, a user manual, a technical manual and e-learning for five roles. The next step is testing by council staff and a public test site. After that come connectors to the systems councils already use.</p>
<p><a href="#roadmap">See the roadmap</a></p>
</div>
<div class="wrap three">
<div><h3>Free to use</h3><p>No licence fee, ever. Councils can run it themselves or have any supplier host it.</p></div>
<div><h3>Built by surveyors</h3><p>Heads of terms to the RICS leasing code, 1954 Act notice dates, service charges to the RICS 2nd edition, Red Book valuation records and Golden Thread building information.</p></div>
<div><h3>Accessible by design</h3><p>Built on the GOV.UK Design System and aiming for WCAG 2.2 AA, with dark, high-contrast and large-text settings.</p></div>
</div>
</section>
<section class="view" id="capabilities" aria-labelledby="h-capabilities">
<div class="wrap">
<h2 id="h-capabilities">What PHAEMA does</h2>
<p class="lede">The optional modules (rents, service charges, maintenance, compliance and valuation) can each be switched on when a council is ready, or left to the systems it already has.</p>
<div class="modules">
<article><h3>Property register</h3><p>Estates, sites, buildings and units in a tree, with UPRN and USRN, floor areas to the RICS measurement codes, titles, photos, disposals and a map drawn from Land Registry INSPIRE parcels.</p></article>
<article><h3>Leases and key dates</h3><p>Leases, licences and wayleaves, let out or held. Rent reviews, breaks, expiries and notice deadlines become events with email reminders and a calendar feed.</p></article>
<article><h3>Cases and approvals</h3><p>Consents, renewals, dilapidations and enquiries with stages, tasks and statutory target dates. Supervisors approve decisions, with conflicts of interest declared first.</p></article>
<article><h3>Projects</h3><p>Developments, acquisitions, disposals and programmes taken through four gateways, with milestones, a budget by financial year, risks and a checklist of the register changes completion needs.</p></article>
<article><h3>Document library</h3><p>Thirty letter and notice templates, from consent letters to section 25 notice particulars, filled in from the case and downloaded to Word.</p></article>
<article><h3>Rents and arrears</h3><p>Demand runs, VAT, credit notes, receipts imported from finance, aged arrears and an export file for the finance system.</p></article>
<article><h3>Service charges</h3><p>Budgets, apportionment by floor area with caps, actual costs and year-end reconciliation on the RICS service charge timetable.</p></article>
<article><h3>Maintenance</h3><p>Repairs with target dates, who pays under the lease, works orders and their approval, recharges, planned maintenance and component lifecycles.</p></article>
<article><h3>Compliance</h3><p>Fire, gas, electrical, water, asbestos, lift and EPC certificates with remedial actions, Golden Thread information and site hazards shown before every visit.</p></article>
<article><h3>Asset valuation</h3><p>The rolling valuation programme, internal or external valuers, Red Book records, impairment prompts and the year-end schedule for finance.</p></article>
<article><h3>People and access</h3><p>Four roles, access areas that decide who sees each module, supervision chains, cover for absence and a hand-over of a leaver's work in one step.</p></article>
<article><h3>Reports and open data</h3><p>Ready-made and custom reports to Excel and CSV, the Transparency Code land and assets list, an open API and a change log of every edit.</p></article>
</div>
<div class="shots">
<figure><img src="img/project.jpg" width="1920" height="1230" loading="lazy" alt="A development project at its business case phase, showing the five phases, project details and a map."><figcaption>A development project at its business case gateway.</figcaption></figure>
<figure><img src="img/case.jpg" width="1920" height="1230" loading="lazy" alt="A licence for alterations case at the assessing stage, with key dates, target date and linked agreement."><figcaption>A consent case with its statutory target date.</figcaption></figure>
<figure><img src="img/compliance.jpg" width="1920" height="1230" loading="lazy" alt="The compliance overview listing certificates by status, with expired and missing certificates first."><figcaption>Compliance across every building.</figcaption></figure>
<figure><img src="img/estate.jpg" width="1920" height="1230" loading="lazy" alt="The whole estate dashboard with vacancy, rent roll and lease event figures."><figcaption>The whole estate at a glance.</figcaption></figure>
</div>
<p class="fine">Screenshots show fictional demonstration data.</p>
</div>
</section>
<section class="view" id="open-source" aria-labelledby="h-open-source">
<div class="wrap">
<h2 id="h-open-source">Why open source</h2>
<p class="lede">Councils already pay, separately, for estates systems that do much the same job. Open source lets them pay once, together, and own the result.</p>
<div class="benefits">
<div><h3>No licence fees</h3><p>Any council can download and run PHAEMA. Money goes on hosting, support and improvements that every council then shares.</p></div>
<div><h3>No lock-in</h3><p>Data sits in an open PostgreSQL database with exports to CSV, Excel and GeoJSON. Any supplier, or the council's own IT team, can host and support it, so changing supplier does not mean changing system.</p></div>
<div><h3>Open to inspection</h3><p>Every line of code can be read, tested and security-reviewed by the council or anyone it trusts. Nothing is hidden behind a vendor's contract.</p></div>
<div><h3>Build once, share everywhere</h3><p>When one council pays for a feature, every council gets it. Improvements come back to the shared code under the AGPL licence, so nobody can take it private.</p></div>
<div><h3>Follows government guidance</h3><p>The Technology Code of Practice asks the public sector to be open, use open standards and make code reusable. PHAEMA is built on the GOV.UK Design System and aims for WCAG 2.2 AA.</p></div>
<div><h3>Your data, your hosting</h3><p>Councils choose where PHAEMA runs: their own servers or UK or EU hosting. Planned connectors use open standards, so they work with Microsoft 365 or with open-source alternatives.</p></div>
</div>
<div class="band licence">
<h3>The licence</h3>
<p>PHAEMA is licensed under the GNU Affero General Public License v3.0. Anyone may use, study, change and share it. Anyone who runs a changed version as an online service must publish their changes under the same licence, which keeps every improvement available to all councils.</p>
<p><a href="https://github.com/phaema/phaema-app/blob/main/LICENSE">Read the licence</a> · <a href="https://github.com/phaema/phaema-app/blob/main/LICENSING.md">How PHAEMA is licensed</a></p>
</div>
</div>
</section>
<section class="view" id="roadmap" aria-labelledby="h-roadmap">
<div class="wrap">
<h2 id="h-roadmap">Roadmap</h2>
<p class="lede">What is built, what is being tested now, and what comes next. Councils taking part help decide the order.</p>
<div class="stages">
<section class="stage stage--done" aria-label="Built"><h3><span class="stage__mark" aria-hidden="true"></span>Built</h3><ul><li>Property register, map and Land Registry boundaries</li><li>Leases, key dates, reminders and calendar feed</li><li>Cases, approvals and the document library</li><li>Rent ledger and service charges</li><li>Maintenance, compliance and the Golden Thread</li><li>Asset valuation</li><li>Projects with gateways, budgets, risks and completion</li><li>Access areas, cover and hand-over of work</li><li>Reports, imports, open data and API</li><li>Help, user and technical manuals, and e-learning for five roles</li></ul></section>
<section class="stage stage--now" aria-label="Now: testing"><h3><span class="stage__mark" aria-hidden="true"></span>Now: testing</h3><ul><li>A 12-day test programme run by council staff</li><li>A public test site with fictional demonstration data</li><li>Installation guide and hosting scripts</li></ul></section>
<section class="stage stage--next" aria-label="Next: connectors"><h3><span class="stage__mark" aria-hidden="true"></span>Next: connectors</h3><ul><li>Single sign-on with the council's own accounts</li><li>Ordnance Survey address, UPRN and EPC lookups</li><li>Map layers for QGIS, ArcGIS and other GIS</li><li>Texts and letters to tenants through GOV.UK Notify</li><li>Notifications in Teams, Matrix or Nextcloud Talk</li><li>Documents kept in SharePoint or Nextcloud</li></ul></section>
<section class="stage stage--later" aria-label="Later"><h3><span class="stage__mark" aria-hidden="true"></span>Later</h3><ul><li>Tenant and contractor portals</li><li>Condition surveys and lifecycle planning</li><li>Full Golden Thread information management</li><li>Live finance, legal and CRM connectors</li><li>Welsh translation</li></ul></section>
</div>
<p>Connectors will be one optional module, off by default and built on open standards, so the same connector works with Microsoft 365 or with open-source alternatives such as Nextcloud, Matrix and Keycloak.</p>
<p><a href="https://github.com/phaema/phaema-app/blob/main/docs/roadmap.md">The full roadmap on GitHub</a> · <a href="https://claude.ai/artifact/8nri1SACnG6YVXkp1HSJgU">The integrations review</a></p>
</div>
</section>
<section class="view" id="resources" aria-labelledby="h-resources">
<div class="wrap">
<h2 id="h-resources">Resources</h2>
<p class="lede">Everything you need to try PHAEMA, learn it, test it or run it.</p>
<ul class="resources">
<li><h3>Test site</h3><p>Try PHAEMA with fictional data: a council estate, leases, cases and projects to explore.</p><p class="go"><span class="soon">Coming soon</span></p></li>
<li><h3>Training</h3><p>Interactive courses for surveyors, finance, maintenance, administrators and viewers, using the real screens.</p><p class="go"><a href="https://claude.ai/artifact/7wkjDTdrtqLZwuf3zo79VE">Start the training</a></p></li>
<li><h3>User manual</h3><p>How to do each task in PHAEMA, with worked examples from the demonstration data.</p><p class="go"><a href="https://claude.ai/artifact/CTsfQjqNtVH4qBZjg5QjRo">Read the user manual</a></p></li>
<li><h3>Help pages</h3><p>The same help that appears inside PHAEMA, readable on GitHub.</p><p class="go"><a href="https://github.com/phaema/phaema-app/tree/main/apps/help/pages">Browse the help</a></p></li>
<li><h3>Technical manual</h3><p>Architecture, frameworks, data model, security, hosting and how to extend PHAEMA.</p><p class="go"><a href="https://claude.ai/artifact/8sTYq44xi5Ps3NuVFDrEm2">Read the technical manual</a></p></li>
<li><h3>Test programme</h3><p>The tests council staff run before go-live, with expected results to record.</p><p class="go"><a href="https://claude.ai/artifact/7jMMkZAmCZMEgvEfYhhiK1">See the test programme</a></p></li>
<li><h3>Source code</h3><p>The full application under the AGPL, with its automated tests and installation scripts.</p><p class="go"><a href="https://github.com/phaema/phaema-app">Go to GitHub</a></p></li>
<li><h3>Roadmap</h3><p>What is built, what is being tested and what comes next.</p><p class="go"><a href="https://github.com/phaema/phaema-app/blob/main/docs/roadmap.md">Read the roadmap</a></p></li>
<li><h3>Integrations review</h3><p>The market review behind the connectors plan, including open-source GIS and Microsoft 365 alternatives.</p><p class="go"><a href="https://claude.ai/artifact/8nri1SACnG6YVXkp1HSJgU">Read the review</a></p></li>
</ul>
<div class="band run">
<h3>Run it on your own computer</h3>
<p>You need Docker (or Colima on a Mac) and Git. Mac users can follow the <a href="https://github.com/phaema/phaema-app/blob/main/docs/setup-mac.md">Mac setup guide</a>.</p>
<pre class="scroll" tabindex="0"><code>git clone https://github.com/phaema/phaema-app.git
cd phaema-app
./phaema.sh start
./phaema.sh admin # create your sign-in</code></pre>
</div>
</div>
</section>
<section class="view" id="take-part" aria-labelledby="h-take-part">
<div class="wrap">
<h2 id="h-take-part">Take part</h2>
<p class="lede">PHAEMA is built by a chartered surveyor with a very small team. Every tester, reviewer and contributor makes it better for every council.</p>
<div class="involve">
<div><h3>Councils</h3><p>Try the test site, run parts of the test programme with your own staff, and tell us what your estates team needs. Councils that pilot PHAEMA shape what is built next.</p></div>
<div><h3>Surveyors and estates staff</h3><p>Check that the processes match how you work: rent reviews, the 1954 Act, service charges, valuations and casework. Practical corrections from practitioners are the most valuable contribution of all.</p></div>
<div><h3>Developers</h3><p>Pick up an issue, fix a bug or build a connector. PHAEMA is Django and PostGIS with an automated test suite; contributions are signed off under the Developer Certificate of Origin.</p></div>
<div><h3>GIS and data teams</h3><p>Help shape the map layers, OS and EPC lookups and open data output so PHAEMA fits the systems you already run.</p></div>
<div><h3>Suppliers</h3><p>Host and support PHAEMA for councils. The code is free for you to use; the AGPL asks only that your improvements are shared.</p></div>
</div>
<div class="band">
<h3>Get in touch</h3>
<p>Email <a class="copy" href="mailto:stuart@phaema.co.uk">stuart@phaema.co.uk</a> with questions, ideas or offers of help, or raise an issue on GitHub. Councils interested in a pilot are especially welcome to get in touch.</p>
<div class="cta">
<a class="button" href="https://github.com/phaema/phaema-app/issues/new">Raise an issue</a>
<a class="button button--quiet" href="https://github.com/phaema/phaema-app/blob/main/CONTRIBUTING.md">How to contribute</a>
</div>
</div>
</div>
</section>
</main>
<footer class="foot"><div class="wrap">
<p>PHAEMA is free software under the GNU Affero General Public License v3.0. It is in alpha and not yet ready for live estate management. Screenshots show fictional demonstration data. Updated November 2026. Contact: stuart@phaema.co.uk.</p>
</div></footer>
<script>
(function () {
var views = Array.prototype.slice.call(document.querySelectorAll('.view'));
var links = Array.prototype.slice.call(document.querySelectorAll('.nav a'));
function show() {
var id = (location.hash || '#about').slice(1);
var el = document.getElementById(id);
if (!el || !el.classList.contains('view')) id = 'about';
views.forEach(function (v) { v.hidden = v.id !== id; });
links.forEach(function (a) { if (a.getAttribute('href') === '#' + id) a.setAttribute('aria-current', 'page'); else a.removeAttribute('aria-current'); });
}
window.addEventListener('hashchange', function () { show(); window.scrollTo(0, 0); });
show();
})();
</script>
</body>
</html>