File size: 1,472 Bytes
7c71548
 
b39667b
 
 
 
 
 
7c71548
 
 
 
b39667b
7c71548
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b39667b
7c71548
 
 
 
 
b39667b
 
 
 
 
 
 
 
7c71548
 
 
 
 
 
 
 
 
 
 
 
 
71fdb6d
b39667b
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
from typing import List, Optional
from pydantic import BaseModel
from enum import Enum

class Category(str, Enum):
    TECHNICAL = "Technical"
    SOFT_SKILLS = "Soft Skills"
    DOMAIN_KNOWLEDGE = "Domain Knowledge"

class Skill(BaseModel):
    img: Optional[str] = None # Allow null values
    name: str
    category: Optional[Category] = None

class Project(BaseModel):
    img: Optional[str] = None
    title: str
    description: str
    techStack: Optional[str] = None
    githubUrl: Optional[str] = None
    demoUrl: Optional[str] = None

class SocialMedia(BaseModel):
    linkedin: Optional[str] = None
    github: Optional[str] = None
    instagram: Optional[str] = None

class Chatbot(BaseModel):
    token: str
    apiBaseURL: str

class Education(BaseModel):
    school: str
    degree: str
    fieldOfStudy: str
    startDate: str
    endDate: str

class Experience(BaseModel):
    company: str
    position: str
    startDate: str
    endDate: Optional[str] = None
    description: Optional[str] = None

class Profile(BaseModel):
    name: str
    title: str
    email: str
    bio: str
    tagline: Optional[str] = None # Allow null values
    social: Optional[SocialMedia] = None
    profileImg: Optional[str] = None
    heroImg: Optional[str] = None
    chatbot: Optional[Chatbot] = None
    projects: List[Project] = []
    skills: List[Skill] = []
    topSkills: List[str] = []
    educations: List[Education] = []
    experiences: List[Experience] = []