dodil/boards-challenge

Dodil Boards Challenge: build the Trello replacement on Dodil. Instructions for you and your AI assistant.

A remix template · 18 remixes · Remix dodil/boards-challenge

README.md

Dodil Boards Challenge

Build the Trello replacement on Dodil: a team task board anyone can remix into their own Dodil organization and have running in minutes.

Prize: $100 to the winner, plus a paid follow-up project. The winning board becomes the official Dodil template, credited to its builder. Contest: https://www.freelancer.com/contest/contest-build-the-trello-replacement-on-dodil-run-it-from-claude-chatgpt-2799133

All the rules and steps: DODIL-BOARDS-CHALLENGE.md. Give that file to your AI assistant: "Read DODIL-BOARDS-CHALLENGE.md and help me build this, step by step."

This repo is also the starter

It is a small, working, remixable app: sign-in, data, AI and MCP already wired. Your job is to turn it into a great board. Remix it into your own organization:

dodil update                                   # CLI 0.1.89 or later
dodil git remix dodil/boards-challenge --to-org <your-org> --name <your-repo>

The remix creates, in your org: the repo, a DataK3 bucket <repo>-data with the tables from schema.sql, a user pool <repo>-users, and a service account with access to the bucket and to Dodil Models. Then CI tests, builds and deploys it. Keep <your-repo> to 18 characters or less.

After the remix, one step lets people sign in (until the platform does it for you): add the app's callback URL to the pool. Run dodil guide remix and follow "After the remix: let people sign in".

What's inside

app/boards/
  domain/model.py            Board, Card, Role and the rules (a viewer can't edit,
                             only the owner manages members, lists are fixed)
  application/use_cases.py   every action: create_board, add_card, move_card,
                             add_member, show_board, suggest_checklist (AI)
  application/ports.py       what the use cases need (repository, AI assistant)
  infrastructure/dodil.py    service-account token, DataK3 connection, Dodil Models
  infrastructure/repository.py  boards, cards, members, activity in DataK3 tables
  doors/web.py               JSON routes + a tiny page   -> call the use cases
  doors/mcp.py               MCP tools for Claude/ChatGPT -> call the same use cases
  doors/identity.py          who is calling (the gateway's X-Dodil-User header)
  main.py                    wires it together, /mcp, sign-in metadata, /healthz
tests/test_boards.py         the rules, through the use cases and both doors
schema.sql                   the tables, created by the remix
.dodil/remix.yaml            what a remix creates
.dodil/deploy.yaml           how CI deploys every copy
.github/workflows/ci.yml     test -> build -> (deploy by Dodil Git CD)

Run it locally

cd app
python -m venv .venv && . .venv/bin/activate
pip install -r requirements.txt pytest
python -m pytest -q ../tests            # no Dodil account needed: fakes for data and AI

To run the server against your remixed bucket, set BUCKET, DODIL_SERVICE_ACCOUNT_ID, DODIL_SERVICE_ACCOUNT_SECRET and DEV_USER=you@example.com (acts as that person without the gateway; local only), then uvicorn boards.main:app --port 8080.

Connect Claude

The app serves MCP at https://<your-app-host>/mcp. Add it as a custom connector in Claude (or ChatGPT): it asks you to sign in through your pool, then approve the client once with dodil appid client list <repo>-users and dodil appid client approve <repo>-users <client-id>.

Licence

MIT. See LICENSE.