···11+22+SHELL = /bin/bash
33+.SHELLFLAGS = -o pipefail -c
44+55+.PHONY: help
66+help: ## Print info about all commands
77+ @echo "Commands:"
88+ @echo
99+ @grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[01;32m%-20s\033[0m %s\n", $$1, $$2}'
1010+1111+.PHONY: build
1212+build: ## Build all executables
1313+ go build .
1414+1515+.PHONY: all
1616+all: build
1717+1818+.PHONY: test
1919+test: ## Run tests
2020+ go test ./...
2121+2222+.PHONY: coverage-html
2323+coverage-html: ## Generate test coverage report and open in browser
2424+ go test ./... -coverpkg=./... -coverprofile=test-coverage.out
2525+ go tool cover -html=test-coverage.out
2626+2727+.PHONY: lint
2828+lint: ## Verify code style and run static checks
2929+ go vet ./...
3030+ test -z $(gofmt -l ./...)
3131+3232+.PHONY: fmt
3333+fmt: ## Run syntax re-formatting (modify in place)
3434+ go fmt ./...
3535+3636+.PHONY: check
3737+check: ## Compile everything, checking syntax (does not output binaries)
3838+ go build ./...
3939+4040+.env:
4141+ if [ ! -f ".env" ]; then cp example.dev.env .env; fi
+5
README.md
···11+22+scrumble
33+========
44+55+This is a work-in-progress atproto app for communities ("scenes") to currate and discuss arbitrary content.
+63
doc/plan.txt
···11+22+conceptual questions:
33+- ability to log-in to instance separate from a scene? eg, to manage scene
44+- single client metadata or multiple?
55+66+77+basic setup/infra:
88+- lexicon schemas
99+- gorm database models
1010+- echo web server
1111+- indexing: tap consumer, validate, filtering, tables
1212+- hydration: skeleton-style, labels, takedowns, viewer context
1313+- web app: pongo2, htmx, tailwind (?)
1414+- oauth client and sessions
1515+- label indexing: package/struct?
1616+- dev-env with fake accounts and data
1717+1818+major components:
1919+- store.Store
2020+ => database, cache
2121+ => manages invariants
2222+ => high-level fetches and types
2323+- store/models: SQL schemas
2424+- indexer.Indexer
2525+ => consume from tap
2626+ => validate schemas
2727+2828+2929+views:
3030+- top bar: scrumble drop-menu; search; account/notifs drop-menu
3131+- feed of items: user, time, interactions, tags
3232+- scene summary bar: description, numbers, content guidelines, rules
3333+3434+3535+instance admin:
3636+- add PDS invite codes
3737+3838+3939+scene service account mgmt:
4040+- create new scenes as accounts on configured PDS (using invite codes?)
4141+- admin endpoint to create a scene; or add/import
4242+- instance invite codes allow anybody to create a scene
4343+- scene admins can take actions, and instance will update scene account (records)
4444+- lifecycle: create, migrate/import, deactivate
4545+4646+4747+4848+scene config:
4949+- tags: any/limited/none; who
5050+- emoji reactions: any/limited/none; who
5151+- comments: threaded/flat/none; who
5252+- items: types; per-type filters and limits; filter code
5353+- membership: open/approve/invite/admin
5454+- basic colors
5555+5656+5757+tool shopping:
5858+- CDN solution
5959+6060+docker-compose:
6161+- local PDS (?)
6262+- local PLC (?)
6363+- postgresql (?)