freelancer/flowboard
Boards starter for the Dodil Boards Challenge. FastAPI + DataK3 + appid + Models + MCP.
A remix template · 0 remixes · Remix freelancer/flowboard
app/boards/application/ports.py
"""Ports describing the services required by the application layer."""
from typing import Optional, Protocol
from boards.domain.model import Board, Card
class BoardRepository(Protocol):
"""Persistence operations required by board use cases."""
def get(self, board_id: str) -> Optional[Board]: ...
def boards_for(self, email: str) -> list: ...
def save_board(self, board: Board) -> None: ...
def get_card(self, card_id: str) -> Optional[Card]: ...
def cards_on(self, board_id: str) -> list: ...
def save_card(self, card: Card) -> None: ...
def log(
self,
board_id: str,
card_id: Optional[str],
actor: str,
action: str,
) -> None: ...
def activity_for(
self,
board_id: str,
limit: int = 100,
) -> list[dict]: ...
class Assistant(Protocol):
"""AI capabilities available to application use cases."""
def checklist(self, card_title: str) -> list: ...