@goweekdays/layer-common 1.5.12 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @goweekdays/layer-common
2
2
 
3
+ ## 1.6.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 4e782d6: Job profile initial release
8
+
3
9
  ## 1.5.12
4
10
 
5
11
  ### Patch Changes
@@ -0,0 +1,180 @@
1
+ # Privacy Policy – GoWeekdays Job
2
+
3
+ **Effective Date:** [Insert Date]
4
+
5
+ GoWeekdays Job is a service operated by GoWeekdays Solutions OPC ("GoWeekdays", "we", "us", or "our"). This Privacy Policy explains how we collect, use, disclose, store, and protect personal data of individuals who create a job profile or otherwise use the GoWeekdays Job platform.
6
+
7
+ By creating a job profile or using GoWeekdays Job, you acknowledge that you have read, understood, and agreed to the practices described in this Privacy Policy.
8
+
9
+ ---
10
+
11
+ ## 1. Scope of This Policy
12
+
13
+ This Privacy Policy applies to:
14
+
15
+ - Individuals who create or maintain a job seeker profile on GoWeekdays Job
16
+ - Individuals who interact with employers through the platform
17
+ - All personal data collected through web, mobile, or related GoWeekdays Job services
18
+
19
+ This policy should be read together with any applicable Terms of Service.
20
+
21
+ ---
22
+
23
+ ## 2. Information We Collect
24
+
25
+ We collect personal data that you voluntarily provide when creating and maintaining a job profile, including but not limited to the following categories:
26
+
27
+ ### 2.1 Personal and Contact Information
28
+
29
+ - First name and last name
30
+ - Professional headline
31
+ - Email address and email verification status
32
+ - Contact number and contact visibility preference
33
+ - Citizenship (optional)
34
+
35
+ ### 2.2 Location and Mobility Information
36
+
37
+ - Country
38
+ - City / State
39
+ - Street address and postal code (optional)
40
+ - Willingness to relocate
41
+
42
+ ### 2.3 Professional Summary
43
+
44
+ - Profile summary
45
+ - Additional profile details
46
+
47
+ ### 2.4 Work Experience
48
+
49
+ - Job titles and company names
50
+ - Employment locations
51
+ - Employment start and end dates
52
+ - Current employment status
53
+ - Role descriptions and additional details
54
+
55
+ ### 2.5 Education
56
+
57
+ - Level of education
58
+ - Field of study
59
+ - School name and location
60
+ - Enrollment status
61
+ - Start and end dates
62
+ - Additional details
63
+
64
+ ### 2.6 Skills and Qualifications
65
+
66
+ - Skills
67
+ - Certifications and licenses
68
+ - Awards and recognitions
69
+ - Professional groups or organizations
70
+ - Languages and proficiency levels
71
+
72
+ ### 2.7 Additional Professional Information (Optional)
73
+
74
+ - Military service information
75
+ - Patents
76
+ - Publications
77
+ - External links (e.g., portfolio, personal website)
78
+
79
+ ### 2.8 System and Metadata
80
+
81
+ - Profile creation, update, and deletion timestamps
82
+ - Internal identifiers linked to your user account
83
+
84
+ ---
85
+
86
+ ## 3. How We Use Your Information
87
+
88
+ We use collected information for legitimate business and operational purposes, including to:
89
+
90
+ - Create and maintain your job seeker profile
91
+ - Display your profile to potential employers
92
+ - Match your profile with relevant job opportunities
93
+ - Enable communication between job seekers and employers
94
+ - Improve platform features, algorithms, analytics, and user experience
95
+ - Monitor platform usage and prevent misuse or fraud
96
+ - Comply with legal and regulatory obligations
97
+
98
+ ---
99
+
100
+ ## 4. Sharing and Disclosure of Information
101
+
102
+ By creating a job profile, you expressly consent to the sharing of your job profile information with:
103
+
104
+ - Employers and hiring organizations registered on GoWeekdays Job
105
+ - Authorized hiring partners using the platform for recruitment purposes
106
+
107
+ We do not sell personal data to third parties. Information is shared strictly for employment, recruitment, and platform-related purposes.
108
+
109
+ ---
110
+
111
+ ## 5. Data Visibility and User Control
112
+
113
+ - You are responsible for the accuracy and completeness of your job profile.
114
+ - You may update, modify, or remove profile information at any time.
115
+ - Certain contact details will only be visible to employers if you enable visibility settings.
116
+ - Deleting your profile will remove it from active employer search results, subject to applicable data retention requirements.
117
+
118
+ ---
119
+
120
+ ## 6. Legal Basis for Processing
121
+
122
+ We process personal data based on one or more of the following legal grounds:
123
+
124
+ - Your consent
125
+ - Performance of a contract or service request
126
+ - Legitimate interests related to operating and improving the platform
127
+ - Compliance with applicable laws and regulations
128
+
129
+ ---
130
+
131
+ ## 7. Data Retention
132
+
133
+ We retain personal data only for as long as necessary to:
134
+
135
+ - Provide GoWeekdays Job services
136
+ - Fulfill recruitment and employment-related purposes
137
+ - Comply with legal, accounting, or regulatory requirements
138
+
139
+ Data marked for deletion may be retained in archived or backup systems for a limited period in accordance with internal retention policies.
140
+
141
+ ---
142
+
143
+ ## 8. Data Security
144
+
145
+ We implement reasonable administrative, technical, and organizational measures to protect personal data against unauthorized access, alteration, disclosure, or destruction.
146
+
147
+ While we strive to protect your data, no system can guarantee absolute security.
148
+
149
+ ---
150
+
151
+ ## 9. Your Rights
152
+
153
+ Subject to applicable laws, you may have the right to:
154
+
155
+ - Access your personal data
156
+ - Request correction or updating of inaccurate data
157
+ - Request deletion of your data
158
+ - Withdraw consent where processing is based on consent
159
+ - Object to certain types of processing
160
+
161
+ Requests may be subject to verification and legal limitations.
162
+
163
+ ---
164
+
165
+ ## 10. Changes to This Privacy Policy
166
+
167
+ We may update this Privacy Policy from time to time. Any changes will be effective upon publication on the platform. Continued use of GoWeekdays Job after changes take effect constitutes acceptance of the updated policy.
168
+
169
+ ---
170
+
171
+ ## 11. Contact Information
172
+
173
+ For questions, concerns, or requests related to this Privacy Policy or data protection, please contact:
174
+
175
+ **GoWeekdays Support**
176
+ [Insert official contact email]
177
+
178
+ ---
179
+
180
+ This Privacy Policy is intended to meet general data protection principles and applicable Philippine data privacy requirements.
@@ -0,0 +1,100 @@
1
+ <template>
2
+ <v-container v-if="editor" class="pa-0">
3
+ <v-row no-gutters class="border-sm border-opacity-50 rounded-lg">
4
+ <v-col cols="12" class="pa-1">
5
+ <v-btn-toggle multiple density="comfortable" variant="text">
6
+ <v-btn
7
+ icon="mdi-format-bold"
8
+ size="large"
9
+ :active="editor.isActive('bold')"
10
+ :disabled="!editor.can().toggleBold()"
11
+ @click="editor.chain().focus().toggleBold().run()"
12
+ />
13
+ <v-btn
14
+ icon="mdi-format-italic"
15
+ size="large"
16
+ :active="editor.isActive('italic')"
17
+ :disabled="!editor.can().toggleItalic()"
18
+ @click="editor.chain().focus().toggleItalic().run()"
19
+ />
20
+ <v-btn
21
+ icon="mdi-format-list-bulleted"
22
+ size="large"
23
+ :active="editor.isActive('bulletList')"
24
+ @click="editor.chain().focus().toggleBulletList().run()"
25
+ />
26
+ <v-btn
27
+ icon="mdi-format-list-numbered"
28
+ size="large"
29
+ :active="editor.isActive('orderedList')"
30
+ @click="editor.chain().focus().toggleOrderedList().run()"
31
+ />
32
+ </v-btn-toggle>
33
+ </v-col>
34
+
35
+ <v-divider opacity="50"></v-divider>
36
+
37
+ <v-col cols="12">
38
+ <editor-content :editor="editor" />
39
+ </v-col>
40
+ </v-row>
41
+ </v-container>
42
+
43
+ <v-input
44
+ v-model="strippedContent"
45
+ v-bind="$attrs"
46
+ @update:focused="test()"
47
+ ></v-input>
48
+ </template>
49
+
50
+ <script setup lang="ts">
51
+ import StarterKit from "@tiptap/starter-kit";
52
+ import { Editor, EditorContent } from "@tiptap/vue-3";
53
+
54
+ function test() {
55
+ console.log("focused");
56
+ }
57
+
58
+ defineOptions({
59
+ inheritAttrs: false,
60
+ });
61
+
62
+ const content = defineModel({
63
+ type: String,
64
+ default: "",
65
+ });
66
+
67
+ const strippedContent = ref("");
68
+
69
+ strippedContent.value = content.value.replace(/<[^>]+>/g, "");
70
+
71
+ const editor = new Editor({
72
+ extensions: [StarterKit],
73
+ content: content.value,
74
+ onUpdate: () => {
75
+ content.value = editor.getHTML();
76
+ strippedContent.value = editor.getText();
77
+ },
78
+ editorProps: {
79
+ attributes: {
80
+ class: "custom-tiptap",
81
+ },
82
+ },
83
+ });
84
+ </script>
85
+
86
+ <style lang="scss">
87
+ .tiptap {
88
+ outline: none;
89
+
90
+ ul,
91
+ ol {
92
+ li p {
93
+ margin: 0;
94
+ }
95
+ }
96
+ }
97
+ .custom-tiptap {
98
+ padding: 16px;
99
+ }
100
+ </style>
@@ -0,0 +1,385 @@
1
+ export function useJobProfile() {
2
+ const jobProfile = ref<TJobProfile>({
3
+ _id: "",
4
+ user: "",
5
+ firstName: "",
6
+ lastName: "",
7
+ headline: "",
8
+ email: "",
9
+ contact: "",
10
+ country: "",
11
+ cityState: "",
12
+ streetAddress: "",
13
+ postalCode: "",
14
+ relocate: false,
15
+ showContact: false,
16
+ summary: "",
17
+ workExperience: [],
18
+ education: [],
19
+ skills: [],
20
+ certifications: [],
21
+ languages: [],
22
+ militaryExperience: {
23
+ country: "",
24
+ branch: "",
25
+ rank: "",
26
+ serving: false,
27
+ fromMonth: "",
28
+ fromYear: "",
29
+ },
30
+ patents: [],
31
+ publications: [],
32
+ });
33
+
34
+ function add(value: TJobProfile) {
35
+ return useNuxtApp().$api<TJobProfile>(`/api/job/profiles`, {
36
+ method: "POST",
37
+ body: value,
38
+ });
39
+ }
40
+
41
+ function getAll({ page = 1, limit = 50, status = "new", search = "" } = {}) {
42
+ return useNuxtApp().$api<Record<string, any>>(`/api/job/profiles`, {
43
+ method: "GET",
44
+ query: {
45
+ page,
46
+ limit,
47
+ status,
48
+ search,
49
+ },
50
+ });
51
+ }
52
+
53
+ function getByUser(user: string) {
54
+ return useNuxtApp().$api<TJobProfile>(`/api/job/profiles/user/${user}`, {
55
+ method: "GET",
56
+ });
57
+ }
58
+
59
+ function updateContactInfoById(
60
+ id: string,
61
+ options: {
62
+ firstName?: string;
63
+ lastName?: string;
64
+ headline?: string;
65
+ contact?: string;
66
+ showContact?: boolean;
67
+ country?: string;
68
+ cityState?: string;
69
+ streetAddress?: string;
70
+ postalCode?: string;
71
+ relocate?: boolean;
72
+ }
73
+ ) {
74
+ return useNuxtApp().$api<TJobProfile>(
75
+ `/api/job/profiles/id/${id}/contact-info`,
76
+ {
77
+ method: "PATCH",
78
+ body: options,
79
+ }
80
+ );
81
+ }
82
+
83
+ function updateSummaryById(id: string, summary: string) {
84
+ return useNuxtApp().$api<TJobProfile>(
85
+ `/api/job/profiles/id/${id}/summary`,
86
+ {
87
+ method: "PATCH",
88
+ body: { summary },
89
+ }
90
+ );
91
+ }
92
+
93
+ function updatePersonalInfoById(
94
+ id: string,
95
+ options: {
96
+ citizenship?: string;
97
+ }
98
+ ) {
99
+ return useNuxtApp().$api<TJobProfile>(
100
+ `/api/job/profiles/id/${id}/personal-info`,
101
+ {
102
+ method: "PATCH",
103
+ body: options,
104
+ }
105
+ );
106
+ }
107
+
108
+ function addWorkExpById(
109
+ id: string,
110
+ options: Pick<
111
+ TJobProfileWorkExp,
112
+ | "jobTitle"
113
+ | "company"
114
+ | "country"
115
+ | "cityState"
116
+ | "fromMonth"
117
+ | "fromYear"
118
+ | "toMonth"
119
+ | "toYear"
120
+ | "currentlyWorking"
121
+ | "description"
122
+ | "additionalDetails"
123
+ >
124
+ ) {
125
+ return useNuxtApp().$api<TJobProfile>(
126
+ `/api/job/profiles/id/${id}/work-experience`,
127
+ {
128
+ method: "POST",
129
+ body: options,
130
+ }
131
+ );
132
+ }
133
+
134
+ function updateWorkExpById(
135
+ id: string,
136
+ options: Pick<
137
+ TJobProfileWorkExp,
138
+ | "id"
139
+ | "jobTitle"
140
+ | "company"
141
+ | "country"
142
+ | "cityState"
143
+ | "fromMonth"
144
+ | "fromYear"
145
+ | "toMonth"
146
+ | "toYear"
147
+ | "currentlyWorking"
148
+ | "description"
149
+ | "additionalDetails"
150
+ >
151
+ ) {
152
+ return useNuxtApp().$api<TJobProfile>(
153
+ `/api/job/profiles/id/${id}/work-experience`,
154
+ {
155
+ method: "PATCH",
156
+ body: options,
157
+ }
158
+ );
159
+ }
160
+
161
+ function deleteWorkExpById(id: string, workExpId: string) {
162
+ return useNuxtApp().$api<TJobProfile>(
163
+ `/api/job/profiles/id/${id}/work-experience/${workExpId}`,
164
+ {
165
+ method: "DELETE",
166
+ }
167
+ );
168
+ }
169
+
170
+ function addEduById(
171
+ id: string,
172
+ options: Pick<
173
+ TJobProfileEdu,
174
+ | "levelOfEducation"
175
+ | "fieldOfStudy"
176
+ | "schoolName"
177
+ | "country"
178
+ | "location"
179
+ | "currentlyEnrolled"
180
+ | "fromMonth"
181
+ | "fromYear"
182
+ | "toMonth"
183
+ | "toYear"
184
+ | "additionalDetails"
185
+ >
186
+ ) {
187
+ return useNuxtApp().$api<TJobProfile>(
188
+ `/api/job/profiles/id/${id}/education`,
189
+ {
190
+ method: "POST",
191
+ body: options,
192
+ }
193
+ );
194
+ }
195
+
196
+ function updateEduById(
197
+ id: string,
198
+ options: Pick<
199
+ TJobProfileEdu,
200
+ | "id"
201
+ | "levelOfEducation"
202
+ | "fieldOfStudy"
203
+ | "schoolName"
204
+ | "country"
205
+ | "location"
206
+ | "currentlyEnrolled"
207
+ | "fromMonth"
208
+ | "fromYear"
209
+ | "toMonth"
210
+ | "toYear"
211
+ | "additionalDetails"
212
+ >
213
+ ) {
214
+ return useNuxtApp().$api<TJobProfile>(
215
+ `/api/job/profiles/id/${id}/education`,
216
+ {
217
+ method: "PATCH",
218
+ body: options,
219
+ }
220
+ );
221
+ }
222
+
223
+ function deleteEduById(id: string, eduId: string) {
224
+ return useNuxtApp().$api<TJobProfile>(
225
+ `/api/job/profiles/id/${id}/education/${eduId}`,
226
+ {
227
+ method: "DELETE",
228
+ }
229
+ );
230
+ }
231
+
232
+ function addSkillById(
233
+ id: string,
234
+ options: Pick<TJobProfileSkill, "name" | "proficiency">
235
+ ) {
236
+ return useNuxtApp().$api<TJobProfile>(`/api/job/profiles/id/${id}/skills`, {
237
+ method: "POST",
238
+ body: options,
239
+ });
240
+ }
241
+
242
+ function updateSkillById(
243
+ id: string,
244
+ options: Pick<TJobProfileSkill, "id" | "name" | "proficiency">
245
+ ) {
246
+ return useNuxtApp().$api<TJobProfile>(`/api/job/profiles/id/${id}/skills`, {
247
+ method: "PATCH",
248
+ body: options,
249
+ });
250
+ }
251
+
252
+ function deleteSkillById(id: string, skillId: string) {
253
+ return useNuxtApp().$api<TJobProfile>(
254
+ `/api/job/profiles/id/${id}/skills/${skillId}`,
255
+ {
256
+ method: "DELETE",
257
+ }
258
+ );
259
+ }
260
+
261
+ function updateAdditionalInfoById(id: string, additionalInfo: string) {
262
+ return useNuxtApp().$api<TJobProfile>(
263
+ `/api/job/profiles/id/${id}/additional-info`,
264
+ {
265
+ method: "PATCH",
266
+ body: { additionalInfo },
267
+ }
268
+ );
269
+ }
270
+
271
+ function addLangById(
272
+ id: string,
273
+ options: Pick<TJobProfileLang, "language" | "proficiency">
274
+ ) {
275
+ return useNuxtApp().$api<TJobProfile>(
276
+ `/api/job/profiles/id/${id}/languages`,
277
+ {
278
+ method: "POST",
279
+ body: options,
280
+ }
281
+ );
282
+ }
283
+
284
+ function updateLangById(
285
+ id: string,
286
+ options: Pick<TJobProfileLang, "id" | "language" | "proficiency">
287
+ ) {
288
+ return useNuxtApp().$api<TJobProfile>(
289
+ `/api/job/profiles/id/${id}/languages`,
290
+ {
291
+ method: "PATCH",
292
+ body: options,
293
+ }
294
+ );
295
+ }
296
+
297
+ function deleteLangById(id: string, langId: string) {
298
+ return useNuxtApp().$api<TJobProfile>(
299
+ `/api/job/profiles/id/${id}/languages/${langId}`,
300
+ {
301
+ method: "DELETE",
302
+ }
303
+ );
304
+ }
305
+
306
+ function addCertById(
307
+ id: string,
308
+ options: Pick<
309
+ TJobProfileCert,
310
+ | "title"
311
+ | "noExpiry"
312
+ | "fromMonth"
313
+ | "fromYear"
314
+ | "toMonth"
315
+ | "toYear"
316
+ | "description"
317
+ >
318
+ ) {
319
+ return useNuxtApp().$api<TJobProfile>(
320
+ `/api/job/profiles/id/${id}/certifications`,
321
+ {
322
+ method: "POST",
323
+ body: options,
324
+ }
325
+ );
326
+ }
327
+
328
+ function updateCertById(
329
+ id: string,
330
+ options: Pick<
331
+ TJobProfileCert,
332
+ | "id"
333
+ | "title"
334
+ | "noExpiry"
335
+ | "fromMonth"
336
+ | "fromYear"
337
+ | "toMonth"
338
+ | "toYear"
339
+ | "description"
340
+ >
341
+ ) {
342
+ return useNuxtApp().$api<TJobProfile>(
343
+ `/api/job/profiles/id/${id}/certifications`,
344
+ {
345
+ method: "PATCH",
346
+ body: options,
347
+ }
348
+ );
349
+ }
350
+
351
+ function deleteCertById(id: string, certId: string) {
352
+ return useNuxtApp().$api<TJobProfile>(
353
+ `/api/job/profiles/id/${id}/certifications/${certId}`,
354
+ {
355
+ method: "DELETE",
356
+ }
357
+ );
358
+ }
359
+
360
+ return {
361
+ jobProfile,
362
+ add,
363
+ getAll,
364
+ getByUser,
365
+ updateContactInfoById,
366
+ updateSummaryById,
367
+ updatePersonalInfoById,
368
+ addWorkExpById,
369
+ updateWorkExpById,
370
+ deleteWorkExpById,
371
+ addEduById,
372
+ updateEduById,
373
+ deleteEduById,
374
+ addSkillById,
375
+ updateSkillById,
376
+ deleteSkillById,
377
+ updateAdditionalInfoById,
378
+ addLangById,
379
+ updateLangById,
380
+ deleteLangById,
381
+ addCertById,
382
+ updateCertById,
383
+ deleteCertById,
384
+ };
385
+ }
@@ -451,6 +451,81 @@ export default function useUtils() {
451
451
  });
452
452
  }
453
453
 
454
+ const months = [
455
+ {
456
+ title: "January",
457
+ value: "january",
458
+ },
459
+ {
460
+ title: "February",
461
+ value: "february",
462
+ },
463
+ {
464
+ title: "March",
465
+ value: "march",
466
+ },
467
+ {
468
+ title: "April",
469
+ value: "april",
470
+ },
471
+ {
472
+ title: "May",
473
+ value: "may",
474
+ },
475
+ {
476
+ title: "June",
477
+ value: "june",
478
+ },
479
+ {
480
+ title: "July",
481
+ value: "july",
482
+ },
483
+ {
484
+ title: "August",
485
+ value: "august",
486
+ },
487
+ {
488
+ title: "September",
489
+ value: "september",
490
+ },
491
+ {
492
+ title: "October",
493
+ value: "october",
494
+ },
495
+ {
496
+ title: "November",
497
+ value: "november",
498
+ },
499
+ {
500
+ title: "December",
501
+ value: "december",
502
+ },
503
+ ];
504
+
505
+ function generateYears(
506
+ generation = 0,
507
+ mode = "past",
508
+ currentYear = new Date().getFullYear()
509
+ ) {
510
+ const years = [];
511
+
512
+ if (mode === "past") {
513
+ // Generate from current year going back to past years
514
+ for (let i = 0; i <= generation; i++) {
515
+ const year = currentYear - i;
516
+ years.push(year.toString());
517
+ }
518
+ } else if (mode === "future") {
519
+ // Generate from current year going forward to future years
520
+ for (let i = 0; i <= generation; i++) {
521
+ const year = currentYear + i;
522
+ years.push(year.toString());
523
+ }
524
+ }
525
+
526
+ return years;
527
+ }
528
+
454
529
  return {
455
530
  requiredRule,
456
531
  emailRule,
@@ -482,5 +557,7 @@ export default function useUtils() {
482
557
  requireSlug,
483
558
  generatePaymentPromoCode,
484
559
  copyToClipboard,
560
+ months,
561
+ generateYears,
485
562
  };
486
563
  }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@goweekdays/layer-common",
3
3
  "license": "MIT",
4
4
  "type": "module",
5
- "version": "1.5.12",
5
+ "version": "1.6.0",
6
6
  "main": "./nuxt.config.ts",
7
7
  "publishConfig": {
8
8
  "access": "public"
@@ -30,6 +30,12 @@
30
30
  "@iconify/vue": "^5.0.0",
31
31
  "@mdi/font": "^7.4.47",
32
32
  "sass": "^1.80.6",
33
- "zod": "^3.24.2"
33
+ "zod": "^3.24.2",
34
+ "@tiptap/extension-list": "^3.15.3",
35
+ "@tiptap/extension-text-align": "^3.15.3",
36
+ "@tiptap/extension-text-style": "^3.15.3",
37
+ "@tiptap/pm": "^3.15.3",
38
+ "@tiptap/starter-kit": "^3.15.3",
39
+ "@tiptap/vue-3": "^3.15.3"
34
40
  }
35
41
  }
@@ -0,0 +1,368 @@
1
+ <template>
2
+ <v-row no-gutters class="pa-4" justify="center">
3
+ <v-col cols="12" lg="8">
4
+ <v-card width="100%" variant="flat">
5
+ <v-card-title class="text-h3 font-weight-bold pa-6">
6
+ Privacy Policy – GoWeekdays Job
7
+ </v-card-title>
8
+
9
+ <v-card-text class="px-6 pb-6">
10
+ <p class="text-subtitle-1 mb-6">
11
+ <strong>Effective Date:</strong> January 1, 2026
12
+ </p>
13
+
14
+ <p class="mb-6">
15
+ GoWeekdays Job is a service operated by GoWeekdays Solutions OPC
16
+ ("GoWeekdays", "we", "us", or "our"). This Privacy Policy explains
17
+ how we collect, use, disclose, store, and protect personal data of
18
+ individuals who create a job profile or otherwise use the GoWeekdays
19
+ Job platform.
20
+ </p>
21
+
22
+ <p class="mb-8">
23
+ By creating a job profile or using GoWeekdays Job, you acknowledge
24
+ that you have read, understood, and agreed to the practices
25
+ described in this Privacy Policy.
26
+ </p>
27
+
28
+ <v-divider class="my-6"></v-divider>
29
+
30
+ <!-- Section 1 -->
31
+ <div class="mb-8">
32
+ <h2 class="text-h5 font-weight-bold mb-4">
33
+ 1. Scope of This Policy
34
+ </h2>
35
+ <p class="mb-3">This Privacy Policy applies to:</p>
36
+ <ul class="mb-4">
37
+ <li>
38
+ Individuals who create or maintain a job seeker profile on
39
+ GoWeekdays Job
40
+ </li>
41
+ <li>
42
+ Individuals who interact with employers through the platform
43
+ </li>
44
+ <li>
45
+ All personal data collected through web, mobile, or related
46
+ GoWeekdays Job services
47
+ </li>
48
+ </ul>
49
+ <p>
50
+ This policy should be read together with any applicable Terms of
51
+ Service.
52
+ </p>
53
+ </div>
54
+
55
+ <v-divider class="my-6"></v-divider>
56
+
57
+ <!-- Section 2 -->
58
+ <div class="mb-8">
59
+ <h2 class="text-h5 font-weight-bold mb-4">
60
+ 2. Information We Collect
61
+ </h2>
62
+ <p class="mb-4">
63
+ We collect personal data that you voluntarily provide when
64
+ creating and maintaining a job profile, including but not limited
65
+ to the following categories:
66
+ </p>
67
+
68
+ <div class="mb-5">
69
+ <h3 class="text-h6 font-weight-medium mb-3">
70
+ 2.1 Personal and Contact Information
71
+ </h3>
72
+ <ul>
73
+ <li>First name and last name</li>
74
+ <li>Professional headline</li>
75
+ <li>Email address and email verification status</li>
76
+ <li>Contact number and contact visibility preference</li>
77
+ <li>Citizenship (optional)</li>
78
+ </ul>
79
+ </div>
80
+
81
+ <div class="mb-5">
82
+ <h3 class="text-h6 font-weight-medium mb-3">
83
+ 2.2 Location and Mobility Information
84
+ </h3>
85
+ <ul>
86
+ <li>Country</li>
87
+ <li>City / State</li>
88
+ <li>Street address and postal code (optional)</li>
89
+ <li>Willingness to relocate</li>
90
+ </ul>
91
+ </div>
92
+
93
+ <div class="mb-5">
94
+ <h3 class="text-h6 font-weight-medium mb-3">
95
+ 2.3 Professional Summary
96
+ </h3>
97
+ <ul>
98
+ <li>Profile summary</li>
99
+ <li>Additional profile details</li>
100
+ </ul>
101
+ </div>
102
+
103
+ <div class="mb-5">
104
+ <h3 class="text-h6 font-weight-medium mb-3">
105
+ 2.4 Work Experience
106
+ </h3>
107
+ <ul>
108
+ <li>Job titles and company names</li>
109
+ <li>Employment locations</li>
110
+ <li>Employment start and end dates</li>
111
+ <li>Current employment status</li>
112
+ <li>Role descriptions and additional details</li>
113
+ </ul>
114
+ </div>
115
+
116
+ <div class="mb-5">
117
+ <h3 class="text-h6 font-weight-medium mb-3">2.5 Education</h3>
118
+ <ul>
119
+ <li>Level of education</li>
120
+ <li>Field of study</li>
121
+ <li>School name and location</li>
122
+ <li>Enrollment status</li>
123
+ <li>Start and end dates</li>
124
+ <li>Additional details</li>
125
+ </ul>
126
+ </div>
127
+
128
+ <div class="mb-5">
129
+ <h3 class="text-h6 font-weight-medium mb-3">
130
+ 2.6 Skills and Qualifications
131
+ </h3>
132
+ <ul>
133
+ <li>Skills</li>
134
+ <li>Certifications and licenses</li>
135
+ <li>Awards and recognitions</li>
136
+ <li>Professional groups or organizations</li>
137
+ <li>Languages and proficiency levels</li>
138
+ </ul>
139
+ </div>
140
+
141
+ <div class="mb-5">
142
+ <h3 class="text-h6 font-weight-medium mb-3">
143
+ 2.7 Additional Professional Information (Optional)
144
+ </h3>
145
+ <ul>
146
+ <li>Military service information</li>
147
+ <li>Patents</li>
148
+ <li>Publications</li>
149
+ <li>External links (e.g., portfolio, personal website)</li>
150
+ </ul>
151
+ </div>
152
+
153
+ <div class="mb-5">
154
+ <h3 class="text-h6 font-weight-medium mb-3">
155
+ 2.8 System and Metadata
156
+ </h3>
157
+ <ul>
158
+ <li>Profile creation, update, and deletion timestamps</li>
159
+ <li>Internal identifiers linked to your user account</li>
160
+ </ul>
161
+ </div>
162
+ </div>
163
+
164
+ <v-divider class="my-6"></v-divider>
165
+
166
+ <!-- Section 3 -->
167
+ <div class="mb-8">
168
+ <h2 class="text-h5 font-weight-bold mb-4">
169
+ 3. How We Use Your Information
170
+ </h2>
171
+ <p class="mb-3">
172
+ We use collected information for legitimate business and
173
+ operational purposes, including to:
174
+ </p>
175
+ <ul>
176
+ <li>Create and maintain your job seeker profile</li>
177
+ <li>Display your profile to potential employers</li>
178
+ <li>Match your profile with relevant job opportunities</li>
179
+ <li>Enable communication between job seekers and employers</li>
180
+ <li>
181
+ Improve platform features, algorithms, analytics, and user
182
+ experience
183
+ </li>
184
+ <li>Monitor platform usage and prevent misuse or fraud</li>
185
+ <li>Comply with legal and regulatory obligations</li>
186
+ </ul>
187
+ </div>
188
+
189
+ <v-divider class="my-6"></v-divider>
190
+
191
+ <!-- Section 4 -->
192
+ <div class="mb-8">
193
+ <h2 class="text-h5 font-weight-bold mb-4">
194
+ 4. Sharing and Disclosure of Information
195
+ </h2>
196
+ <p class="mb-3">
197
+ By creating a job profile, you expressly consent to the sharing of
198
+ your job profile information with:
199
+ </p>
200
+ <ul class="mb-4">
201
+ <li>
202
+ Employers and hiring organizations registered on GoWeekdays Job
203
+ </li>
204
+ <li>
205
+ Authorized hiring partners using the platform for recruitment
206
+ purposes
207
+ </li>
208
+ </ul>
209
+ <p>
210
+ We do not sell personal data to third parties. Information is
211
+ shared strictly for employment, recruitment, and platform-related
212
+ purposes.
213
+ </p>
214
+ </div>
215
+
216
+ <v-divider class="my-6"></v-divider>
217
+
218
+ <!-- Section 5 -->
219
+ <div class="mb-8">
220
+ <h2 class="text-h5 font-weight-bold mb-4">
221
+ 5. Data Visibility and User Control
222
+ </h2>
223
+ <ul>
224
+ <li>
225
+ You are responsible for the accuracy and completeness of your
226
+ job profile.
227
+ </li>
228
+ <li>
229
+ You may update, modify, or remove profile information at any
230
+ time.
231
+ </li>
232
+ <li>
233
+ Certain contact details will only be visible to employers if you
234
+ enable visibility settings.
235
+ </li>
236
+ <li>
237
+ Deleting your profile will remove it from active employer search
238
+ results, subject to applicable data retention requirements.
239
+ </li>
240
+ </ul>
241
+ </div>
242
+
243
+ <v-divider class="my-6"></v-divider>
244
+
245
+ <!-- Section 6 -->
246
+ <div class="mb-8">
247
+ <h2 class="text-h5 font-weight-bold mb-4">
248
+ 6. Legal Basis for Processing
249
+ </h2>
250
+ <p class="mb-3">
251
+ We process personal data based on one or more of the following
252
+ legal grounds:
253
+ </p>
254
+ <ul>
255
+ <li>Your consent</li>
256
+ <li>Performance of a contract or service request</li>
257
+ <li>
258
+ Legitimate interests related to operating and improving the
259
+ platform
260
+ </li>
261
+ <li>Compliance with applicable laws and regulations</li>
262
+ </ul>
263
+ </div>
264
+
265
+ <v-divider class="my-6"></v-divider>
266
+
267
+ <!-- Section 7 -->
268
+ <div class="mb-8">
269
+ <h2 class="text-h5 font-weight-bold mb-4">7. Data Retention</h2>
270
+ <p class="mb-3">
271
+ We retain personal data only for as long as necessary to:
272
+ </p>
273
+ <ul class="mb-4">
274
+ <li>Provide GoWeekdays Job services</li>
275
+ <li>Fulfill recruitment and employment-related purposes</li>
276
+ <li>Comply with legal, accounting, or regulatory requirements</li>
277
+ </ul>
278
+ <p>
279
+ Data marked for deletion may be retained in archived or backup
280
+ systems for a limited period in accordance with internal retention
281
+ policies.
282
+ </p>
283
+ </div>
284
+
285
+ <v-divider class="my-6"></v-divider>
286
+
287
+ <!-- Section 8 -->
288
+ <div class="mb-8">
289
+ <h2 class="text-h5 font-weight-bold mb-4">8. Data Security</h2>
290
+ <p class="mb-3">
291
+ We implement reasonable administrative, technical, and
292
+ organizational measures to protect personal data against
293
+ unauthorized access, alteration, disclosure, or destruction.
294
+ </p>
295
+ <p>
296
+ While we strive to protect your data, no system can guarantee
297
+ absolute security.
298
+ </p>
299
+ </div>
300
+
301
+ <v-divider class="my-6"></v-divider>
302
+
303
+ <!-- Section 9 -->
304
+ <div class="mb-8">
305
+ <h2 class="text-h5 font-weight-bold mb-4">9. Your Rights</h2>
306
+ <p class="mb-3">
307
+ Subject to applicable laws, you may have the right to:
308
+ </p>
309
+ <ul class="mb-4">
310
+ <li>Access your personal data</li>
311
+ <li>Request correction or updating of inaccurate data</li>
312
+ <li>Request deletion of your data</li>
313
+ <li>Withdraw consent where processing is based on consent</li>
314
+ <li>Object to certain types of processing</li>
315
+ </ul>
316
+ <p>
317
+ Requests may be subject to verification and legal limitations.
318
+ </p>
319
+ </div>
320
+
321
+ <v-divider class="my-6"></v-divider>
322
+
323
+ <!-- Section 10 -->
324
+ <div class="mb-8">
325
+ <h2 class="text-h5 font-weight-bold mb-4">
326
+ 10. Changes to This Privacy Policy
327
+ </h2>
328
+ <p class="mb-3">
329
+ We may update this Privacy Policy from time to time. Any changes
330
+ will be effective upon publication on the platform. Continued use
331
+ of GoWeekdays Job after changes take effect constitutes acceptance
332
+ of the updated policy.
333
+ </p>
334
+ </div>
335
+
336
+ <v-divider class="my-6"></v-divider>
337
+
338
+ <!-- Section 11 -->
339
+ <div class="mb-8">
340
+ <h2 class="text-h5 font-weight-bold mb-4">
341
+ 11. Contact Information
342
+ </h2>
343
+ <p class="mb-3">
344
+ For questions, concerns, or requests related to this Privacy
345
+ Policy or data protection, please contact:
346
+ </p>
347
+ <p class="font-weight-medium mb-2">GoWeekdays Support</p>
348
+ <p>support@goweekdays.com</p>
349
+ </div>
350
+
351
+ <v-divider class="my-6"></v-divider>
352
+
353
+ <p class="text-caption mt-6">
354
+ This Privacy Policy is intended to meet general data protection
355
+ principles and applicable Philippine data privacy requirements.
356
+ </p>
357
+ </v-card-text>
358
+ </v-card>
359
+ </v-col>
360
+ </v-row>
361
+ </template>
362
+
363
+ <script setup lang="ts">
364
+ definePageMeta({
365
+ title: "Privacy Policy – GoWeekdays Job",
366
+ layout: "plain",
367
+ });
368
+ </script>
@@ -5,6 +5,7 @@ import "vuetify/styles";
5
5
  import { createVuetify } from "vuetify";
6
6
  import { h } from "vue";
7
7
  import { Icon } from "@iconify/vue";
8
+ import { VMaskInput } from "vuetify/labs/VMaskInput";
8
9
 
9
10
  const defaultTheme = {
10
11
  dark: false,
@@ -37,6 +38,10 @@ export default defineNuxtPlugin((app) => {
37
38
  variant: "outlined",
38
39
  density: "comfortable",
39
40
  },
41
+ VMaskInput: {
42
+ variant: "outlined",
43
+ density: "comfortable",
44
+ },
40
45
  },
41
46
  theme: {
42
47
  defaultTheme: "defaultTheme",
@@ -53,6 +58,9 @@ export default defineNuxtPlugin((app) => {
53
58
  },
54
59
  },
55
60
  },
61
+ components: {
62
+ VMaskInput,
63
+ },
56
64
  });
57
65
 
58
66
  app.vueApp.use(vuetify);
@@ -0,0 +1,137 @@
1
+ declare type TJobProfileWorkExp = {
2
+ id: string;
3
+ jobTitle: string;
4
+ company: string;
5
+ country: string;
6
+ cityState?: string;
7
+ fromMonth: string;
8
+ fromYear: string;
9
+ toMonth?: string;
10
+ toYear?: string;
11
+ currentlyWorking?: boolean;
12
+ description?: string;
13
+ additionalDetails?: string;
14
+ };
15
+
16
+ declare type TJobProfileEdu = {
17
+ id: string;
18
+ levelOfEducation: string;
19
+ fieldOfStudy: string;
20
+ schoolName: string;
21
+ country: string;
22
+ location?: string;
23
+ currentlyEnrolled?: boolean;
24
+ fromMonth: string;
25
+ fromYear: string;
26
+ toMonth?: string;
27
+ toYear?: string;
28
+ additionalDetails?: string;
29
+ };
30
+
31
+ declare type TJobProfileSkill = {
32
+ id: string;
33
+ name: string;
34
+ proficiency?: string;
35
+ };
36
+
37
+ declare type TJobProfileCert = {
38
+ id: string;
39
+ title: string;
40
+ noExpiry: boolean;
41
+ fromMonth: string;
42
+ fromYear: string;
43
+ toMonth?: string;
44
+ toYear?: string;
45
+ description?: string;
46
+ };
47
+
48
+ declare type TJobProfileAward = {
49
+ id: string;
50
+ title: string;
51
+ fromMonth: string;
52
+ fromYear: string;
53
+ description?: string;
54
+ };
55
+
56
+ declare type TJobProfileGroup = {
57
+ id: string;
58
+ title: string;
59
+ active: boolean;
60
+ fromMonth: string;
61
+ fromYear: string;
62
+ toMonth?: string;
63
+ toYear?: string;
64
+ description?: string;
65
+ };
66
+
67
+ declare type TJobProfileLang = {
68
+ id: string;
69
+ language: string;
70
+ proficiency: string;
71
+ };
72
+
73
+ declare type TJobProfileMilitaryExp = {
74
+ country: string;
75
+ branch: string;
76
+ rank: string;
77
+ serving: boolean;
78
+ fromMonth: string;
79
+ fromYear: string;
80
+ toMonth?: string;
81
+ toYear?: string;
82
+ description?: string;
83
+ commendations?: string;
84
+ };
85
+
86
+ declare type TJobProfilePatent = {
87
+ id: string;
88
+ title: string;
89
+ patentNumber: string;
90
+ url?: string;
91
+ fromMonth: string;
92
+ fromYear: string;
93
+ description?: string;
94
+ };
95
+
96
+ declare type TJobProfilePublication = {
97
+ id: string;
98
+ title: string;
99
+ url?: string;
100
+ fromMonth: string;
101
+ fromYear: string;
102
+ description?: string;
103
+ };
104
+
105
+ declare type TJobProfile = {
106
+ _id?: string;
107
+ user: string;
108
+ firstName: string;
109
+ lastName: string;
110
+ headline?: string;
111
+ contact?: string;
112
+ showContact?: boolean;
113
+ email?: string;
114
+ verifiedEmail?: boolean;
115
+ country: string;
116
+ streetAddress?: string;
117
+ cityState: string;
118
+ postalCode?: string;
119
+ relocate?: boolean;
120
+ summary?: string;
121
+ citizenship?: string;
122
+ workExperience?: TJobProfileWorkExp[];
123
+ education?: TJobProfileEdu[];
124
+ skills?: TJobProfileSkill[];
125
+ certifications?: TJobProfileCert[];
126
+ additionalInfo?: string;
127
+ awards?: TJobProfileAward[];
128
+ groups?: TJobProfileGroup[];
129
+ languages?: TJobProfileLang[];
130
+ links?: string[];
131
+ militaryExperience?: TJobProfileMilitaryExp;
132
+ patents?: TJobProfilePatent[];
133
+ publications?: TJobProfilePublication[];
134
+ createdAt?: Date | String;
135
+ updatedAt?: Date | String;
136
+ deletedAt?: Date | String;
137
+ };