Skip to content

Commit 5f97fa1

Browse files
author
Ruben Kharel
committed
Resume complete
1 parent 7f0f230 commit 5f97fa1

File tree

4 files changed

+38
-76
lines changed

4 files changed

+38
-76
lines changed

src/_data/projects.toml

-6
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,19 @@
11
[[project]]
22
name = "eReKon"
3-
role = "Developer, Open-Source Contributor"
4-
duration = "2021 — Present"
53
url = "https://github.com/rukh-debug/erekon"
64
description = """
75
eReKon is a web recon tool that helps search and scan information related to a website or domain. It mines domain info, gathers subdomains, scrapes and indexes public information, finds website technologies, and retrieves DNS and WHOIS information. In a nutshell, it is a single solution to quickly identify public information, find hidden targets, and monitor changes.
86
"""
97

108
[[project]]
119
name = "talking-pdf"
12-
role = "React Dev, Open-Source Contributor"
13-
duration = "2023 — Present"
1410
url = "https://rubenk.dev/talking-pdf"
1511
description = """
1612
A simple web app that takes PDF as input and lets you interact with it through a chat interface. It is built using React, Next.js, and SCSS. Powered by OpenAI's GPT-3 API.
1713
"""
1814

1915
[[project]]
2016
name = "vstatus"
21-
role = "Developer"
22-
duration = "2023 — Present"
2317
url = "https://github.com/rukh-debug/vstatus"
2418
description = """
2519
vstatus is a Visual Studio Code extension that tracks your workspace and file durations, generates insightful activity visualizations, and provides a live status image via an HTTP server. Initially intended to be used for a GitHub readme page.

src/custom_widgets.rs

+8-1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,13 @@ pub fn separator_size(ui: &mut egui::Ui, large: bool) {
4343
}
4444
}
4545

46+
pub fn resume_section_seperator(ui: &mut egui::Ui, title: &str) {
47+
ui.add_space(10.0);
48+
ui.separator();
49+
ui.monospace(title);
50+
ui.separator();
51+
}
52+
4653
pub fn wrapped_label(ui: &mut egui::Ui, text: &str) {
4754
ui.add(egui::Label::new(text).wrap(true));
48-
}
55+
}

src/pages/resume.rs

+28-53
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ mod interests;
1717
pub use self::links::Links;
1818
mod links;
1919

20-
pub use crate::custom_widgets::{footer, powered_by_egui_and_eframe, wrapped_label};
20+
pub use crate::custom_widgets::{footer, powered_by_egui_and_eframe, wrapped_label, resume_section_seperator};
2121

2222
#[derive(Debug, serde::Deserialize, serde::Serialize)]
2323
struct Resume {
@@ -186,7 +186,6 @@ impl eframe::App for ResumePage {
186186
.show(ctx, |ui| {
187187
egui::ScrollArea::vertical().show(ui, |ui| {
188188
make_header(ui, &mut self.resume);
189-
190189
if self.resume.sections.skills {
191190
make_skills(ui, &mut self.resume);
192191
}
@@ -196,14 +195,12 @@ impl eframe::App for ResumePage {
196195
if self.resume.sections.recognition {
197196
make_recognition(ui, &mut self.resume);
198197
}
199-
200198
if self.resume.sections.education {
201199
make_education(ui, &mut self.resume)
202200
}
203201
if self.resume.sections.projects {
204202
make_projects(ui, &mut self.resume);
205203
}
206-
207204
if self.resume.sections.interests {
208205
make_interests(ui, &mut self.resume);
209206
}
@@ -244,10 +241,7 @@ fn make_header(ui: &mut Ui, resume: &mut Resume) {
244241
}
245242

246243
fn make_skills(ui: &mut Ui, resume: &mut Resume) {
247-
ui.add_space(20.0);
248-
ui.separator();
249-
ui.monospace("Skills");
250-
ui.separator();
244+
resume_section_seperator(ui, "Skills");
251245

252246
ui.label(format!("{}", resume.skills.name));
253247
ui.label(format!("{}", resume.skills.description));
@@ -289,22 +283,19 @@ fn make_skills(ui: &mut Ui, resume: &mut Resume) {
289283
}
290284

291285
fn make_experience(ui: &mut Ui, resume: &mut Resume, ctx: &egui::Context) {
292-
ui.add_space(20.0);
293-
ui.separator();
294-
ui.monospace("Experience");
295-
ui.separator();
286+
resume_section_seperator(ui, "Experience");
296287

297288
for experience in &resume.experience.experiences {
298289
install_image_loaders(ctx);
299-
290+
ui.add_space(10.0);
300291
ui.horizontal(|ui| {
301292
let image = format!("{}", experience.logo); // image url should be provided
302293
ui.image(image);
303294
ui.monospace(&experience.company);
304295
ui.separator();
305296
ui.label(&experience.url);
306297
});
307-
ui.add_space(10.0);
298+
ui.add_space(5.0);
308299
for role in &experience.roles {
309300
ui.monospace(&role.title);
310301
ui.horizontal(|ui| {
@@ -316,20 +307,15 @@ fn make_experience(ui: &mut Ui, resume: &mut Resume, ctx: &egui::Context) {
316307
for highlight in &role.highlights {
317308
wrapped_label(ui, &highlight)
318309
}
319-
ui.add_space(5.0);
320-
}
321-
// if this is the last iteration dont show the separator
322-
if !std::ptr::eq(experience, resume.experience.experiences.last().unwrap()) {
323-
ui.separator();
310+
ui.add_space(8.0);
324311
}
325312
}
326313
}
327314

328315
fn make_recognition(ui: &mut Ui, resume: &mut Resume) {
329-
ui.add_space(20.0);
330-
ui.separator();
331-
ui.monospace("Recognition");
332-
ui.separator();
316+
resume_section_seperator(ui, "Recognition");
317+
318+
ui.add_space(10.0);
333319
let stroke: egui::Stroke = egui::Stroke::new(1.0, egui::Color32::from_rgb(128, 128, 128));
334320

335321
egui::ScrollArea::horizontal()
@@ -370,12 +356,10 @@ fn make_recognition(ui: &mut Ui, resume: &mut Resume) {
370356
}
371357

372358
fn make_education(ui: &mut Ui, resume: &mut Resume) {
373-
ui.add_space(20.0);
374-
ui.separator();
375-
ui.monospace("Education");
376-
ui.separator();
359+
resume_section_seperator(ui, "Education");
377360

378361
for education in &resume.education.educations {
362+
ui.add_space(10.0);
379363
ui.monospace(format!("{}", education.degree));
380364
ui.horizontal(|ui| {
381365
ui.label(format!("{}", education.uni));
@@ -384,46 +368,37 @@ fn make_education(ui: &mut Ui, resume: &mut Resume) {
384368
});
385369
ui.spacing();
386370
ui.label(format!("{}", education.summary));
387-
// if this is the last iteration dont show the separator
388-
if !std::ptr::eq(education, resume.education.educations.last().unwrap()) {
389-
ui.separator();
390-
}
391371
}
392372
}
393373

394374
fn make_projects(ui: &mut Ui, resume: &mut Resume) {
375+
resume_section_seperator(ui, "Projects");
376+
395377
for project in &resume.projects.projects {
396378
ui.monospace(format!("{}", project.name));
397-
ui.horizontal(|ui| {
398-
ui.label(format!("{}", project.role));
399-
ui.separator();
400-
ui.label(format!("{}", project.duration));
401-
});
402-
ui.spacing();
403-
ui.label(format!("{}", project.description));
404-
// if this is the last iteration dont show the separator
405-
if !std::ptr::eq(project, resume.projects.projects.last().unwrap()) {
406-
ui.separator();
407-
}
379+
wrapped_label(ui, &project.description);
408380
}
409381
}
410382

411383
fn make_interests(ui: &mut Ui, resume: &mut Resume) {
384+
resume_section_seperator(ui, "Other Interest");
385+
412386
for interest in &resume.interests.interests {
413-
ui.label(format!("{}", interest.description));
414-
// if this is the last iteration dont show the separator
415-
if !std::ptr::eq(interest, resume.interests.interests.last().unwrap()) {
416-
ui.separator();
417-
}
387+
// ui.label(format!("{}", interest.description));
388+
wrapped_label(ui, &interest.description)
418389
}
419390
}
420391

421392
fn make_links(ui: &mut Ui, resume: &mut Resume) {
422-
for link in &resume.links.links {
423-
ui.hyperlink_to(link.name.clone(), link.url.clone());
424-
// if this is the last iteration dont show the separator
425-
if !std::ptr::eq(link, resume.links.links.last().unwrap()) {
426-
ui.separator();
393+
resume_section_seperator(ui, "Links");
394+
395+
ui.horizontal(|ui| {
396+
for link in &resume.links.links {
397+
ui.hyperlink_to(&link.name, &link.url);
398+
// if this is the last iteration dont show the separator
399+
if !std::ptr::eq(link, resume.links.links.last().unwrap()) {
400+
ui.separator();
401+
}
427402
}
428-
}
403+
});
429404
}

src/pages/resume/projects.rs

+2-16
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,14 @@ pub struct Projects {
66
#[derive(Debug, serde::Deserialize, serde::Serialize)]
77
pub struct Project {
88
pub name: String,
9-
pub role: String,
10-
pub duration: String,
119
pub url: String,
1210
pub description: String,
1311
}
1412

1513
impl Project {
16-
fn new(name: String, role: String, duration: String, url: String, description: String) -> Self {
14+
fn new(name: String, url: String, description: String) -> Self {
1715
Project {
1816
name,
19-
role,
20-
duration,
2117
url,
2218
description,
2319
}
@@ -39,16 +35,6 @@ impl Default for Projects {
3935
.and_then(|s| s.as_str())
4036
.unwrap_or("")
4137
.to_string();
42-
let role = x
43-
.get("role")
44-
.and_then(|s| s.as_str())
45-
.unwrap_or("")
46-
.to_string();
47-
let duration = x
48-
.get("duration")
49-
.and_then(|s| s.as_str())
50-
.unwrap_or("")
51-
.to_string();
5238
let url = x
5339
.get("url")
5440
.and_then(|s| s.as_str())
@@ -60,7 +46,7 @@ impl Default for Projects {
6046
.unwrap_or("")
6147
.to_string();
6248

63-
Project::new(name, role, duration, url, description)
49+
Project::new(name, url, description)
6450
})
6551
.collect();
6652

0 commit comments

Comments
 (0)