Skip to content

Users Domain

The users domain provides profile management, preferences, and addresses. It handles display names, avatars, bios, localization settings, and multi-address management.

Terminal window
npx @backcap/cli add users

A profile holds user identity, preferences, and up to 10 addresses.

import { Profile } from "./domains/users/domain/entities/profile.entity";
const profile = Profile.create({
id: crypto.randomUUID(),
userId: "user-1",
displayName: "Jane Doe",
avatar: "https://example.com/avatar.png",
bio: "Backend engineer",
locale: "en",
timezone: "Europe/Paris",
addresses: [],
});
  • DisplayName — validated user display name
  • Avatar — validated avatar URL
  • Locale — language/locale preference (e.g. "en", "fr")
  • Timezone — IANA timezone (e.g. "Europe/Paris")
  • Address — label, street, city, postal code, country, state
Use CaseDescription
CreateProfileInitialize a user profile
GetProfileRetrieve a profile by user ID
UpdateProfileModify display name, avatar, or bio
UpdatePreferencesChange locale and timezone
AddAddressAdd a shipping/contact address (max 10)
RemoveAddressRemove an address by label
  • IProfileRepositoryfindByUserId, save
import { createUsersService } from "./domains/users/contracts";
const users = createUsersService({
profileRepository: myProfileRepo,
});
await users.createProfile({
userId: "user-1",
displayName: "Jane Doe",
locale: "en",
timezone: "Europe/Paris",
});