Initialize Major Domo umbrella repo
Reorganize as an umbrella directory managing independent sub-project repos (discord-app-v2, database, sba-website). Adds umbrella CLAUDE.md with architecture diagram and deployment topology, .gitignore for sub-projects, and skeleton ROADMAP.md. Legacy files archived, old website and root docker-compose removed. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
commit
f9d5494615
17
.gitignore
vendored
Normal file
17
.gitignore
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# Sub-project repositories (independent git repos)
|
||||||
|
discord-app-v2/
|
||||||
|
database/
|
||||||
|
sba-website/
|
||||||
|
|
||||||
|
# Development mounts
|
||||||
|
dev-storage/
|
||||||
|
dev-logs/
|
||||||
|
|
||||||
|
# Claude Code config (machine-specific)
|
||||||
|
.claude/
|
||||||
|
|
||||||
|
# Archive
|
||||||
|
.archive/
|
||||||
|
|
||||||
|
# OS
|
||||||
|
.DS_Store
|
||||||
119
CLAUDE.md
Normal file
119
CLAUDE.md
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
# Major Domo — Ecosystem
|
||||||
|
|
||||||
|
SBA fantasy baseball league management system: Discord bot, FastAPI database API, Vue.js website. This is the parent directory containing all Major Domo sub-projects. **Do not develop here** — work in the appropriate sub-project directory.
|
||||||
|
|
||||||
|
## Sub-Projects
|
||||||
|
|
||||||
|
| Directory | Gitea Repo | What It Does | Tech |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `discord-app-v2/` | `cal/major-domo-v2` | Discord bot — slash commands, transactions, trades, dice, voice channels | Python 3.13, discord.py, Pydantic v2 |
|
||||||
|
| `database/` | `cal/major-domo-database` | Central API — all league data, player/team/transaction CRUD, game results | FastAPI, Peewee ORM, PostgreSQL |
|
||||||
|
| `sba-website/` | `cal/sba-website` | Public league website — standings, stats, schedules, leaderboards | Vue 3, TypeScript, Vite, Bootstrap 5 |
|
||||||
|
|
||||||
|
### Supporting Directories
|
||||||
|
|
||||||
|
| Directory | Purpose |
|
||||||
|
|---|---|
|
||||||
|
| `dev-storage/` | Mapped volume for local Docker containers to share storage |
|
||||||
|
| `dev-logs/` | Discord bot log mounts |
|
||||||
|
| `.archive/` | Archived files: legacy scripts, old databases, dead code |
|
||||||
|
|
||||||
|
## Architecture — How Everything Connects
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────┐
|
||||||
|
│ Discord Users │
|
||||||
|
│ (SBA server) │
|
||||||
|
└────────┬────────────┘
|
||||||
|
│ slash commands
|
||||||
|
▼
|
||||||
|
┌─────────────────────┐ HTTP/API ┌──────────────────────┐
|
||||||
|
│ Discord Bot │ ──────────────► │ Database API │
|
||||||
|
│ discord-app-v2/ │ │ database/ │
|
||||||
|
│ (akamai) │ │ sba.manticorum.com │
|
||||||
|
└─────────────────────┘ └──────────┬───────────┘
|
||||||
|
│ Peewee ORM
|
||||||
|
┌─────────────────────┐ HTTP/API ▼
|
||||||
|
│ Website │ ──────────────► ┌──────────────────────┐
|
||||||
|
│ sba-website/ │ │ PostgreSQL │
|
||||||
|
│ (akamai:803) │ │ sba_postgres │
|
||||||
|
└─────────────────────┘ └──────────────────────┘
|
||||||
|
│
|
||||||
|
┌──────────────────────┐
|
||||||
|
│ Redis (optional) │
|
||||||
|
│ sba_redis │
|
||||||
|
└──────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
## Deployment Topology
|
||||||
|
|
||||||
|
| Service | Host | Container | Port |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Discord Bot | `ssh akamai` | `major-domo-discord-app-1` | — (outbound only) |
|
||||||
|
| Database API | `ssh akamai` | `sba_db_api` | 801 |
|
||||||
|
| PostgreSQL | `ssh akamai` | `sba_postgres` | 5432 |
|
||||||
|
| Redis | `ssh akamai` | `sba_redis` | 6379 |
|
||||||
|
| Website | `ssh akamai` | `sba-website-sba-web-1` | 803 |
|
||||||
|
| Database API (dev) | `ssh sba-db` | dev container | 801 |
|
||||||
|
|
||||||
|
## Environments
|
||||||
|
|
||||||
|
| | Prod | Dev |
|
||||||
|
|---|---|---|
|
||||||
|
| API Host | `ssh akamai` | `ssh sba-db` |
|
||||||
|
| Bot Host | `ssh akamai` | local |
|
||||||
|
|
||||||
|
## Cross-Project Conventions
|
||||||
|
|
||||||
|
- **CI/CD**: All repos use Gitea Actions. Docker images built on CalVer tag push (`YYYY.M.BUILD`). Bot uses `.scripts/release.sh` to create tags; database auto-generates CalVer on main merge.
|
||||||
|
- **Branching**: Feature branches → `main`. PRs reviewed before merge.
|
||||||
|
- **Docker images**: Published to `manticorum67/major-domo-*` and `manticorum67/sba-website` on Docker Hub.
|
||||||
|
- **Testing**: `python -m pytest` in each sub-project. Factory data preferred over mocks.
|
||||||
|
- **Auth**: Bot authenticates to API via `API_TOKEN` env var, API validates via OAuth2PasswordBearer.
|
||||||
|
- **Reusable Actions**: CI pipelines use `cal/gitea-actions` for `calver`, `docker-tags`, `gitea-tag`, `discord-notify`.
|
||||||
|
|
||||||
|
## Which Repo Do I Change?
|
||||||
|
|
||||||
|
| I want to... | Change this |
|
||||||
|
|---|---|
|
||||||
|
| Add/modify API endpoints | `database/` |
|
||||||
|
| Add/modify bot commands | `discord-app-v2/` |
|
||||||
|
| Change the website | `sba-website/` |
|
||||||
|
| Add a new transaction type | `discord-app-v2/` (command + service) + `database/` (endpoint + model) |
|
||||||
|
| Update league constants (season, weeks) | `discord-app-v2/` (`config.py`) + `sba-website/` (`utilities.ts`) |
|
||||||
|
| Deploy the bot | `discord-app-v2/.scripts/release.sh` → CI builds → `ssh akamai` pull + restart |
|
||||||
|
| Deploy the API | Push to `main` → CI builds → `ssh akamai` pull + restart |
|
||||||
|
| Deploy the website | `sba-website/scripts/build-and-push.sh` → `ssh akamai` pull + restart |
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Discord Bot v2
|
||||||
|
cd discord-app-v2 && python -m pytest --tb=short -q
|
||||||
|
|
||||||
|
# Database API
|
||||||
|
cd database && python -m pytest --tb=short -q
|
||||||
|
|
||||||
|
# Website
|
||||||
|
cd sba-website && npm run dev
|
||||||
|
cd sba-website && npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
## Key Patterns
|
||||||
|
|
||||||
|
- **Bot commands**: Always use `@logged_command()` decorator + `self.logger` in `__init__`
|
||||||
|
- **Models**: Database entities require `id` fields — tests must provide `id` values
|
||||||
|
- **Data flow**: Bot → Database API via HTTP (`api/client.py`), Website → API via service layer
|
||||||
|
- **League constants**: Season 12 (SBA). 18 weeks, 4 games/week.
|
||||||
|
- **Caching**: Optional Redis — decorators in `utils/decorators.py`: `@cached_api_call`, `@cached_single_item`, `@cache_invalidate`
|
||||||
|
|
||||||
|
## Knowledge Base
|
||||||
|
|
||||||
|
Major Domo has a searchable knowledge base for release notes, session summaries, troubleshooting entries, and project documentation.
|
||||||
|
|
||||||
|
- **Search**: Use the `kb-search` MCP server — `mcp__kb-search__search` with `domain: "major-domo"`
|
||||||
|
- **Save new docs**: Use the `/save-doc` skill (sub-commands: `save`, `release-notes`, `session`, `troubleshooting`)
|
||||||
|
- **Domain**: `major-domo`
|
||||||
|
- **Tags**: `major-domo`, `database`, `deployment`, `release-notes`, `discord`, etc.
|
||||||
|
|
||||||
|
Always check the KB before investigating issues that may have been solved before.
|
||||||
37
ROADMAP.md
Normal file
37
ROADMAP.md
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# Major Domo — Roadmap
|
||||||
|
|
||||||
|
> Last updated: 2026-03-23
|
||||||
|
|
||||||
|
## Current State
|
||||||
|
|
||||||
|
Major Domo manages the SBA (Strat-o-Matic Baseball Association) fantasy baseball league through a Discord bot, FastAPI database API, and Vue.js website. The system handles team rosters, player transactions, trades, dice rolling, standings, schedules, and game results.
|
||||||
|
|
||||||
|
**Bot**: v2.29.9 — mature, full slash command coverage
|
||||||
|
**Database API**: v2.7.0 — stable, PostgreSQL-backed
|
||||||
|
**Website**: v2.1.1 — functional, covers core league info
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Roadmap
|
||||||
|
|
||||||
|
<!-- TODO: Populate with current priorities. Categories below are suggestions. -->
|
||||||
|
|
||||||
|
### In Progress
|
||||||
|
|
||||||
|
|
||||||
|
### Near Term
|
||||||
|
|
||||||
|
|
||||||
|
### Future Considerations
|
||||||
|
|
||||||
|
- Gameplay simulation (migrated from legacy bot v1 — currently not in v2)
|
||||||
|
- Draft system (automated draft room — currently handled externally)
|
||||||
|
- Player comparison command
|
||||||
|
- Website CI/CD pipeline (currently manual build/push)
|
||||||
|
- Historical records and awards pages
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Completed
|
||||||
|
|
||||||
|
<!-- Move items here as they're finished, with dates. -->
|
||||||
Loading…
Reference in New Issue
Block a user