Skip to content

Domain Model

Sigurd Evensen edited this page Apr 24, 2026 · 4 revisions

This page summarizes the domain model used in HelpMeHelp.

  • Main entities are User, Organization, and Donation.
  • Donation represents a transaction made by a user to an organization.
  • Register and database classes are shown as supporting persistence and data-loading services.

PlantUML diagram

  • Domain Model
@startuml
left to right direction
hide methods
skinparam classAttributeIconSize 0

package "HelpMeHelp Domain" {
	class User {
		+uuid: String
		+username: String
		+name: String
		+email: String
		+phone: String
		+passwordHash: String
		+profileImageUrl: String
		+country: String
	}

	class Organization {
		+name: String
		+amount: String
		+status: String
		+imageUrl: String
		+tags: String
		+description: String
		+website: String
		+bankAccountNumber: String
		+vippsNumber: String
		+createdDate: LocalDate
	}

	class Donation {
		+organization: String
		+date: String
		+amount: String
		+username: String
	}
}

class OrganizationRegister
class DonationRegister
class UserDatabase
class DonationDatabase

User "1" -- "0..*" Donation : makes
Organization "1" -- "0..*" Donation : receives

OrganizationRegister ..> Organization : loads
DonationRegister ..> Donation : stores/queries
UserDatabase ..> User : persists/authenticates
DonationDatabase ..> Donation : initializes seed data

note right of Donation
	Current implementation stores
	organization and username as text
	fields (not object references).
end note

@enduml

Relationship notes

  • A User can make zero or many donations.
  • An Organization can receive zero or many donations.
  • Donation currently stores organization and username as String values.
  • OrganizationRegister is responsible for loading organizations from the external API.
  • DonationRegister, UserDatabase, and DonationDatabase handle SQLite persistence concerns.
Clone this wiki locally