Skip to content

Commit 72720c1

Browse files
hyperpolymathclaude
andcommitted
docs(readme): convert README.adoc -> Markdown README.md
README must be real Markdown to render in GitHub community-health, the GitHub profile, and external MCP directories (Glama) — AsciiDoc shows as raw markup there. pandoc asciidoc->GFM, badges fixed to clickable, SPDX header kept as an HTML comment, duplicate README.adoc removed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent f727bf5 commit 72720c1

2 files changed

Lines changed: 153 additions & 133 deletions

File tree

README.adoc

Lines changed: 0 additions & 133 deletions
This file was deleted.

README.md

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
<!--
2+
SPDX-License-Identifier: CC-BY-SA-4.0
3+
SPDX-FileCopyrightText: 2025-2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
4+
-->
5+
6+
Squad Audit for student house-shares: bring the friend group you already
7+
have; `flat-mate` tells you whether it survives a lease, then drafts the
8+
house agreement and search brief to make sure it does.
9+
10+
This repo includes:
11+
12+
- `apps/api` — Deno API using `verisimdb` as the persistence/search
13+
layer.
14+
15+
- `apps/web` — React + Vite web client.
16+
17+
- `apps/mobile` — Expo React Native mobile client.
18+
19+
- `packages/shared` — Domain models, matching/scoring rules, and
20+
verisimdb encoding helpers.
21+
22+
# Why this product (v1 = Squad Audit)
23+
24+
UK first-years are allocated halls; by January they must form
25+
private-market groups of 3–6 with people they met eight weeks earlier,
26+
with no compatibility input. No incumbent serves that moment.
27+
`flat-mate` audits an **already-formed** group — harmony + feasibility
28+
check, auto-drafted house agreement, search brief — and sits
29+
**upstream** of SpareRoom and its peers. Listings are explicitly **out
30+
of scope**: flat-mate hosts none and is not a SpareRoom rival. Target
31+
wave: Jan–May 2027, London second years.
32+
33+
The earlier swipe + listings flow (v0) remains in-tree as **legacy**
34+
code until a quarantine/removal decision. It is not the product.
35+
Authoritative spec:
36+
[docs/design/squad-audit-v1.adoc](docs/design/squad-audit-v1.adoc).
37+
38+
**What we never promise:** a "stable matching" — typically nonexistent
39+
in roommate markets; see the theory constraints in
40+
[docs/design/squad-audit-v1.adoc](docs/design/squad-audit-v1.adoc).
41+
42+
# Architecture
43+
44+
`flat-mate` writes entities as hexads in `verisimdb` (`POST` `/hexads`,
45+
`GET` `/search/text`, `POST` `/search/vector`). Because current
46+
`verisimdb` API responses are compact, the app stores encoded payloads
47+
in searchable document titles as an MVP strategy.
48+
49+
The in-tree profile/listing/swipe write paths are the legacy v0 flow.
50+
The v1 target is an epistemic-typed server: per-field governance
51+
metadata, conceal-lattice disclosure tiers, no special-category fields
52+
by schema construction — see the design doc. Matching rules live in
53+
`packages/shared/src/matching/`, never in UI components.
54+
55+
See `docs/architecture.md`, [TOPOLOGY.md](TOPOLOGY.md), and
56+
[EXPLAINME.adoc](EXPLAINME.adoc).
57+
58+
# Quick Start
59+
60+
1. Start verisimdb in another terminal:
61+
62+
``` bash
63+
cd /var/mnt/eclipse/repos/verisimdb
64+
cargo run -p verisim-api
65+
```
66+
67+
<!-- -->
68+
69+
1. Install web/mobile dependencies:
70+
71+
``` bash
72+
cd /var/mnt/eclipse/repos/flat-mate
73+
npm install
74+
```
75+
76+
<!-- -->
77+
78+
1. Configure the Deno API (`deno` 1.40+ needed):
79+
80+
``` bash
81+
cp .env.example .env
82+
source .env
83+
```
84+
85+
<!-- -->
86+
87+
1. Start the API:
88+
89+
``` bash
90+
deno run --watch=apps/api --allow-net --allow-env apps/api/main.ts
91+
```
92+
93+
<!-- -->
94+
95+
1. Start web + mobile:
96+
97+
``` bash
98+
npm run dev:web
99+
npm run dev:mobile
100+
```
101+
102+
# Environment
103+
104+
`.env`:
105+
106+
```bash
107+
HOST=127.0.0.1
108+
PORT=4000
109+
VERISIMDB_BASE_URL=http://127.0.0.1:8080
110+
VERISIMDB_VECTOR_DIM=384
111+
```
112+
113+
Optional:
114+
`VITE_API_BASE_URL=`[`http://127.0.0.1:4000`](http://127.0.0.1:4000)
115+
(web),
116+
`EXPO_PUBLIC_API_BASE_URL=`[`http://127.0.0.1:4000`](http://127.0.0.1:4000)
117+
(Expo).
118+
119+
Profiles require a `.ac.uk` `studentEmail` for student verification in
120+
the first pilot.
121+
122+
# Product Scope (First Instance)
123+
124+
- Group creation and member questionnaires, eliciting both **behaviour**
125+
and **tolerance** per dimension.
126+
127+
- Pairwise harmony audit across the group, with internal dealbreaker
128+
detection.
129+
130+
- Feasibility by budget **intersection** (`[max(mins),` `min(maxes)]`,
131+
never by mean).
132+
133+
- House-agreement draft generated from the group’s actual divergence
134+
points.
135+
136+
- Search brief to take to the listings market.
137+
138+
# Next Product Increments
139+
140+
Deferred roadmap, in liquidity order (see the design doc):
141+
142+
1. Solo **top-up** discovery for groups with open slots, gated by
143+
conceal-lattice disclosure tiers and a mutual-consent lifecycle.
144+
145+
2. Deferred-acceptance rounds for solo-joins-household — the one
146+
genuinely bipartite, theory-clean centralized mechanism.
147+
148+
3. Calibration flywheel: anonymised outcome events so scoring weights
149+
become fitted rather than literature-seeded.
150+
151+
# License
152+
153+
SPDX-License-Identifier: CC-BY-SA-4.0 See [LICENSE](LICENSE).

0 commit comments

Comments
 (0)