···11+# Bushel Schemas
22+33+Bushel is a webring platform for collaborative online content sharing, described as "a reconstruction of LiveJournal for the 2020s." It enables open source communities to track information across multiple communication channels with privacy controls.
44+55+## Overview
66+77+Based on the repository structure and documentation, Bushel provides:
88+99+- **Collaborative Content Sharing**: Individuals can quickly write about their work
1010+- **Bidirectional Linking**: Groups can share content with interconnected references
1111+- **Version-Controlled Content**: Supports versioned data structures like blog posts, wiki entries, and social media feeds
1212+- **Privacy Management**: GitHub OAuth integration for controlling access to private content
1313+- **Resolvable Markdown**: Uses enhanced Markdown for sharing structured data
1414+1515+## Core Schema Modules
1616+1717+The library is organized into several key modules:
1818+1919+### Contact Schema
2020+2121+The `contact` module likely defines structures for:
2222+2323+```ocaml
2424+(* Hypothetical contact schema based on social networking requirements *)
2525+type contact = {
2626+ id: string;
2727+ name: string;
2828+ email: string option;
2929+ github_username: string option;
3030+ website: string option;
3131+ bio: string option;
3232+ avatar_url: string option;
3333+ public_key: string option;
3434+}
3535+3636+type social_link = {
3737+ platform: string; (* github, mastodon, twitter, etc *)
3838+ handle: string;
3939+ url: string;
4040+}
4141+4242+type contact_with_social = {
4343+ contact: contact;
4444+ social_links: social_link list;
4545+ trusted: bool; (* for privacy/trust relationships *)
4646+}
4747+```
4848+4949+### Entry Schema
5050+5151+The `entry` module represents content items:
5252+- Blog posts
5353+- Wiki entries
5454+- Notes
5555+- Ideas
5656+- News items
5757+5858+### Project Schema
5959+6060+The `project` module handles:
6161+- Open source project metadata
6262+- Collaboration settings
6363+- Privacy controls
6464+- Version tracking
6565+6666+### Link Schema
6767+6868+The `link` module manages:
6969+- Bidirectional references between content
7070+- External links with metadata
7171+- Cross-references between users and projects
7272+7373+## Contact-Focused Features
7474+7575+### Identity Management
7676+- GitHub OAuth integration for authentication
7777+- Support for multiple identity providers
7878+- Public key infrastructure for secure communication
7979+8080+### Social Networking
8181+- Contact discovery within communities
8282+- Trust relationships for privacy
8383+- Cross-platform identity linking
8484+8585+### Communication Channels
8686+- Multi-channel content aggregation
8787+- Private design discussions
8888+- Public collaboration spaces
8989+9090+### Privacy Controls
9191+- Individual privacy settings per contact
9292+- Group-based access controls
9393+- Selective content sharing
9494+9595+## Markdown Extensions
9696+9797+Bushel extends standard Markdown with special syntax:
9898+- `@avsm/bushel` - Reference to users/projects
9999+- Support for structured data embedding
100100+- Version-controlled content references
101101+102102+## Technical Architecture
103103+104104+- **Language**: Primarily OCaml (77%) with Python utilities (22.5%)
105105+- **Content Format**: Enhanced Markdown with structured data
106106+- **Versioning**: Git-based version control for all content
107107+- **Authentication**: GitHub OAuth with extensible identity providers
108108+- **Privacy**: Granular access controls and trust relationships
109109+110110+## Use Cases
111111+112112+1. **Open Source Communities**: Track contributions across multiple channels
113113+2. **Collaborative Writing**: Shared documentation with version control
114114+3. **Social Networking**: Privacy-aware community building
115115+4. **Content Aggregation**: Unified view of distributed content
116116+5. **Project Management**: Cross-project collaboration and references
117117+118118+The contact schema is central to enabling these use cases by providing a foundation for identity, trust, and communication within the Bushel ecosystem.
+3
webcomp/CLAUDE.md
···11+I'd like to experiment with webcomponents and build up a website entirely composed around the principled use of them, with semantically meaningful tags and layout templates that are translated to appropriate html.
22+33+We'll start by building up a library of small components based on the bushel schemas in https://github.com/avsm/bushel