26 string LandingDescription,
29 string? LogoImageDataUrl,
30 bool RemoveLogoBackground,
33 string FrontFontFamily,
34 string BackFontFamily,
35 double FrontBrandFontSize,
36 double FrontTaglineFontSize,
37 double FrontCategoryFontSize,
38 double FrontEmailFontSize,
39 double BackBrandFontSize,
40 double BackTaglineFontSize,
41 double BackNameFontSize,
42 double BackRoleFontSize,
44 bool IncludePhoneInVCard,
45 bool IncludeAddressInVCard,
46 string? ImportedFrontImageDataUrl,
47 string? ImportedBackImageDataUrl)
59 Tagline:
"Modular Automation Framework",
60 BackBrand:
"Codemaru",
61 BackTagline:
"Agri-Tech & Automation Platform",
62 Category: $
"Industrial Automation{Environment.NewLine}AI · Smart Farm · Agri-Tech",
64 Role:
"Founder & CTO",
65 Email:
"togood1983@gmail.com",
66 Phone:
"+8210-XXXX-XXXX",
67 Address:
"충청남도 청양군 남양면 XXXX XX-XX 코드마루 빌딩",
68 Website:
"https://codemaru.co.kr",
69 LandingSlug:
"card/minsu",
70 AccentColor:
"#5d7f57",
72 ShortBio:
"Founder & CTO of CodeMaru",
73 LandingDescription:
"Building Dreamine, a modular automation framework for industrial automation, AI, smart farm, and agri-tech solutions.",
74 VCardNote:
"CodeMaru / Dreamine business profile",
75 InternalMemo:
"Primary public profile for personal business card landing page.",
77 LogoImageDataUrl:
null,
78 RemoveLogoBackground:
false,
81 FrontFontFamily:
"Segoe UI",
82 BackFontFamily:
"Segoe UI",
83 FrontBrandFontSize: 28,
84 FrontTaglineFontSize: 17,
85 FrontCategoryFontSize: 18,
86 FrontEmailFontSize: 14,
87 BackBrandFontSize: 22,
88 BackTaglineFontSize: 14,
91 LandingTheme:
"light",
92 IncludePhoneInVCard:
false,
93 IncludeAddressInVCard:
false,
94 ImportedFrontImageDataUrl:
null,
95 ImportedBackImageDataUrl:
null);
105 public string LandingUrl
109 var website =
string.IsNullOrWhiteSpace(Website)
110 ?
"https://dreamine.local/card"
111 : Website.Trim().TrimEnd(
'/');
113 if (
string.IsNullOrWhiteSpace(LandingSlug))
118 var slug = LandingSlug.Trim().Trim(
'/').Replace(
" ",
"-", StringComparison.Ordinal);
120 return website.EndsWith($
"/{slug}", StringComparison.OrdinalIgnoreCase)
122 : $
"{website}/{slug}";
record CardProfile(string Brand, string Tagline, string BackBrand, string BackTagline, string Category, string Name, string Role, string Email, string Phone, string Address, string Website, string LandingSlug, string AccentColor, string ShortBio, string LandingDescription, string VCardNote, string InternalMemo, string? LogoImageDataUrl, bool RemoveLogoBackground, double CardWidthMm, double CardHeightMm, string FrontFontFamily, string BackFontFamily, double FrontBrandFontSize, double FrontTaglineFontSize, double FrontCategoryFontSize, double FrontEmailFontSize, double BackBrandFontSize, double BackTaglineFontSize, double BackNameFontSize, double BackRoleFontSize, string LandingTheme, bool IncludePhoneInVCard, bool IncludeAddressInVCard, string? ImportedFrontImageDataUrl, string? ImportedBackImageDataUrl)