mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2026-07-14 06:47:00 +10:00
lot of bugfixes, better migration script
This commit is contained in:
+22
-76
@@ -8,11 +8,7 @@ export const iconSchema = z
|
||||
);
|
||||
|
||||
export const urlSchema = z.object({
|
||||
url: z
|
||||
.string()
|
||||
.describe(
|
||||
"The URL to show as a link. Must be a valid URL with a protocol (http:// or https://). Leave blank to hide.",
|
||||
),
|
||||
url: z.string().describe("The URL to show as a link. Must be a valid URL with a protocol (http:// or https://)."),
|
||||
label: z.string().describe("The label to display for the URL. Leave blank to display the URL as-is."),
|
||||
});
|
||||
|
||||
@@ -21,7 +17,7 @@ export const pictureSchema = z.object({
|
||||
url: z
|
||||
.string()
|
||||
.describe(
|
||||
"The URL to the picture to display on the resume. Must be a valid URL with a protocol (http:// or https://). Leave blank to hide.",
|
||||
"The URL to the picture to display on the resume. Must be a valid URL with a protocol (http:// or https://).",
|
||||
),
|
||||
size: z
|
||||
.number()
|
||||
@@ -65,18 +61,14 @@ export const customFieldSchema = z.object({
|
||||
id: z.string().describe("The unique identifier for the custom field. Usually generated as a UUID."),
|
||||
icon: iconSchema,
|
||||
text: z.string().describe("The text to display for the custom field."),
|
||||
link: z
|
||||
.url()
|
||||
.or(z.literal(""))
|
||||
.describe("If the custom field should be a link, the URL to link to. Leave blank to hide.")
|
||||
.catch(""),
|
||||
link: z.url().or(z.literal("")).describe("If the custom field should be a link, the URL to link to.").catch(""),
|
||||
});
|
||||
|
||||
export const basicsSchema = z.object({
|
||||
name: z.string().describe("The full name of the author of the resume."),
|
||||
headline: z.string().describe("The headline of the author of the resume."),
|
||||
email: z.email().or(z.literal("")).describe("The email address of the author of the resume. Leave blank to hide."),
|
||||
phone: z.string().describe("The phone number of the author of the resume. Leave blank to hide."),
|
||||
email: z.email().or(z.literal("")).describe("The email address of the author of the resume."),
|
||||
phone: z.string().describe("The phone number of the author of the resume."),
|
||||
location: z.string().describe("The location of the author of the resume."),
|
||||
website: urlSchema.describe("The website of the author of the resume."),
|
||||
customFields: z.array(customFieldSchema).describe("The custom fields to display on the resume."),
|
||||
@@ -86,9 +78,7 @@ export const summarySchema = z.object({
|
||||
title: z.string().describe("The title of the summary of the resume."),
|
||||
columns: z.number().describe("The number of columns the summary should span across."),
|
||||
hidden: z.boolean().describe("Whether to hide the summary from the resume."),
|
||||
content: z
|
||||
.string()
|
||||
.describe("The content of the summary of the resume. This should be a HTML-formatted string. Leave blank to hide."),
|
||||
content: z.string().describe("The content of the summary of the resume. This should be a HTML-formatted string."),
|
||||
});
|
||||
|
||||
export const baseItemSchema = z.object({
|
||||
@@ -101,9 +91,7 @@ export const awardItemSchema = baseItemSchema.extend({
|
||||
awarder: z.string().describe("The awarder of the award."),
|
||||
date: z.string().describe("The date when the award was received."),
|
||||
website: urlSchema.describe("The website of the award, if any."),
|
||||
description: z
|
||||
.string()
|
||||
.describe("The description of the award. This should be a HTML-formatted string. Leave blank to hide."),
|
||||
description: z.string().describe("The description of the award. This should be a HTML-formatted string."),
|
||||
});
|
||||
|
||||
export const certificationItemSchema = baseItemSchema.extend({
|
||||
@@ -111,9 +99,7 @@ export const certificationItemSchema = baseItemSchema.extend({
|
||||
issuer: z.string().describe("The issuer of the certification."),
|
||||
date: z.string().describe("The date when the certification was received."),
|
||||
website: urlSchema.describe("The website of the certification, if any."),
|
||||
description: z
|
||||
.string()
|
||||
.describe("The description of the certification. This should be a HTML-formatted string. Leave blank to hide."),
|
||||
description: z.string().describe("The description of the certification. This should be a HTML-formatted string."),
|
||||
});
|
||||
|
||||
export const educationItemSchema = baseItemSchema.extend({
|
||||
@@ -124,9 +110,7 @@ export const educationItemSchema = baseItemSchema.extend({
|
||||
location: z.string().describe("The location of the school or institution."),
|
||||
period: z.string().describe("The period of time the education was obtained over."),
|
||||
website: urlSchema.describe("The website of the school or institution, if any."),
|
||||
description: z
|
||||
.string()
|
||||
.describe("The description of the education. This should be a HTML-formatted string. Leave blank to hide."),
|
||||
description: z.string().describe("The description of the education. This should be a HTML-formatted string."),
|
||||
});
|
||||
|
||||
export const experienceItemSchema = baseItemSchema.extend({
|
||||
@@ -135,9 +119,7 @@ export const experienceItemSchema = baseItemSchema.extend({
|
||||
location: z.string().describe("The location of the company or organization."),
|
||||
period: z.string().describe("The period of time the author was employed at the company or organization."),
|
||||
website: urlSchema.describe("The website of the company or organization, if any."),
|
||||
description: z
|
||||
.string()
|
||||
.describe("The description of the experience. This should be a HTML-formatted string. Leave blank to hide."),
|
||||
description: z.string().describe("The description of the experience. This should be a HTML-formatted string."),
|
||||
});
|
||||
|
||||
export const interestItemSchema = baseItemSchema.extend({
|
||||
@@ -177,9 +159,7 @@ export const projectItemSchema = baseItemSchema.extend({
|
||||
name: z.string().min(1).describe("The name of the project."),
|
||||
period: z.string().describe("The period of time the project was worked on."),
|
||||
website: urlSchema.describe("The link to the project, if any."),
|
||||
description: z
|
||||
.string()
|
||||
.describe("The description of the project. This should be a HTML-formatted string. Leave blank to hide."),
|
||||
description: z.string().describe("The description of the project. This should be a HTML-formatted string."),
|
||||
});
|
||||
|
||||
export const publicationItemSchema = baseItemSchema.extend({
|
||||
@@ -187,17 +167,18 @@ export const publicationItemSchema = baseItemSchema.extend({
|
||||
publisher: z.string().describe("The publisher of the publication."),
|
||||
date: z.string().describe("The date when the publication was published."),
|
||||
website: urlSchema.describe("The link to the publication, if any."),
|
||||
description: z
|
||||
.string()
|
||||
.describe("The description of the publication. This should be a HTML-formatted string. Leave blank to hide."),
|
||||
description: z.string().describe("The description of the publication. This should be a HTML-formatted string."),
|
||||
});
|
||||
|
||||
export const referenceItemSchema = baseItemSchema.extend({
|
||||
name: z.string().min(1).describe("The name of the reference, or a note such as 'Available upon request'."),
|
||||
position: z.string().describe("The position or job title of the reference."),
|
||||
website: urlSchema.describe("The website or LinkedIn profile of the reference, if any."),
|
||||
phone: z.string().describe("The phone number of the reference."),
|
||||
description: z
|
||||
.string()
|
||||
.describe(
|
||||
"The description of the reference. Can be used to display a quote, a testimonial, etc. This should be a HTML-formatted string. Leave blank to hide.",
|
||||
"The description of the reference. Can be used to display a quote, a testimonial, etc. This should be a HTML-formatted string.",
|
||||
),
|
||||
});
|
||||
|
||||
@@ -230,9 +211,7 @@ export const volunteerItemSchema = baseItemSchema.extend({
|
||||
website: urlSchema.describe("The link to the organization or company, if any."),
|
||||
description: z
|
||||
.string()
|
||||
.describe(
|
||||
"The description of the volunteer experience. This should be a HTML-formatted string. Leave blank to hide.",
|
||||
),
|
||||
.describe("The description of the volunteer experience. This should be a HTML-formatted string."),
|
||||
});
|
||||
|
||||
export const baseSectionSchema = z.object({
|
||||
@@ -842,7 +821,7 @@ export const sampleResumeData: ResumeData = {
|
||||
},
|
||||
skills: {
|
||||
title: "Technical Skills",
|
||||
columns: 2,
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
items: [
|
||||
{
|
||||
@@ -899,42 +878,6 @@ export const sampleResumeData: ResumeData = {
|
||||
level: 4,
|
||||
keywords: ["Profiling", "Memory Management", "Frame Rate"],
|
||||
},
|
||||
{
|
||||
id: "skill7",
|
||||
hidden: false,
|
||||
icon: "git-branch",
|
||||
name: "Version Control",
|
||||
proficiency: "Advanced",
|
||||
level: 5,
|
||||
keywords: ["Git", "Perforce", "Plastic SCM"],
|
||||
},
|
||||
{
|
||||
id: "skill8",
|
||||
hidden: false,
|
||||
icon: "devices",
|
||||
name: "Platform Development",
|
||||
proficiency: "Advanced",
|
||||
level: 4,
|
||||
keywords: ["PC", "Console (PS5/Xbox)", "Mobile", "Switch"],
|
||||
},
|
||||
{
|
||||
id: "skill9",
|
||||
hidden: false,
|
||||
icon: "network",
|
||||
name: "Multiplayer/Networking",
|
||||
proficiency: "Intermediate",
|
||||
level: 3,
|
||||
keywords: ["Photon", "Mirror", "Client-Server", "P2P"],
|
||||
},
|
||||
{
|
||||
id: "skill10",
|
||||
hidden: false,
|
||||
icon: "palette",
|
||||
name: "Shaders & VFX",
|
||||
proficiency: "Intermediate",
|
||||
level: 3,
|
||||
keywords: ["Shader Graph", "HLSL", "Particle Systems"],
|
||||
},
|
||||
],
|
||||
},
|
||||
languages: {
|
||||
@@ -960,7 +903,7 @@ export const sampleResumeData: ResumeData = {
|
||||
},
|
||||
interests: {
|
||||
title: "Interests",
|
||||
columns: 2,
|
||||
columns: 1,
|
||||
hidden: false,
|
||||
items: [
|
||||
{
|
||||
@@ -1132,6 +1075,9 @@ export const sampleResumeData: ResumeData = {
|
||||
id: "ref1",
|
||||
hidden: false,
|
||||
name: "Available upon request",
|
||||
position: "",
|
||||
website: { url: "", label: "" },
|
||||
phone: "",
|
||||
description: "",
|
||||
},
|
||||
],
|
||||
|
||||
@@ -1,303 +0,0 @@
|
||||
{
|
||||
"$schema": "https://rxresu.me/schema.json",
|
||||
"version": "5.0.0",
|
||||
"picture": {
|
||||
"hidden": true,
|
||||
"url": "",
|
||||
"size": 100,
|
||||
"rotation": 0,
|
||||
"aspectRatio": 1,
|
||||
"borderRadius": 0,
|
||||
"borderColor": "rgba(0, 0, 0, 0.5)",
|
||||
"borderWidth": 0,
|
||||
"shadowColor": "rgba(0, 0, 0, 0.5)",
|
||||
"shadowWidth": 0
|
||||
},
|
||||
"basics": {
|
||||
"name": "Erica Engineer, E.I.T.",
|
||||
"headline": "Environmental Engineering",
|
||||
"email": "EricaE@uofga.edu",
|
||||
"phone": "555-555-5555",
|
||||
"location": "",
|
||||
"website": {
|
||||
"url": "https://issuu.com/eengineersample",
|
||||
"label": "issuu.com/eengineersample"
|
||||
},
|
||||
"customFields": []
|
||||
},
|
||||
"summary": {
|
||||
"title": "Summary of Qualifications",
|
||||
"columns": 1,
|
||||
"hidden": false,
|
||||
"content": "<ul><li>Experienced in designing solutions that require integration of environmental and human health constraints compatible with economic growth and sustainable development</li><li>Skilled in a variety of modeling and drafting software, including AutoCAD and ALGOR</li><li>Efficient at utilizing project management and teamwork skills to promote overarching goals</li></ul>"
|
||||
},
|
||||
"sections": {
|
||||
"profiles": {
|
||||
"title": "Profiles",
|
||||
"columns": 3,
|
||||
"hidden": true,
|
||||
"items": []
|
||||
},
|
||||
"experience": {
|
||||
"title": "Relevant Work Experience",
|
||||
"columns": 1,
|
||||
"hidden": false,
|
||||
"items": [
|
||||
{
|
||||
"id": "a0eae67b-7e5a-4ebf-bbef-fd48ee27ffd1",
|
||||
"hidden": false,
|
||||
"company": "ABC Pollution Control",
|
||||
"position": "Environmental Engineering Intern",
|
||||
"location": "Miami, FL",
|
||||
"period": "June 2022 – August 2022",
|
||||
"website": {
|
||||
"url": "",
|
||||
"label": ""
|
||||
},
|
||||
"description": "<ul><li>Develop 3-5 bullet points using the following formula: 1 bullet point = task + skill + quantity + result/purpose</li><li>Make sure that your most recent experience is at the top of each section, working backwards from there</li></ul>"
|
||||
},
|
||||
{
|
||||
"id": "4114031b-ebd2-4d6f-8e47-5b1675f59d10",
|
||||
"hidden": false,
|
||||
"company": "Golob & Legion Engineers",
|
||||
"position": "Intern",
|
||||
"location": "Athens, GA",
|
||||
"period": "May 2021 – August 2021",
|
||||
"website": {
|
||||
"url": "",
|
||||
"label": ""
|
||||
},
|
||||
"description": "<ul><li>Start each bullet point with an action verb, and make sure they are present tense for present experiences, and past tense for past experiences</li></ul>"
|
||||
}
|
||||
]
|
||||
},
|
||||
"education": {
|
||||
"title": "Education",
|
||||
"columns": 1,
|
||||
"hidden": false,
|
||||
"items": [
|
||||
{
|
||||
"id": "5cdf4747-beea-40c6-be86-bf3bba92f024",
|
||||
"hidden": false,
|
||||
"school": "University of Georgia",
|
||||
"degree": "Bachelor of Science",
|
||||
"area": "Environmental Engineering",
|
||||
"grade": "3.75/4.00",
|
||||
"location": "Athens, GA",
|
||||
"period": "May 2024",
|
||||
"website": {
|
||||
"url": "",
|
||||
"label": ""
|
||||
},
|
||||
"description": "<p>Engineer in Training (E.I.T.), State of Georgia, 2022<br/>Passed Fundamentals of Engineering Exam, 2022</p>"
|
||||
}
|
||||
]
|
||||
},
|
||||
"projects": {
|
||||
"title": "Relevant Project Experience",
|
||||
"columns": 1,
|
||||
"hidden": false,
|
||||
"items": [
|
||||
{
|
||||
"id": "6c49e60d-b0b3-4f9f-aba5-065b09371b55",
|
||||
"hidden": false,
|
||||
"name": "Group Project, Environmental Engineering Design Methodology",
|
||||
"period": "January 2023 – March 2023",
|
||||
"website": {
|
||||
"url": "",
|
||||
"label": ""
|
||||
},
|
||||
"description": "<ul><li>Develop 3-5 bullet points using the following formula: 1 bullet point = task + skill + quantity + result/purpose</li><li>Ex. Joined a 5-person team to analyze existing ecosystems and conduct environmental tests using ArcGIS for presentation to organizational leadership to inform future building plans</li></ul>"
|
||||
}
|
||||
]
|
||||
},
|
||||
"skills": {
|
||||
"title": "Skills",
|
||||
"columns": 2,
|
||||
"hidden": false,
|
||||
"items": [
|
||||
{
|
||||
"id": "0997cf16-43d1-449e-9f96-8a5484a46131",
|
||||
"hidden": false,
|
||||
"icon": "star",
|
||||
"name": "Technical",
|
||||
"proficiency": "",
|
||||
"level": 0,
|
||||
"keywords": ["AutoCAD", "AutoCAD LT", "Inventor", "SAP2000", "ArcGIS", "Solidworks"]
|
||||
},
|
||||
{
|
||||
"id": "8341a8fc-59b6-480d-9796-d7254e3920b9",
|
||||
"hidden": false,
|
||||
"icon": "star",
|
||||
"name": "Professional",
|
||||
"proficiency": "",
|
||||
"level": 0,
|
||||
"keywords": [
|
||||
"Project management methodologies",
|
||||
"Technical writing",
|
||||
"Oral/Visual Presentation",
|
||||
"Laboratory Procedures"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"languages": {
|
||||
"title": "Languages",
|
||||
"columns": 2,
|
||||
"hidden": true,
|
||||
"items": []
|
||||
},
|
||||
"interests": {
|
||||
"title": "Interests",
|
||||
"columns": 2,
|
||||
"hidden": true,
|
||||
"items": []
|
||||
},
|
||||
"awards": {
|
||||
"title": "Awards",
|
||||
"columns": 1,
|
||||
"hidden": true,
|
||||
"items": []
|
||||
},
|
||||
"certifications": {
|
||||
"title": "Certifications",
|
||||
"columns": 1,
|
||||
"hidden": true,
|
||||
"items": []
|
||||
},
|
||||
"publications": {
|
||||
"title": "Publications",
|
||||
"columns": 1,
|
||||
"hidden": true,
|
||||
"items": []
|
||||
},
|
||||
"volunteer": {
|
||||
"title": "Involvement Experience",
|
||||
"columns": 1,
|
||||
"hidden": false,
|
||||
"items": [
|
||||
{
|
||||
"id": "ce2871f0-5350-4545-bf30-e2b6f9d0f1a7",
|
||||
"hidden": false,
|
||||
"organization": "The National Association of Environmental Professionals",
|
||||
"location": "Athens, GA",
|
||||
"period": "January 2022 – Present",
|
||||
"website": {
|
||||
"url": "",
|
||||
"label": ""
|
||||
},
|
||||
"description": "<ul><li>Try to focus on how each involvement experience will make you a better engineer, and talk about what you did, not what the organization is about</li></ul>"
|
||||
},
|
||||
{
|
||||
"id": "5b631b63-e6d1-4484-b6c4-d59ebae013fd",
|
||||
"hidden": false,
|
||||
"organization": "The Society of Environmental Engineers, UGA",
|
||||
"location": "Athens, GA",
|
||||
"period": "August 2021 – Present",
|
||||
"website": {
|
||||
"url": "",
|
||||
"label": ""
|
||||
},
|
||||
"description": "<ul><li>Attend weekly meetings to focus on strengthening skill sets and developing as a professional</li></ul>"
|
||||
},
|
||||
{
|
||||
"id": "3fbd7e53-6519-437a-8ae6-53de24b34a58",
|
||||
"hidden": false,
|
||||
"organization": "UGA Tennis Team, Co-Captain",
|
||||
"location": "Athens, GA",
|
||||
"period": "August 2020 – May 2023",
|
||||
"website": {
|
||||
"url": "",
|
||||
"label": ""
|
||||
},
|
||||
"description": "<ul><li>Provided leadership for 8 younger athletes related to team motivation, encouragement, and success</li><li>Maintain 10 hours of training per week in addition to full course load and travel for weekend events</li></ul>"
|
||||
},
|
||||
{
|
||||
"id": "94adc4b4-2539-415c-a271-2571031f5650",
|
||||
"hidden": false,
|
||||
"organization": "Sigma Pi Kappa, UGA",
|
||||
"location": "Athens, GA",
|
||||
"period": "December 2021 – December 2022",
|
||||
"website": {
|
||||
"url": "",
|
||||
"label": ""
|
||||
},
|
||||
"description": ""
|
||||
}
|
||||
]
|
||||
},
|
||||
"references": {
|
||||
"title": "References",
|
||||
"columns": 1,
|
||||
"hidden": true,
|
||||
"items": []
|
||||
}
|
||||
},
|
||||
"customSections": [
|
||||
{
|
||||
"id": "fdf72428-49d2-4869-ad46-efa5cf1e2be9",
|
||||
"title": "Relevant Coursework",
|
||||
"columns": 1,
|
||||
"hidden": false,
|
||||
"content": "<p>Engineering Hydrology and Hydraulics | Sustainable Building Design | Energy and Environmental Policy Analysis | GIS for Urban Engineering, Planning, and Development | Environmental Justice: Evidence and Impact</p>"
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"template": "onyx",
|
||||
"layout": {
|
||||
"sidebarWidth": 35,
|
||||
"pages": [
|
||||
{
|
||||
"fullWidth": false,
|
||||
"main": [
|
||||
"summary",
|
||||
"education",
|
||||
"fdf72428-49d2-4869-ad46-efa5cf1e2be9",
|
||||
"projects",
|
||||
"experience",
|
||||
"volunteer"
|
||||
],
|
||||
"sidebar": ["skills"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"css": {
|
||||
"enabled": false,
|
||||
"value": ""
|
||||
},
|
||||
"page": {
|
||||
"gapX": 4,
|
||||
"gapY": 4,
|
||||
"marginX": 18,
|
||||
"marginY": 18,
|
||||
"format": "a4",
|
||||
"locale": "en-US"
|
||||
},
|
||||
"design": {
|
||||
"level": {
|
||||
"icon": "star",
|
||||
"type": "circle"
|
||||
},
|
||||
"colors": {
|
||||
"primary": "rgba(59, 130, 246, 1)",
|
||||
"text": "rgba(0, 0, 0, 1)",
|
||||
"background": "rgba(255, 255, 255, 1)"
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"body": {
|
||||
"fontFamily": "IBM Plex Serif",
|
||||
"fontWeights": ["400", "600"],
|
||||
"fontSize": 11,
|
||||
"lineHeight": 1.5
|
||||
},
|
||||
"heading": {
|
||||
"fontFamily": "Oswald",
|
||||
"fontWeights": ["600"],
|
||||
"fontSize": 15,
|
||||
"lineHeight": 1.5
|
||||
}
|
||||
},
|
||||
"notes": ""
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user