From ccd0c07ee722c440a56789abfe410131e497a3d4 Mon Sep 17 00:00:00 2001 From: Moheeb Zara Date: Sat, 16 May 2026 20:35:59 -0700 Subject: [PATCH] docs(landing,readme): cover the full current feature set Landing page modules and README features now reflect forms/waivers, certifications, classes, equipment, access control, onboarding/invites, the permissions matrix, markdown ops docs, and anonymous incident tracking, alongside the original members/tasks/projects/payments/ governance/comms. --- README.md | 12 +++++++++--- app/(landing)/page.tsx | 16 +++++++++++----- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 0a9dd63..db7b34f 100644 --- a/README.md +++ b/README.md @@ -11,11 +11,17 @@ A multi-tenant operating system for hackerspaces, makerspaces, and member-run sh ## Features -- **Members and tiers.** Roster, tiers (Plus, Basic, Associate), roles (admin, board, treasurer, member, associate), state (current, late, inactive, unverified), per-member skills, certifications, and badges. +- **Members and tiers.** Roster, tiers (Plus, Basic, Associate), built-in roles, custom roles, state (current, late, inactive, unverified), per-member skills. A per-space permissions matrix grants capabilities to any role additively, on top of role-based RLS. - **Tasks and projects.** Project boards, task assignment, status, area tagging, priority, comments. -- **Operations.** Knowledge base, secrets vault, area leads, equipment, maintenance log. +- **Operations.** Markdown knowledge base and processes (with working in-document anchor links), an AES-256-GCM secrets vault revealed on demand, per-item Ops ACLs, area leads. +- **Forms and waivers.** An easy builder for arbitrary forms and signable waivers. Public (anonymous or signed-in) or members-only; per-submission snapshots of schema and legal text so a waiver stays valid against exactly what was signed; CSV export; optional onboarding step. +- **Certifications and instructors.** Certification types with optional validity periods; an Instructor capability awards and revokes them; expiry and revocation tracked; members see their own record. +- **Classes.** Class offerings with scheduled sessions, member signup with waitlists, attendance, and an optional certification granted on completion. +- **Equipment.** Tool and equipment registry with time-window reservations, no-overlap enforcement, and an optional required certification per item. +- **Access control.** Member access cards (the card UID is treated as a credential), a configurable per-space door integration (native HeatSync controller or generic HTTP) behind an SSRF-guarded executor, and an immutable, secret-redacted access log. +- **Onboarding and invites.** A configurable member onboarding flow; multi-use, expiring, role-granting invite links. - **Payments and financials.** Per-member payment ledger, integration credentials per space, exports, monthly financial summary. -- **Governance.** Proposals with vote tracking and expiry, incident reports, policy library, area-of-interest configuration. +- **Governance.** Proposals with quorum, vote tracking and expiry; incident reports with anonymous reporter tracking by token; versioned policy library; member forum with polymorphic comments. - **Communications.** Multi-channel chat with realtime delivery. - **Recruitment.** Public-facing recruitment page per space. - **API.** PostgREST-generated REST for every table, gated by RLS. Optional webhooks with HMAC-signed deliveries. diff --git a/app/(landing)/page.tsx b/app/(landing)/page.tsx index cfa378d..285fc75 100644 --- a/app/(landing)/page.tsx +++ b/app/(landing)/page.tsx @@ -7,18 +7,24 @@ import { ResourceShowcase } from '@/components/landing/resource-showcase' import { HeroPreviewCluster } from '@/components/landing/mini-previews' const MODULES = [ - { num: '01', title: 'Members', desc: 'Tiers, dues status, contact info, custom roles. Know who is current and who is not, at a glance.' }, + { num: '01', title: 'Members', desc: 'Tiers, dues status, contact info, custom roles, and a per-space permissions matrix. Know who is current and who is not, at a glance.' }, { num: '02', title: 'Tasks and chores', desc: 'One-off and recurring work with assignments, due dates, and area tags. Claim and complete from anywhere.' }, { num: '03', title: 'Projects', desc: 'A board for what the space is building. Progress, areas, and who is on it, visible to everyone.' }, { num: '04', title: 'Payments', desc: 'Import from PayPal, Venmo, or Zeffy. Reconcile transactions to members by hand or by email match.' }, - { num: '05', title: 'Ops and knowledge', desc: 'Procedures, area leads, and an encrypted secrets vault. Role-gated, revealed on demand.' }, - { num: '06', title: 'Governance', desc: 'Proposals with quorum and voting, incident reports, a versioned policy library, and a member forum.' }, + { num: '05', title: 'Ops and knowledge', desc: 'Markdown procedures and knowledge base, area leads, and an encrypted secrets vault. Role-gated, revealed on demand.' }, + { num: '06', title: 'Governance', desc: 'Proposals with quorum and voting, incident reports with anonymous tracking, a versioned policy library, and a member forum.' }, + { num: '07', title: 'Forms and waivers', desc: 'An easy builder for any form or signable waiver. Public or members-only, with immutable per-submission snapshots.' }, + { num: '08', title: 'Certifications', desc: 'Define certifications and let instructors award or revoke them. Expiry tracking and a member-facing record.' }, + { num: '09', title: 'Classes', desc: 'Schedule sessions, take signups with waitlists, mark attendance, and optionally grant a certification on completion.' }, + { num: '10', title: 'Equipment', desc: 'A tool registry with reservations. Optionally gate a tool behind a required certification.' }, + { num: '11', title: 'Access control', desc: 'Associate member cards, connect a door controller (native HeatSync or generic HTTP), and keep an immutable access log.' }, + { num: '12', title: 'Onboarding and invites', desc: 'A configurable onboarding flow and role-granting invite links with usage caps. New members land where you want them.' }, ] const STEPS = [ - { num: '01', title: 'Import your members', desc: 'Paste from a spreadsheet or add them one by one. Set tiers, statuses, and contact info.' }, + { num: '01', title: 'Import your members', desc: 'Paste from a spreadsheet or add them one by one. Set tiers, statuses, and contact info, or share a role-granting invite link.' }, { num: '02', title: 'Connect payments', desc: 'Link PayPal or Zeffy, import transactions, and match them to members.' }, - { num: '03', title: 'Seed your ops docs', desc: 'Drop in SOPs, credentials, and area leads. The whole board has one place to look things up.' }, + { num: '03', title: 'Set up the rest', desc: 'Build your onboarding flow and waivers, seed ops docs and area leads, define certifications, classes, and equipment.' }, ] export default async function LandingPage() {