-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathresume.py
More file actions
126 lines (107 loc) · 3.99 KB
/
resume.py
File metadata and controls
126 lines (107 loc) · 3.99 KB
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
from dataclasses import dataclass
from typing import List
import argparse
@dataclass
class Summary:
description: str
@dataclass
class ContactInfo:
name: str
email: str
phone: str
linkedin: str
github: str
@dataclass
class Project:
title: str
description: str
@dataclass
class SkillSection:
title: str
skills: List[str]
class Resume:
def __init__(self):
self.summary = None
self.contact = None
self.projects = []
self.skills = []
def set_contact(self, name, email, phone, linkedin, github):
self.contact = ContactInfo(name, email, phone, linkedin, github)
def set_summary(self, description):
self.summary = Summary(description)
def add_project(self, title, description):
self.projects.append(Project(title, description))
def add_skills(self, title, skills):
self.skills.append(SkillSection(title, skills))
def render(self):
html = f"""<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>{self.contact.name}'s Resume</title>
<style>
body {{ font-family: Arial, sans-serif; padding: 20px; }}
h1, h2 {{ color: #2c3e50; }}
.section {{ margin-bottom: 30px; }}
ul {{ padding-left: 20px; }}
</style>
</head>
<body>
<h1>{self.contact.name}</h1>
<p>Email: {self.contact.email} | Phone: {self.contact.phone}</p>
<p>LinkedIn: <a href="{self.contact.linkedin}">{self.contact.linkedin}</a> | GitHub: <a href="{self.contact.github}">{self.contact.github}</a></p>
<div class="section">
<h2>Summary</h2>
<p>{self.summary.description}</p>
</div>
<div class="section">
<h2>Projects</h2>
<ul>
"""
for p in self.projects:
html += f"<li><strong>{p.title}</strong>: {p.description}</li>\n"
html += """
</ul>
</div>
<div class="section">
<h2>Skills</h2>
"""
for s in self.skills:
html += f"<h3>{s.title}</h3><ul>\n"
for sk in s.skills:
html += f"<li>{sk}</li>\n"
html += "</ul>\n"
html += """
</div>
</body>
</html>
"""
return html
def save(self, output_file):
with open(output_file, 'w', encoding='utf-8') as f:
f.write(self.render())
def main():
parser = argparse.ArgumentParser(description="Generate an HTML resume.")
parser.add_argument("--output", type=str, default="resume.html", help="Output HTML file name")
args = parser.parse_args()
r = Resume()
r.set_contact(
name="Laksha Karimuthu",
email="laksha@example.com",
phone="+91-9876543210",
linkedin="https://www.linkedin.com/in/laksha-karimuthu-3a815a299?utm_source=share&utm_campaign=share_via&utm_content=profile&utm_medium=android_app",
github="https://github.com/Laksha-python"
)
r.set_summary("Passionate and driven software engineer skilled in full-stack development, Python projects, and AI/ML applications. Strong focus on solving real-world problems through technology.")
r.add_project("Reef Rescuers", "A Pygame-based interactive 2D coral reef conservation game with real-time gameplay, multiple coral types, and educational elements.")
r.add_project("CVWizard", "A CLI-based Python tool to generate clean resumes in text and HTML formats.")
r.add_project("AI Face Detector", "AI-vs-Human face detection model integrated with real-time webcam and screen capture.")
r.add_project("Climate Dashboard", "Web dashboard visualizing CO2, temperature, sea level data using Python and Plotly.")
r.add_skills("Programming", ["Python", "Java", "JavaScript", "HTML/CSS"])
r.add_skills("Frameworks & Tools", ["Pygame", "JavaFX", "MongoDB", "Ursina Engine"])
r.add_skills("AI/ML", ["Scikit-learn", "Face Detection", "Model Fine-tuning"])
r.add_skills("Soft Skills", ["Problem Solving", "Team Collaboration", "Creative Thinking"])
r.save(args.output)
print(f"Resume saved to {args.output}")
if __name__ == "__main__":
main()