Files

81 lines
3.1 KiB
Markdown
Raw Permalink Normal View History

2026-08-26 09:18:14 -07:00
# psf-memo
[Memo.cash](https://memo.cash) is a social media site that uses the Bitcoin Cash (BCH) blockchain to store the messages and
send other social media signals, as per the [memo protocol](https://memo.sv/protocol).
This is a vibe-coded mono-repo that replicates the memo infrastructure:
- psf-memo-client - React web app using Bootstrap for styling. It provides a client for interacting with the BCH blockchain and social media network.
- psf-memo-indexer - node.js JavaScript indexer that interfaces with the RPC port of a BCHN full node and crawls the blockchain, indexing transaction that conform to the memo protocol.
- psf-memo-db - A Level database with a REST API for reading and writing to the database. The indexer writes data, the client reads it.
In addition to the three core pieces of infrastructure above, this repository integrates [Uncle Bob's Swarm Forge](https://github.com/unclebob/swarm-forge) idea for vibe-coded development by a team of four AI agents.
## Repository layout
```text
psf-memo-client/ React SPA for reading/writing Memo actions
psf-memo-indexer/ BCH block + mempool indexer for the Memo protocol
psf-memo-db/ LevelDB REST API (indexer writes, client reads)
specs/ Cross-component backlog and specification notes
swarmforge/ SwarmForge constitution, roles, scripts, and config
```
## Development
### Running the stack locally
```bash
# 1. Database
cd psf-memo-db && npm install && cp .env-example .env && npm start
# 2. Indexer (two processes, separate terminals)
cd psf-memo-indexer && npm install && cp .env-example .env
npm run block-indexer
npm run tx-indexer
# 3. Client
cd psf-memo-client && npm install && cp .env.example .env.development.local
npm start
```
See each component's `README.md` and `dev-docs/` for architecture details.
2026-08-26 12:05:01 -07:00
### Production (Docker)
Compose under [`psf-memo-indexer/production/docker`](psf-memo-indexer/production/docker/) builds all four services from this monorepo (no separate GitHub clones):
```bash
cd psf-memo-indexer/production/docker
cp memo-db/.env-example memo-db/.env
cp block-indexer/.env-example block-indexer/.env
cp tx-indexer/.env-example tx-indexer/.env
cp memo-client/.env-example memo-client/.env
docker compose build
docker compose up -d
```
Full ops notes: [`psf-memo-indexer/README.md`](psf-memo-indexer/README.md#production-docker).
## SwarmForge development
This project is configured for SwarmForge with four pi-backed agents:
| Role | Worktree / branch | Responsibility |
|------|-------------------|----------------|
| specifier | `master` | Writes Gherkin specs and acceptance criteria |
| coder | `.worktrees/coder` (`swarmforge-coder`) | TDD implementation |
| refactorer | `.worktrees/refactorer` (`swarmforge-refactorer`) | Cleanup, coverage, structure |
| architect | `.worktrees/architect` (`swarmforge-architect`) | Architecture, mutation hardening |
Start the swarm:
```bash
./swarm
```
Handoff helpers are on `PATH` via `swarmforge/scripts/` when an agent launches.
Standing briefing for the specifier: [`specifier-prompt.md`](specifier-prompt.md).
Prioritized feature backlog: [`specs/feature-backlog.md`](specs/feature-backlog.md).