improvements

This commit is contained in:
Berkay Akyazı
2024-03-12 15:09:05 +03:00
parent 54ddee5c7f
commit 2ac330c9ad
15 changed files with 15 additions and 1797 deletions

View File

@@ -1,6 +1,6 @@
templ:
@templ generate
run:
@npx tailwindcss -i ./resources/global.css -o ./styles/output.css
@npx tailwindcss -i ./resources/global.css -o ./resources/output.css
@templ generate
@go run ./cmd/main.go

View File

@@ -6,9 +6,6 @@ templ Header() {
<a href="/" class="header-item">
ABOUT
</a>
<a href="/skills" class="header-item">
SKILLS
</a>
<a href="/resume" class="header-item">
RESUME
</a>

View File

@@ -23,7 +23,7 @@ func Header() templ.Component {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<header class=\"header site-container pt-1 pb-1\"><nav class=\"header-nav\"><a href=\"/\" class=\"header-item\">ABOUT</a> <a href=\"/skills\" class=\"header-item\">SKILLS</a> <a href=\"/resume\" class=\"header-item\">RESUME</a> <a class=\"header-item\" href=\"https://medium.com/@berkay.akyazi\" target=\"_blank\">BLOG</a></nav><hr></header>")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<header class=\"header site-container pt-1 pb-1\"><nav class=\"header-nav\"><a href=\"/\" class=\"header-item\">ABOUT</a> <a href=\"/resume\" class=\"header-item\">RESUME</a> <a class=\"header-item\" href=\"https://medium.com/@berkay.akyazi\" target=\"_blank\">BLOG</a></nav><hr></header>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -33,7 +33,7 @@ templ Home() {
<div class="text-lg">
<p class="py-6">
<i>
You can access the source code of this resume website by clicking <a href="https://github.com/bakyazi/nextjs-resume" target="_blank" class="text-cyan-700 text-xl">here</a>.
You can access the source code of this resume website by clicking <a href="https://github.com/bakyazi/gotemplresume" target="_blank" class="text-cyan-700 text-xl">here</a>.
</i>
</p>
</div>

View File

@@ -39,7 +39,7 @@ func Home() templ.Component {
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div><div class=\"text-justify text-lg\"><h2 class=\"text-2xl pb-4\">Hi, I am <b class=\"text-cyan-700\">Berkay Akyazı</b></h2><p class=\"pb-2\">I live in <b class=\"text-cyan-700 text-xl\">Ankara, Turkey</b>. I'm a full stack developer. I am always looking for new challenges and opportunities. I am passionate about learning new technologies and are constantly trying to improve.</p><br><p class=\"pb-2\">I've been learning programming since I was a kid. When I was in elementary school, I started using <b class=\"text-cyan-700 text-xl\">HTML, CSS,</b> and <b class=\"text-cyan-700 text-xl\">JavaScript</b> a little. After I started studying, I learned about the programming languages <b class=\"text-cyan-700 text-xl\">Python</b> and <b class=\"text-cyan-700 text-xl\">C / C++</b>, and my passion for programming began. After that, I met <b class=\"text-cyan-700 text-xl\">Java</b> in a summer internship. Since then, I've been writing Java in my professional career.</p><br><p class=\"pb-2\">In recent times, I prefer Golang for software development. I am fan of its ability to facilitate rapid development, in addition to being both simple and powerful.</p><br><p class=\"pb-2\">Besides Golang and Java, I use <b class=\"text-cyan-700 text-xl\">Python, React</b> and <b class=\"text-cyan-700 text-xl\">Vue.js</b> in my professional career and everyday life. I love Python for small hands-on projects and web crawls. React is usually my first choice for front-end work. I am currently looking for go + templ + htmx tech stack and I am very passionate about it.</p></div><div class=\"mt-20\"><img src=\"resources/me.jpg\" alt=\"sorry i can&#39;t find nice pic for here\"></div><div class=\"text-lg\"><p class=\"py-6\"><i>You can access the source code of this resume website by clicking <a href=\"https://github.com/bakyazi/nextjs-resume\" target=\"_blank\" class=\"text-cyan-700 text-xl\">here</a>.</i></p></div></div></div>")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div><div class=\"text-justify text-lg\"><h2 class=\"text-2xl pb-4\">Hi, I am <b class=\"text-cyan-700\">Berkay Akyazı</b></h2><p class=\"pb-2\">I live in <b class=\"text-cyan-700 text-xl\">Ankara, Turkey</b>. I'm a full stack developer. I am always looking for new challenges and opportunities. I am passionate about learning new technologies and are constantly trying to improve.</p><br><p class=\"pb-2\">I've been learning programming since I was a kid. When I was in elementary school, I started using <b class=\"text-cyan-700 text-xl\">HTML, CSS,</b> and <b class=\"text-cyan-700 text-xl\">JavaScript</b> a little. After I started studying, I learned about the programming languages <b class=\"text-cyan-700 text-xl\">Python</b> and <b class=\"text-cyan-700 text-xl\">C / C++</b>, and my passion for programming began. After that, I met <b class=\"text-cyan-700 text-xl\">Java</b> in a summer internship. Since then, I've been writing Java in my professional career.</p><br><p class=\"pb-2\">In recent times, I prefer Golang for software development. I am fan of its ability to facilitate rapid development, in addition to being both simple and powerful.</p><br><p class=\"pb-2\">Besides Golang and Java, I use <b class=\"text-cyan-700 text-xl\">Python, React</b> and <b class=\"text-cyan-700 text-xl\">Vue.js</b> in my professional career and everyday life. I love Python for small hands-on projects and web crawls. React is usually my first choice for front-end work. I am currently looking for go + templ + htmx tech stack and I am very passionate about it.</p></div><div class=\"mt-20\"><img src=\"resources/me.jpg\" alt=\"sorry i can&#39;t find nice pic for here\"></div><div class=\"text-lg\"><p class=\"py-6\"><i>You can access the source code of this resume website by clicking <a href=\"https://github.com/bakyazi/gotemplresume\" target=\"_blank\" class=\"text-cyan-700 text-xl\">here</a>.</i></p></div></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -10,7 +10,9 @@ templ Resume(r dto.Resume) {
<a href="/resources/cv.pdf" target="_blank">
<div class="flex justify-end items-center text-cyan-700 hover:bg-cyan-700 hover:bg-opacity-60 p-1.5 rounded-md hover:text-white"
>
<label class="cursor-pointer">Download CV</label>
<label class="cursor-pointer">
<i class="fa-solid fa-download"></i>
Download CV</label>
</div>
</a>
</div>

View File

@@ -32,7 +32,7 @@ func Resume(r dto.Resume) templ.Component {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"site-container\"><div class=\"flex justify-end items-center space-x-4\"><a href=\"/resources/cv.pdf\" target=\"_blank\"><div class=\"flex justify-end items-center text-cyan-700 hover:bg-cyan-700 hover:bg-opacity-60 p-1.5 rounded-md hover:text-white\"><label class=\"cursor-pointer\">Download CV</label></div></a></div><div>")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"site-container\"><div class=\"flex justify-end items-center space-x-4\"><a href=\"/resources/cv.pdf\" target=\"_blank\"><div class=\"flex justify-end items-center text-cyan-700 hover:bg-cyan-700 hover:bg-opacity-60 p-1.5 rounded-md hover:text-white\"><label class=\"cursor-pointer\"><i class=\"fa-solid fa-download\"></i> Download CV</label></div></a></div><div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -1,68 +0,0 @@
package pages
import "github.com/bakyazi/gotemplresume/dto"
import "github.com/bakyazi/gotemplresume/pages/components"
templ Skills(r dto.Resume) {
@Base(){
<div class="site-container">
<div class="skills-sections">
<div class="skills-section">
<label class="text-left text-cyan-700">Programming Languages</label>
<div class="skills-container">
for _, pl := range r.Skills.ProgrammingLanguages {
<div class="rate-card">
{pl.Name}
@components.Rating(int(pl.Rank))
</div>
}
</div>
</div>
<div class="skills-section">
<label class="text-left text-cyan-700">Frameworks</label>
<div class="skills-container">
for _, pl := range r.Skills.Frameworks {
<div class="rate-card">
{pl.Name}
@components.Rating(int(pl.Rank))
</div>
}
</div>
</div>
<div class="skills-section">
<label class="text-left text-cyan-700">Operating Systems</label>
<div class="skills-container">
for _, pl := range r.Skills.OperatingSystems {
<div class="rate-card">
{pl.Name}
@components.Rating(int(pl.Rank))
</div>
}
</div>
</div>
<div class="skills-section">
<label class="text-left text-cyan-700">CI/CD</label>
<div class="skills-container">
for _, pl := range r.Skills.CiCd {
<div class="rate-card">
{pl.Name}
@components.Rating(int(pl.Rank))
</div>
}
</div>
</div>
<div class="skills-section">
<label class="text-left text-cyan-700">Tools</label>
<div class="skills-container">
for _, pl := range r.Skills.Tools {
<div class="rate-card">
{pl.Name}
@components.Rating(int(pl.Rank))
</div>
}
</div>
</div>
</div>
</div>
}
}

View File

@@ -1,188 +0,0 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.543
package pages
//lint:file-ignore SA4006 This context is only used if a nested component is present.
import "github.com/a-h/templ"
import "context"
import "io"
import "bytes"
import "github.com/bakyazi/gotemplresume/dto"
import "github.com/bakyazi/gotemplresume/pages/components"
func Skills(r dto.Resume) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Var2 := templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"site-container\"><div class=\"skills-sections\"><div class=\"skills-section\"><label class=\"text-left text-cyan-700\">Programming Languages</label><div class=\"skills-container\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
for _, pl := range r.Skills.ProgrammingLanguages {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"rate-card\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var3 string
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(pl.Name)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/skills.templ`, Line: 14, Col: 36}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = components.Rating(int(pl.Rank)).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div></div><div class=\"skills-section\"><label class=\"text-left text-cyan-700\">Frameworks</label><div class=\"skills-container\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
for _, pl := range r.Skills.Frameworks {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"rate-card\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(pl.Name)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/skills.templ`, Line: 25, Col: 36}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = components.Rating(int(pl.Rank)).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div></div><div class=\"skills-section\"><label class=\"text-left text-cyan-700\">Operating Systems</label><div class=\"skills-container\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
for _, pl := range r.Skills.OperatingSystems {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"rate-card\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var5 string
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(pl.Name)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/skills.templ`, Line: 36, Col: 36}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = components.Rating(int(pl.Rank)).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div></div><div class=\"skills-section\"><label class=\"text-left text-cyan-700\">CI/CD</label><div class=\"skills-container\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
for _, pl := range r.Skills.CiCd {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"rate-card\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var6 string
templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(pl.Name)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/skills.templ`, Line: 47, Col: 36}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = components.Rating(int(pl.Rank)).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div></div><div class=\"skills-section\"><label class=\"text-left text-cyan-700\">Tools</label><div class=\"skills-container\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
for _, pl := range r.Skills.Tools {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"rate-card\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var7 string
templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(pl.Name)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/skills.templ`, Line: 58, Col: 36}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = components.Rating(int(pl.Rank)).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div></div></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = io.Copy(templ_7745c5c3_W, templ_7745c5c3_Buffer)
}
return templ_7745c5c3_Err
})
templ_7745c5c3_Err = Base().Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}

Binary file not shown.

View File

@@ -4,7 +4,7 @@
@layer components {
.site-container {
@apply max-w-2xl mx-auto px-6 font-mono py-24
@apply max-w-4xl mx-auto px-6 font-mono py-24
}
.site-3xl-container {
@@ -69,19 +69,6 @@
@apply mr-2
}
/* Skills */
.skills-container {
@apply grid grid-cols-3 gap-4 place-content-end pt-4
}
.rate-card {
@apply basis-1/3 flex flex-col justify-center
}
.skills-section {
@apply pb-5
}
/* Timeline */
.timeline {

View File

@@ -547,7 +547,7 @@ video {
.site-container {
margin-left: auto;
margin-right: auto;
max-width: 42rem;
max-width: 56rem;
padding-left: 1.5rem;
padding-right: 1.5rem;
padding-top: 6rem;
@@ -735,27 +735,6 @@ video {
margin-right: 0.5rem;
}
/* Skills */
.skills-container {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
place-content: end;
gap: 1rem;
padding-top: 1rem;
}
.rate-card {
display: flex;
flex-basis: 33.333333%;
flex-direction: column;
justify-content: center;
}
.skills-section {
padding-bottom: 1.25rem;
}
/* Timeline */
.timeline {
@@ -938,10 +917,6 @@ video {
display: flex;
}
.grid {
display: grid;
}
.h-11 {
height: 2.75rem;
}
@@ -958,14 +933,14 @@ video {
width: 100%;
}
.max-w-2xl {
max-width: 42rem;
}
.max-w-3xl {
max-width: 48rem;
}
.max-w-4xl {
max-width: 56rem;
}
.flex-auto {
flex: 1 1 auto;
}
@@ -978,18 +953,10 @@ video {
flex-grow: 1;
}
.basis-1\/3 {
flex-basis: 33.333333%;
}
.cursor-pointer {
cursor: pointer;
}
.grid-cols-3 {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.flex-row {
flex-direction: row;
}
@@ -998,10 +965,6 @@ video {
flex-direction: column;
}
.place-content-end {
place-content: end;
}
.items-center {
align-items: center;
}
@@ -1014,10 +977,6 @@ video {
justify-content: space-between;
}
.gap-4 {
gap: 1rem;
}
.rounded-full {
border-radius: 9999px;
}

View File

@@ -65,92 +65,5 @@
"location": "Ümitköy Anatolian High School",
"description": "There is nothing to say so much. It was an ordinary school but I have good memories there."
}
],
"skills": {
"programmingLanguages": [
{
"name": "Golang",
"rank": 4.5,
"key": "golang"
},
{
"name": "Java",
"rank": 4.5,
"key": "java"
},
{
"name": "Python",
"rank": 4.0,
"key": "python"
},
{
"name": "JavaScript",
"rank": 3.5,
"key": "javascript"
}
],
"frameworks": [
{
"name": "Spring",
"rank": 3.5,
"key": "spring"
},
{
"name": "React",
"rank": 3,
"key": "react"
},
{
"name": "Vue",
"rank": 2,
"key": "vue"
}
],
"operatingSystems": [
{
"name": "Ubuntu",
"rank": 4.5,
"key": "ubuntu"
},
{
"name": "CentOS",
"rank": 4,
"key": "centos"
},
{
"name": "MacOS",
"rank": 3.5,
"key": "macos"
}
],
"ciCd": [
{
"name": "Jenkins",
"rank": 3.5,
"key": "jenkins"
},
{
"name": "TravisCI",
"rank": 2,
"key": "travisci"
}
],
"tools": [
{
"name": "JIRA",
"rank": 5,
"key": "jira"
},
{
"name": "Bitbucket",
"rank": 5,
"key": "bitbucket"
},
{
"name": "GitHub",
"rank": 5,
"key": "github"
}
]
}
]
}

View File

@@ -15,7 +15,6 @@ func Init(e *echo.Echo) {
router := &Router{}
e.Static("/resources", "resources")
e.GET("/", router.Home)
e.GET("/skills", router.Skills)
e.GET("/resume", router.Resume)
}
@@ -23,25 +22,6 @@ func (r *Router) Home(c echo.Context) error {
return pages.Home().Render(c.Request().Context(), c.Response().Writer)
}
func (r *Router) Skills(c echo.Context) error {
resumeFile, err := os.Open("resources/resume.json")
if err != nil {
return err
}
defer resumeFile.Close()
resumeDecoder := json.NewDecoder(resumeFile)
var resume dto.Resume
err = resumeDecoder.Decode(&resume)
if err != nil {
return err
}
return pages.Skills(resume).Render(c.Request().Context(), c.Response().Writer)
}
func (r *Router) Resume(c echo.Context) error {
resumeFile, err := os.Open("resources/resume.json")

File diff suppressed because it is too large Load Diff