def create_board_aggregate(board):
    """
    Creates a more convenient board aggregate wrapper around a Board model.

    Parameters:
        board (board.models.Board): The base Board model which will be wrapped.

    Returns:
        A dict with the following shape:
        {
            id: [boardId],
            name: [boardName],
            sections: [
                {
                    id: [firstSectionId],
                    name: [firstSectionName],
                    tasks: [
                        {
                            id: [firstTaskId],
                            text: [firstTaskText]
                        }
                    ]
                }
            ]
        }
    """

    data = {
        'id': board.id,
        'name': board.name,
        }

    # Build sectionList
    sectionList = []
    for section in board.section_set.all():
        # Build taskList
        taskList = []
        for task in section.task_set.all():
            # Each task is a dict { id: int, text: str }
            taskList.append({ 'id': task.id, 'text': task.text, })

        # Build current section entry and add it to sectionList
        sectionEntry = {
            'id': section.id,
            'name': section.name,
            'tasks': taskList,
        }
            
        sectionList.append(sectionEntry)

    data['sections'] = sectionList

    return data