Skip to content

Commit 555c4ff

Browse files
committed
cv maker, release alfa
1 parent b61e729 commit 555c4ff

File tree

7 files changed

+221
-124
lines changed

7 files changed

+221
-124
lines changed

docs/cv-maker/assets/index-BEKBKFMb.css

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/cv-maker/assets/index-C8cJAPg2.js

Lines changed: 0 additions & 30 deletions
This file was deleted.

docs/cv-maker/assets/index-CpA7MgDL.css

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/cv-maker/assets/index-pP8_YhaN.js

Lines changed: 30 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/cv-maker/index.html

Lines changed: 124 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,69 +2,157 @@
22

33
<head>
44
<meta charset="utf-8">
5-
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1">
66
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css"
77
integrity="sha512-Evv84Mr4kqVGRNSgIGL/F/aIDqQb7xQ2vcrdIwxfjThSH8CSR7PBEakCr51Ck+w+/U6swU2Im1vVX0SVk9ABhg=="
88
crossorigin="anonymous" referrerpolicy="no-referrer" />
9-
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css"
10-
integrity="sha512-NhSC1YmyruXifcj/KFRWoC561YpHpc5Jtzgvbuzx5VozKpWvQ+4nXhPdFgmx8xqexRcpAglTj9sIBWINXa8x5w=="
11-
crossorigin="anonymous" referrerpolicy="no-referrer" />
129
<script defer src="https://cdn.jsdelivr.net/npm/@monaco-editor/[email protected]/lib/umd/monaco-loader.min.js"></script>
10+
1311
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>✍️</text></svg>">
1412
<title>CV Maker</title>
15-
<script type="module" crossorigin src="./assets/index-C8cJAPg2.js"></script>
16-
<link rel="stylesheet" crossorigin href="./assets/index-CpA7MgDL.css">
13+
14+
<script async src="https://www.googletagmanager.com/gtag/js?id=G-FKWW5S34LH"></script>
15+
<script>
16+
window.dataLayer = window.dataLayer || [];
17+
function gtag(){dataLayer.push(arguments);}
18+
gtag('js', new Date());
19+
20+
gtag('config', 'G-FKWW5S34LH');
21+
</script>
22+
<script type="module" crossorigin src="./assets/index-pP8_YhaN.js"></script>
23+
<link rel="stylesheet" crossorigin href="./assets/index-BEKBKFMb.css">
1724
</head>
1825

19-
<body x-data style="display: flex; flex-direction: column;">
26+
<body x-data="state" class="flex flex-col p-16 pt-8">
27+
<!-- navigation -->
28+
<div
29+
class="no-print pb-2 flex gap-2 justify-center"
30+
x-init="$watch('mode', value => $dispatch('mode-was-changed', value))"
31+
>
2032

21-
<div style="padding-bottom: 20px;" class="no-print">
22-
<label class="menu-item" :class="{ 'active': $store.state.mode === 'editor' }">
23-
<input type="radio" value="editor" x-model="$store.state.mode" /> Editor
33+
<select
34+
class="self-start"
35+
x-model="currentResume"
36+
@change="$dispatch('init-resume')"
37+
>
38+
<template x-for="resume in availableResumes" :key="resume.id">
39+
<option
40+
:value="resume.id"
41+
x-text="resume.name"
42+
:selected="currentResume === resume.id"
43+
V></option>
44+
</template>
45+
</select>
46+
47+
<div class="mx-auto">
48+
<label
49+
class="hover:cursor-pointer text-lg"
50+
:class="{ 'text-orange-400 underline': mode === 'editor' }"
51+
>
52+
<input
53+
type="radio"
54+
class="appearance-none"
55+
value="editor"
56+
x-model="mode"
57+
/> Editor
2458
</label>
2559

2660
<label
27-
class="menu-item"
28-
:class="{ 'active': $store.state.mode === 'view' }"
29-
x-show="!$store.state.editorHasError" x-transition
61+
class="hover:cursor-pointer text-lg"
62+
:class="{ 'text-orange-400 underline': mode === 'view' }"
63+
x-show="!editorHasError" x-transition
3064
>
3165
<input
3266
type="radio"
3367
value="view"
34-
x-model="$store.state.mode"
68+
x-model="mode"
69+
class="appearance-none"
3570
/> View
3671
</label>
72+
</div>
73+
3774

3875
</div>
3976

40-
<!-- code editor -->
41-
<div x-show="$store.state.mode == 'editor'">
42-
<div x-data="sections">
43-
<template x-for="mode in sections">
44-
<label
45-
class="menu-item"
46-
:class="{ 'active': $store.state.editorSection === mode.id }"
47-
>
48-
<input
49-
type="radio"
50-
:value="mode.id"
51-
x-model="$store.state.editorSection"
52-
@change="$dispatch('section-changed')"
53-
/>
54-
<span x-text="mode.label"></span>
55-
</label>
56-
</template>
77+
<!-- code editor and code section -->
78+
<div
79+
class="flex gap-2 pb-2"
80+
x-show="mode == 'editor'"
81+
>
82+
<div class="self-start">
83+
<button
84+
class="btn bg-sky-500 hover:bg-sky-700 text-sm"
85+
x-on:click="$dispatch('save')"
86+
>Save as</button>
87+
<button
88+
class="btn bg-[#DC382D] hover:bg-[#B93224]"
89+
x-on:click="$dispatch('delete')"
90+
>Delete</button>
91+
</div>
92+
93+
<div
94+
class="self-end ml-auto"
95+
>
96+
<select
97+
class=" bg-white border border-gray-300 py-2 px-3 rounded focus:outline-none focus:ring-0"
98+
@change="$dispatch('section-changed')"
99+
x-model="editorSection"
100+
>
101+
<template x-for="section in $store.sections" :key="section.id">
102+
<option
103+
:value="section.id"
104+
:selected="editorSection === section.id"
105+
x-text="section.label"
106+
></option>
107+
</template>
108+
</select>
57109
</div>
58110

59-
<div
60-
id="code-editor"
61-
></div>
62111
</div>
63112

64-
<div x-show="$store.state.mode == 'view'">
65-
<div x-html="$store.state.resumeHtml"></div>
113+
<div
114+
class="w-full h-full"
115+
x-show="mode == 'editor'"
116+
id="code-editor"
117+
></div>
118+
119+
<div
120+
class="self-center"
121+
x-show="mode == 'view'"
122+
>
123+
<div
124+
x-html="resumeHtml"
125+
></div>
66126
</div>
67127

128+
<button
129+
@click="window.print()"
130+
x-show="mode == 'view'"
131+
class="no-print hover:cursor-pointer fixed top-10 right-20 bg-blue-500 hover:bg-blue-600 text-white py-2 px-4 rounded-full shadow-lg"
132+
>
133+
Print
134+
</button>
135+
136+
<footer class="bg-gray-100 text-gray-700 py-4 no-print mt-20">
137+
<div class="container mx-auto text-center">
138+
<p>© 2025 Created by Aleksandr Kondaurov</p>
139+
<p>
140+
<a
141+
target="_blank"
142+
href="https://www.linkedin.com/in/alexander-kondaurov/"
143+
rel="noopener noreferrer"
144+
class="fa-brands fa-lg fa-linkedin text-blue-300"
145+
></a>
146+
<a
147+
target="_blank"
148+
href="https://github.com/orgs/effect-ak/repositories"
149+
rel="noopener noreferrer"
150+
class="fa-brands fa-lg fa-github"
151+
></a>
152+
</p>
153+
</div>
154+
</footer>
155+
68156
</body>
69157

70158
</html>

docs/cv-maker/john-doe.json

Lines changed: 57 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"coverLetter": {
1212
"position": "React developer",
1313
"content": [
14-
"I'm really good at fronted and I will be <b>great asset</b> at your company",
14+
"I'm really good at frontend and I will be <b>great asset</b> in your company",
1515
"Your company needs a developer who can work remotely. I've experience working experience in distibuted teams"
1616
]
1717
},
@@ -41,6 +41,62 @@
4141
}
4242
]
4343
},
44+
"employmentHistory": [
45+
{
46+
"companyName": "Green been",
47+
"workType": "hybrid",
48+
"location": { "country": "Finland", "city": "Helsinki" },
49+
"companyDescription": "Software development outsourcing company",
50+
"website": "https://google.com/",
51+
"position": "Senior Software Engineer",
52+
"start": "2024-04",
53+
"end": "2024-12",
54+
"projects": [
55+
{
56+
"order": 1,
57+
"client": {
58+
"name": "Unknown client",
59+
"description": "Food Company"
60+
},
61+
"title": "Market place",
62+
"roles": ["Typescript frontend developer"],
63+
"stack": ["typescript", "vitest", "aws"],
64+
"tools": ["jenkins", "bitbucket", "browserstack", "contentful", "jira", "scrum", "confluence"],
65+
"achivements": [
66+
{
67+
"technical": "Developed a frontend application using AlpineJS and HTMX",
68+
"human": "Developed a frontend application using AlpineJS and HTMX"
69+
}
70+
]
71+
}
72+
]
73+
},
74+
{
75+
"companyName": "Nice coffee",
76+
"workType": "on-site",
77+
"companyDescription": "Software development outsourcing company",
78+
"location": { "country": "United Kingdom", "city": "London" },
79+
"website": "https://google.com/",
80+
"position": "Senior Software Engineer",
81+
"start": "2020-01",
82+
"end": "2023-12",
83+
"projects": [
84+
{
85+
"order": 1,
86+
"title": "Market place",
87+
"roles": ["UX Designer", "Frontend Developer"],
88+
"stack": ["typescript"],
89+
"tools": ["figma"],
90+
"achivements": [
91+
{
92+
"technical": "Designed",
93+
"human": "Designed a nice web page"
94+
}
95+
]
96+
}
97+
]
98+
}
99+
],
44100
"technologies": [
45101
{
46102
"id": "typescript",
@@ -224,61 +280,5 @@
224280
"category": "framework",
225281
"url": "https://en.wikipedia.org/wiki/Akka_(toolkit)"
226282
}
227-
],
228-
"employmentHistory": [
229-
{
230-
"companyName": "Green been",
231-
"workType": "hybrid",
232-
"location": { "country": "Finland", "city": "Helsinki" },
233-
"companyDescription": "Software development outsourcing company",
234-
"website": "https://google.com/",
235-
"position": "Senior Software Engineer",
236-
"start": "2024-04",
237-
"end": "2024-12",
238-
"projects": [
239-
{
240-
"order": 1,
241-
"client": {
242-
"name": "Unknown client",
243-
"description": "Food Company"
244-
},
245-
"title": "Market place",
246-
"roles": ["Typescript frontend developer"],
247-
"stack": ["typescript", "vitest", "aws"],
248-
"tools": ["jenkins", "bitbucket", "browserstack", "contentful", "jira", "scrum", "confluence"],
249-
"achivements": [
250-
{
251-
"technical": "Developed a frontend application using AlpineJS and HTMX",
252-
"human": "Developed a frontend application using AlpineJS and HTMX"
253-
}
254-
]
255-
}
256-
]
257-
},
258-
{
259-
"companyName": "Nice coffee",
260-
"workType": "on-site",
261-
"companyDescription": "Software development outsourcing company",
262-
"location": { "country": "United Kingdom", "city": "London" },
263-
"website": "https://google.com/",
264-
"position": "Senior Software Engineer",
265-
"start": "2020-01",
266-
"end": "2023-12",
267-
"projects": [
268-
{
269-
"order": 1,
270-
"title": "Market place",
271-
"roles": ["UX Designer", "Frontend Developer"],
272-
"stack": ["typescript"],
273-
"tools": ["figma"],
274-
"achivements": [
275-
{
276-
"technical": "Designed",
277-
"human": "Designed a nice web page"
278-
}
279-
]
280-
}
281-
]
282-
}
283283
]
284284
}

docs/telegram-bot-playground/index.html

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,15 @@
99
<link rel="icon" type="image/png" sizes="32x32" href="./favicon.ico">
1010

1111

12+
<script async src="https://www.googletagmanager.com/gtag/js?id=G-FKWW5S34LH"></script>
13+
<script>
14+
window.dataLayer = window.dataLayer || [];
15+
function gtag(){dataLayer.push(arguments);}
16+
gtag('js', new Date());
17+
18+
gtag('config', 'G-FKWW5S34LH');
19+
</script>
20+
1221
<script type="module" crossorigin src="./assets/index-BDzOqd_w.js"></script>
1322
<link rel="stylesheet" crossorigin href="./assets/index-BEXZ83O-.css">
1423
</head>

0 commit comments

Comments
 (0)