@startuml
package presentation{
    class Controller
    class Form
}

package usecase{
    class Service
    class Dto
}

package domain {
    package auth {
        note "認証ドメイン" as auth
        class TodoUser
    }
    package todo {
        note "タスクドメイン" as todo
        class Todo
    }
    interface Repository
}

package infrastructure{
    class RepositoryImpl
    interface Mapper
    class Entity
}

presentation --> usecase
usecase --> domain
domain <-- infrastructure

Controller -> Form
Controller --> Service
Controller --> Dto
Service --> Todo
Service --> Repository
Repository <|.. RepositoryImpl
RepositoryImpl --> Mapper
RepositoryImpl -> Entity


@enduml
