User & Profile Types
User (Auth + Account)
Section titled “User (Auth + Account)”File: src/lib/types/user.ts
interface User { id: string; displayName?: string; email: string; emailVerified?: boolean; isAnonymous?: boolean; userName?: string; photoURL?: string;
// Location & Preferences location?: string; language?: string; timeZone?: string;
// Platform Status registrationApproved?: boolean; // Private beta gate onboardingCompleted?: boolean; plan?: string; disabledAds?: boolean;
// Profile Images avatarUrl?: string; bannerUrl?: string; avatarScale?: number; bannerScale?: number; avatarPosition?: { x: number; y: number }; bannerPosition?: { x: number; y: number };
// Personal birthDate?: Timestamp | string;
// Referrals referralCode?: string; referralCount?: number; referralEarnings?: number; referralShareStats?: ReferralShareStats;
// Timestamps createdAt: Date; updatedAt: Date; lastActiveAt: Date;}Profile
Section titled “Profile”File: src/lib/modules/profile/types/profile.ts
interface Profile { id: string; displayName: string; userName: string; email: string; aboutMe?: string; tagline?: string; avatarUrl?: string; bannerUrl?: string; location?: string; language?: string; timeZone?: string;
// Module toggles modules: { workExperience: boolean; education: boolean; skills: boolean; projects: boolean; testimonials: boolean; certifications: boolean; socialLinks: boolean; ctas: boolean; };
// Stats stats: { followers: number; following: number; views: number; reviews: number; rating: number; };}Profile Section Types
Section titled “Profile Section Types”interface ProfileWorkExperience { id: string; title: string; company: string; employmentType: string; startDate: Timestamp; endDate?: Timestamp; isCurrent: boolean; skills: string[]; achievements: string[]; description?: string;}
interface ProfileEducation { id: string; degree: string; institution: string; startDate: Timestamp; endDate?: Timestamp; skills: string[]; logo?: string;}
interface ProfileSkill { id: string; name: string; level: 'beginner' | 'intermediate' | 'advanced' | 'expert'; category: string; position: number;}
interface ProfileProject { id: string; name: string; description: string; media: MediaItem[]; startDate: Timestamp; endDate?: Timestamp; skills: string[]; position: number;}
interface ProfileTestimonial { id: string; authorName: string; company?: string; content: string; avatarUrl?: string; position: number;}
interface ProfileCertification { id: string; name: string; issuer: string; issueDate: Timestamp; expirationDate?: Timestamp; credentialId?: string; credentialUrl?: string;}
interface ProfileCTA { id: string; type: 'hire' | 'contact' | 'schedule' | 'download' | 'custom'; label: string; url: string; position: number;}
interface ProfileSocialLink { id: string; platform: string; username: string; url: string; position: number;}Follow
Section titled “Follow”File: src/lib/modules/profile/types/follow.ts
interface Follow { followerId: string; followingId: string; createdAt: Timestamp;}Referral Types
Section titled “Referral Types”File: src/lib/modules/refer-and-earn/types/referral.ts
interface ReferralCode { code: string; userId: string; isActive: boolean; usageCount: number; maxUsage: number | null; expiresAt?: Timestamp; customUrl?: string;}
interface Referral { referrerId: string; refereeId: string; status: 'pending' | 'completed' | 'expired' | 'cancelled'; source: 'email' | 'social' | 'direct' | 'sms' | 'affiliate' | 'qr_code'; conversionEvent: string; rewards: { referrer: Reward; referee: Reward };}
interface ReferralShareStats { totalShares: number; totalClicks: number; totalCopies: number; sharesByType: Record<ReferralShareType, number>;}Notification Types
Section titled “Notification Types”File: src/lib/types/notifications.ts
interface AppNotification { id: string; title: string; typeNotification: string; description: string; createdBy: string; createdAt: Timestamp; link?: string; extrainfo?: string; mentions: string[]; unreadBy: string[]; itemId: string;}Storage Types
Section titled “Storage Types”File: src/lib/types/storage.ts
interface Storage { id: string; userId: string; totalSpace: number; usedSpace: number;}
interface FileStorage { id: string; path: string; name: string; size: number; type: string; url: string; createdAt: Timestamp;}