@startuml Marketing-Project Class Diagram
class User {
    name: string
    email: string
    testedInterests: [Interest]
    starredInterests: [Interest]
    projects: [Project]
    constructor(name: string, email: string)
    createInterest(name: string)
    testInterest(interest: Interest)
    starInterest(interest: Interest)
}

class Interest {
    name: string
    tested: boolean
    starred: boolean
    totalSpent: number
    testedAt: Date
    constructor(name: string)
}

class Project {
    name: string
    startDate: Date
    endDate: Date
    notes: string
    interests: [Interest]
    constructor(name: string, notes: string)
    addInterest(interest: Interest)
    removeInterest(interest: Interest)
}

class SignUp {
    signUp(name: string, email: string, password: string) : User
}

class Login {
    name: string
    email: string
    password: string
    login(name: string, email: string, password: string)
}

class spendManager {}

SignUp --> User
Login --> User

User "1" *--> "0..*" Interest : tests, stars
User "1" *--> "0..*" Project : creates, has
Project o--> "0..*" Interest : contains

@enduml