Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion api-server/fixtures/payloads/publications.json5
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,15 @@
},
{
title: 'Graduation Thesis',
descriptions: 'Winner prediction of Soccer WorldCup 2018 with Ordered Probit model',
descriptions: 'Quantitative winner prediction of Soccer WorldCup 2018, using Ordered Probit model',
date: '2015/02/02',
filename: '20150202_Graduation_Thesis.pdf',
},
{
title: 'Competition Thesis (co-write)',
descriptions: 'Quantitative analysis of relations between romantic satisfactions and distance/communications, using Marginal Rate of Substitution.',
date: '2014/01/15',
filename: '20140115_SoC_Competition_Thesis.pdf',
}
]
}
Binary file not shown.
3 changes: 1 addition & 2 deletions web-frontend/src/components/FooterContent.vue
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,9 @@ const props = defineProps({});
<div class="inner">
<ul class="menu">
<li>&copy; Untitled. All rights reserved.</li>
<li>Design: <a href="http://html5up.net">HTML5 UP</a></li>
<li>Design: <a href="http://html5up.net">HTML5 UP</a> | Revised: <a href="https://github.com/hwakabh">hwakabh</a></li>
</ul>
</div>
<!-- <p class="copyright">(c) 2024 hwakabh All Right Reserved.</p> -->
</template>

<style scoped>
Expand Down
7 changes: 4 additions & 3 deletions web-frontend/src/pages/About.vue
Original file line number Diff line number Diff line change
Expand Up @@ -110,9 +110,10 @@ axios.get('/api/v1/cv/publications')
<h3>Career History</h3>
<div>
<ul>
<li>2024-10 - Present: Resident Solutions Engineer / HashiCorp</li>
<li>2019-06 - 2024-10: Telco Solutions Architect / VMware (merged by Broadcom Software)</li>
<li>2015-04 - 2019-06: Delivery Specialist / EMC Corporation (merged by Dell Technologies)</li>
<li>2024-10 - Present: Resident Solutions Engineer / <a href="https://www.hashicorp.com/" target="_blank" rel="noopener noreferrer">HashiCorp</a></li>
<li>2021-01 - 2023-12: Chief Technology Officer / <a href="https://glocalist.co/ja-JP/" target="_blank" rel="noopener noreferrer">Glocalist</a></li>
<li>2019-06 - 2024-10: Telco Solutions Architect / <a href="https://www.vmware.com" target="_blank" rel="noopener noreferrer">VMware</a><br>(merged by Broadcom)</li>
<li>2015-04 - 2019-06: Delivery Specialist / <a href="https://www.emc.com" target="_blank" rel="noopener noreferrer">EMC Corporation </a><br>(merged by Dell Technologies)</li>
</ul>
</div>

Expand Down
12 changes: 8 additions & 4 deletions web-frontend/src/pages/Contact.vue
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,11 @@ const textCount = computed(() => {
<section id="three" class="wrapper style1 fullscreen fade-up">
<div class="inner">
<h2>Contact</h2>
<p>Please feel free to get in touch! </p>
<p>
Please feel free to get in touch. I will wait to hear from you! <br>
The mail will be sent to my personal Gmail via backend API, and this form uses TLS for sending email with <a href="https://www.brevo.com" target="_blank" rel="noopener noreferrer">Brevo</a>. <br>
The contents and your personal information will be encrypted.
</p>
<div v-if="isError">
<p>
Failed to send email, please try again after reload!
Expand All @@ -51,7 +55,7 @@ const textCount = computed(() => {
<div v-if="isCompleted">
<ThanksContent>
<template v-slot:message>
Thanks!
Thanks! I will reply back soon!
</template>

<template v-if="senderEmail" v-slot:sender>
Expand All @@ -66,15 +70,15 @@ const textCount = computed(() => {
<div class="fields">
<div class="field half">
<label for="name">Name</label>
<input v-model="senderName" name="sendername" id="sendername" type="text">
<input v-model="senderName" name="sendername" id="sendername" type="text" placeholder="John Doe">
</div>
<div class="field half">
<label for="email">Email</label>
<input v-model="senderEmail" name="Email" id="email" type="email" placeholder="me@example.com">
</div>
<div class="field">
<label for="body">Message</label>
<textarea v-model="senderBody" />
<textarea v-model="senderBody" placeholder=""/>
</div>
Comment on lines +73 to 82
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Consider enhancing form validation.

The form currently relies only on basic HTML5 validation. Consider adding:

  • Name validation (minimum length, character restrictions)
  • Enhanced email format validation
  • Message length validation (minimum/maximum)
  • Visual feedback for validation states

Example implementation:

 <script setup>
 import axios from "axios";
 import { ref, computed } from 'vue';
+import { useField, useForm } from 'vee-validate';
+import * as yup from 'yup';
 
 import ThanksContent from "../components/Thanks.vue";
 
+const schema = yup.object({
+  name: yup.string().required().min(2).max(50),
+  email: yup.string().required().email(),
+  body: yup.string().required().min(10).max(1000)
+});
+
+const { handleSubmit } = useForm({
+  validationSchema: schema
+});
+
+const { value: name, errorMessage: nameError } = useField('name');
+const { value: email, errorMessage: emailError } = useField('email');
+const { value: body, errorMessage: bodyError } = useField('body');

Committable suggestion skipped: line range outside the PR's diff.

</div>
<button type="submit">Send Message</button>
Expand Down
5 changes: 4 additions & 1 deletion web-frontend/src/pages/Works.vue
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,10 @@ onMounted(() => {
<section id="two" class="wrapper style2-alt fullscreen spotlights">
<div class="inner">
<h2>Personal Works</h2>
<p>Full repository list in <a href="https://github.com/hwakabh" target="_blank">GitHub</a></p>
<p>
Some of the featured projects I have built, mainly for personal purpose or works as freelancer.<br>
Also there is a full list as repositories in <a href="https://github.com/hwakabh" target="_blank">GitHub</a>
</p>

<ul v-for="(w, idx) in workData"
:key="idx"
Expand Down