most redacted. searching for more
All checks were successful
Rebuild signaller for deprived.dev to rebuild site / test_service (push) Successful in 16s

This commit is contained in:
BOTAlex 2025-10-09 05:51:41 +02:00
parent 4205712d32
commit 2f5aa50c84
11 changed files with 240 additions and 228 deletions

View file

@ -1,4 +1,6 @@
<script lang="ts"> <script lang="ts">
import re from "@ts/Redaction/Redactor";
// Left side // Left side
import NameAndImage from "./comps/NameAndImage.svelte"; import NameAndImage from "./comps/NameAndImage.svelte";
import ShortProfile from "./comps/ShortProfile.svelte"; import ShortProfile from "./comps/ShortProfile.svelte";
@ -7,8 +9,8 @@
// Right side // Right side
import Profile from "./comps/Profile.svelte"; import Profile from "./comps/Profile.svelte";
import Education from "./comps/Education.svelte";
import Experience from "./comps/Experience.svelte"; import Experience from "./comps/Experience.svelte";
import Education from "./comps/Education.svelte";
import BiggestFlex from "./comps/BiggestFlex.svelte"; import BiggestFlex from "./comps/BiggestFlex.svelte";
import TableOfProjects from "./comps/TableOfProjects.svelte"; import TableOfProjects from "./comps/TableOfProjects.svelte";
@ -44,8 +46,8 @@
} }
</script> </script>
<title>Zhentao Wei's CV {getFormattedDate()}</title> <title>{$re?.name ?? "Alex"}'s CV {getFormattedDate()}</title>
<meta content="Zhentao Wei's CV" property="og:title" /> <meta content="{$re?.name ?? 'Alex'}'s CV" property="og:title" />
<meta <meta
content="This CV is made completely with svelte + html + css + js" content="This CV is made completely with svelte + html + css + js"
property="og:description" property="og:description"
@ -73,7 +75,7 @@
<div class="NotoSans cv-config cv-container-container include-in-print"> <div class="NotoSans cv-config cv-container-container include-in-print">
<div class="cv-container sections decorations"> <div class="cv-container sections decorations">
<div id="left-section" class="bg-grid-cv"> <div id="left-section" class="bg-grid-cv flex justify-center">
<LeftTopDecor /> <LeftTopDecor />
<BottomRightDecor Style="pointer-events: none;" /> <BottomRightDecor Style="pointer-events: none;" />
<div <div
@ -247,13 +249,10 @@
> div:last-child { > div:last-child {
z-index: 1; z-index: 1;
width: 100%; width: 17.5rem;
left: 0; left: 0;
display: grid;
place-items: center;
padding-top: 30mm; padding-top: 30mm;
padding-bottom: 30mm; padding-bottom: 30mm;
} }

View file

@ -1,27 +1,33 @@
<script lang="ts">
import re from "@ts/Redaction/Redactor";
</script>
<div class="container"> <div class="container">
<div> <div>
<b style="text-align:left;"> <b style="text-align:left;"> Contact </b>
Contact
</b>
</div> </div>
<div class="table-display"> <div class="table-display">
<div class="table-item"> <div class="table-item">
<div>Email</div> <div>Email</div>
<div>Zhen@deprived.dev</div> <div>{$re?.email ?? "alex@deprived.dev"}</div>
</div> </div>
<div class="table-item"> <div class="table-item">
<div>Phone</div> <div>Phone</div>
<div>+45 42535723</div> <div>{$re?.phone ?? "1-800-273-8255"}</div>
</div> </div>
<div class="table-item"> <div class="table-item">
<div>LinkedIn</div> <div>LinkedIn</div>
<a href="https://www.linkedin.com/in/zhentao-wei-3a3a0a182/">Zhentao-Wei</a> <a
href={$re?.linkedIn.link ??
"https://www.youtube.com/watch?v=PaPotS8GSpc"}
>{$re?.linkedIn.text ?? "cool video lmao"}</a
>
</div> </div>
</div> </div>
</div> </div>
<style lang="scss"> <style lang="scss">
.container{ .container {
display: grid; display: grid;
place-items: center; place-items: center;
width: 70%; width: 70%;
@ -49,8 +55,8 @@
text-decoration: underline; text-decoration: underline;
} }
> div, > a { > div,
> a {
&:first-child { &:first-child {
width: 35%; width: 35%;
font-size: 4mm; font-size: 4mm;

View file

@ -6,6 +6,13 @@
import EmphasysLogo from "$lib/zhen/cv-comps/EmphasysLogo.png"; import EmphasysLogo from "$lib/zhen/cv-comps/EmphasysLogo.png";
import IconAndText2 from "./IconAndText2.svelte"; import IconAndText2 from "./IconAndText2.svelte";
import re from "@src/ts/Redaction/Redactor";
import env, { initEnv } from "@src/ts/EnvHandler";
import onMount from "@src/optimizers/onMount";
onMount(() => {
initEnv();
});
</script> </script>
<div class="container h-10"> <div class="container h-10">
@ -13,20 +20,22 @@
<b style="text-align:left;"> Education </b> <b style="text-align:left;"> Education </b>
</div> </div>
<div class="flex justify-center p-2 w-full"> <div class="flex justify-center p-2 w-full">
<IconAndText2 logo={DTU_Logo}> <IconAndText2
<b>DTU</b><br /> logo={$re?.education[0].imageId.replace("[PB]", env.POCKETBASE_URL) ?? ""}
>
<b>{$re?.education[0].name ?? ""}</b><br />
<p style="font-size: 0.5rem;">AI and data</p> <p style="font-size: 0.5rem;">AI and data</p>
</IconAndText2> </IconAndText2>
<IconAndText2 logo={NextLogo}> <IconAndText2 logo={$re?.education[1].imageId ?? ""}>
<b>Next</b><br /> <b>{$re?.education[0].name ?? ""}</b><br />
<p style="font-size: 0.5rem;">Computer science</p> <p style="font-size: 0.5rem;">Computer science</p>
</IconAndText2> </IconAndText2>
<IconAndText2 logo={SasLogo}> <IconAndText2 logo={SasLogo}>
<b>Master class</b><br /> <b>Master class</b><br />
<p style="font-size: 0.5rem;">SAS Programming</p> <p style="font-size: 0.5rem;">SAS Programming</p>
</IconAndText2> </IconAndText2>
<IconAndText2 logo={EmphasysLogo}> <IconAndText2 logo={$re?.education[2].imageId ?? ""}>
<span class="font-semibold">Emphasys center</span><br /> <span class="font-semibold">{$re?.education[2].name ?? ""}</span><br />
<p style="font-size: 0.5rem;">VR development</p> <p style="font-size: 0.5rem;">VR development</p>
</IconAndText2> </IconAndText2>
</div> </div>
@ -44,4 +53,3 @@
} }
} }
</style> </style>

View file

@ -1,11 +1,5 @@
<script> <script>
import placeholder from "$lib/zhen/cv-comps/400x400.png"; import re from "@src/ts/Redaction/Redactor";
import MakerspaceLogo from "$lib/zhen/cv-comps/MakerspaceLogo.png";
import EposLogo from "$lib/zhen/cv-comps/EposLogo.png";
import KhoraLogo from "$lib/zhen/cv-comps/KhoraLogo.jpg";
import GrazperAILogo from "$lib/zhen/cv-comps/GrazperLogo.jpg";
import YaaummaLogo from "$lib/zhen/cv-comps/YaaummaLogo.png";
import IconAndText from "./IconAndText.svelte"; import IconAndText from "./IconAndText.svelte";
</script> </script>
@ -15,37 +9,37 @@
</div> </div>
<div class="table"> <div class="table">
<div class="table-item"> <div class="table-item">
<IconAndText logo={YaaummaLogo}> <IconAndText logo={$re?.experience[0].imageId ?? ""}>
<b>Full-stack</b><br /> <b>Full-stack</b><br />
Yaaumma<br /> {$re?.experience[0].name}<br />
<i>Feb 2025 - Now</i> <i>Feb 2025 - Now</i>
</IconAndText> </IconAndText>
</div> </div>
<div class="table-item"> <div class="table-item">
<IconAndText logo={GrazperAILogo}> <IconAndText logo={$re?.experience[1].imageId ?? ""}>
<b>Data annotator</b><br /> <b>Data annotator</b><br />
GrazperAI<br /> {$re?.experience[1].name}<br />
<i>Jul 2024 - Now</i> <i>Jul 2024 - Now</i>
</IconAndText> </IconAndText>
</div> </div>
<div class="table-item"> <div class="table-item">
<IconAndText logo={MakerspaceLogo}> <IconAndText logo={$re?.experience[2].imageId ?? ""}>
<b>3D printer manager</b> - Volunteer<br /> <b>3D printer manager</b> - Volunteer<br />
Makerspace - kildevæld Kulturcenter<br /> {$re?.experience[2].name}<br />
<i>Nov 2023 - Now</i> <i>Nov 2023 - Now</i>
</IconAndText> </IconAndText>
</div> </div>
<div class="table-item"> <div class="table-item">
<IconAndText logo={EposLogo}> <IconAndText logo={$re?.experience[3].imageId ?? ""}>
<b>Machine Learning Engineer</b> - Short term intern<br /> <b>Machine Learning Engineer</b> - Short term intern<br />
Product design department - Epos<br /> {$re?.experience[3].name}<br />
<i>Apr 2024 - Apr 2024</i> <i>Apr 2024 - Apr 2024</i>
</IconAndText> </IconAndText>
</div> </div>
<div class="table-item"> <div class="table-item">
<IconAndText logo={KhoraLogo}> <IconAndText logo={$re?.experience[4].imageId ?? ""}>
<b>Assistant</b> - Short term intern<br /> <b>Assistant</b> - Short term intern<br />
Khora Virtual Reality<br /> {$re?.experience[4].name}<br />
<i>Oct 2020 - Oct 2020</i> <i>Oct 2020 - Oct 2020</i>
</IconAndText> </IconAndText>
</div> </div>

View file

@ -5,9 +5,12 @@
export let fontSize: string = "3mm"; export let fontSize: string = "3mm";
export let lineHeight: string = "3.1mm"; export let lineHeight: string = "3.1mm";
import env, { initEnv } from "@src/ts/EnvHandler";
import onMount from "@e/onMount"; import onMount from "@e/onMount";
onMount(() => { onMount(() => {
imageCaption = logo.split(/(\\|\/)/g).pop(); imageCaption = logo.split(/(\\|\/)/g).pop();
initEnv();
}); });
let imageCaption: undefined | string; // Not a high piority, you get the file name and thats it let imageCaption: undefined | string; // Not a high piority, you get the file name and thats it
@ -15,7 +18,7 @@
<div class="container"> <div class="container">
<img <img
src={logo} src={logo.replace("[PB]", env.POCKETBASE_URL) ?? ""}
class="bg-white w-10 h-10 object-contain rounded shadow" class="bg-white w-10 h-10 object-contain rounded shadow"
alt={imageCaption} alt={imageCaption}
width={logoWidths} width={logoWidths}
@ -37,7 +40,5 @@
text-align: start; text-align: start;
} }
} }
</style> </style>

View file

@ -2,10 +2,11 @@
export let logo: string; export let logo: string;
export let logoWidths: string = "35%"; export let logoWidths: string = "35%";
import onMount from "@e/onMount"; import onMount from "@e/onMount";
import env, { initEnv } from "@src/ts/EnvHandler";
onMount(() => { onMount(() => {
imageCaption = logo.split(/(\\|\/)/g).pop(); imageCaption = logo.split(/(\\|\/)/g).pop();
initEnv();
}); });
let imageCaption: undefined | string; // Not a high piority, you get the file name and thats it let imageCaption: undefined | string; // Not a high piority, you get the file name and thats it
@ -14,18 +15,15 @@
<div class=" h-full container flex"> <div class=" h-full container flex">
<div class="flex h-full w-6 items-center overflow-hidden rounded"> <div class="flex h-full w-6 items-center overflow-hidden rounded">
<img <img
src={logo} src={logo.replace("[PB]", env.POCKETBASE_URL) ?? ""}
class=" w-6 h-6 object-cover shadow" class=" w-6 h-6 object-cover shadow"
alt={imageCaption} alt={imageCaption}
width={logoWidths} width={logoWidths}
/> />
</div> </div>
<div class="px-1 ml-1 h-full text-[0.5rem]" > <div class="px-1 ml-1 h-full text-[0.5rem]">
<span class="inline " > <span class="inline">
<slot /> <slot />
</span> </span>
</div> </div>
</div> </div>

View file

@ -1,14 +1,14 @@
<script lang="ts"> <script lang="ts">
import NamePlate from "./NamePlate.svelte"; import NamePlate from "./NamePlate.svelte";
import selfie from "$lib/zhen/cv-comps/VRNerd.jpg" import selfie from "$lib/zhen/cv-comps/VRNerd.jpg";
import zylveterSus from "$lib/zhen/cv-comps/zylveterSus.png"
</script> </script>
<div class="nameAndImageContainer"> <div class="nameAndImageContainer">
<NamePlate/> <NamePlate />
<div class="mt-4 w-48 h-48 overflow-hidden shadow-xl rounded-lg flex justify-center items-center"> <div
<img src={selfie} class="selfie-constraints object-cover" alt="Zhentao Wei"/> class="mt-4 w-48 h-48 overflow-hidden shadow-xl rounded-lg flex justify-center items-center"
>
<img src={selfie} class="selfie-constraints object-cover" alt="Selfie" />
</div> </div>
</div> </div>
@ -18,9 +18,7 @@
place-items: center; place-items: center;
} }
.selfie-constraints{ .selfie-constraints {
max-width: 100%; max-width: 100%;
} }
</style> </style>

View file

@ -1,16 +1,16 @@
<script lang="ts">
import re from "@ts/Redaction/Redactor";
</script>
<div class="name-plate-container"> <div class="name-plate-container">
<span style="text-align: center;"> <span style="text-align: center;">
<b> <b>{$re?.name ?? "BOTAlex"}</b><br />
Zhentao Wei
</b><br/>
(He/Him) (He/Him)
</span> </span>
</div> </div>
<style> <style>
.name-plate-container{ .name-plate-container {
display: grid; display: grid;
place-items: center; place-items: center;
width: 60%; width: 60%;

View file

@ -1,23 +1,27 @@
<script lang="ts">
import re from "@ts/Redaction/Redactor";
</script>
<div class="container"> <div class="container">
<div> <div>
<b style="text-align:left;"> <b style="text-align:left;"> Other </b>
Other
</b>
</div> </div>
<div class="table-display"> <div class="table-display">
<div class="table-item"> <div class="table-item">
<div>Itch.io</div> <div>Itch.io</div>
<a href="https://github.com/MagicBOTAlex">botalex.itch.io</a> <a href={$re?.itch.link ?? "https://www.youtube.com/watch?v=PaPotS8GSpc"}
>{$re?.itch.text ?? "The same video"}</a
>
</div> </div>
<div class="table-item"> <div class="table-item">
<div>Github</div> <div>Github</div>
<a href="https://botalex.itch.io/">@MagicBOTAlex</a> <a href="https://github.com/MagicBOTAlex">@MagicBOTAlex</a>
</div> </div>
</div> </div>
</div> </div>
<style lang="scss"> <style lang="scss">
.container{ .container {
display: grid; display: grid;
place-items: center; place-items: center;
width: 70%; width: 70%;
@ -45,7 +49,8 @@
text-decoration: underline; text-decoration: underline;
} }
> div, > a { > div,
> a {
&:first-child { &:first-child {
width: 35%; width: 35%;
font-size: 4mm; font-size: 4mm;

View file

@ -1,20 +1,23 @@
<script lang="ts">
import re from "@ts/Redaction/Redactor";
</script>
<div class="short-profile-container"> <div class="short-profile-container">
<div> <div>
<b style="text-align:left;"> <b style="text-align:left;"> Short profile </b>
Short profile
</b>
</div> </div>
<div> <div>
◾ Full-stack at Yaaumma <br> ◾ Full-stack at {$re?.shortProfileHiddenContent[0] ?? "Deprived devs"}
◾ "AI and data" at DTU. <br> <br />
◾ Working at <a class="underline" href="https://grazper.com/">GrazperAI</a> <br/> ◾ "AI and data" at {$re?.shortProfileHiddenContent[1] ?? "some uni"}.
◾ Volunteer at Kildevæld Makerspace. <br />
◾ Working at {$re?.shortProfileHiddenContent[2] ?? "somewhere"} <br />
◾ Volunteer at {$re?.shortProfileHiddenContent[3] ?? "Deprived devs"}.
</div> </div>
</div> </div>
<style> <style>
.short-profile-container{ .short-profile-container {
display: grid; display: grid;
place-items: center; place-items: center;
width: 70%; width: 70%;

View file

@ -32,7 +32,7 @@ class Redactor implements Readable<Profile | undefined> {
const unredactHash = hashResJson.response; const unredactHash = hashResJson.response;
initEnv(); initEnv();
const url = `${env.POCKETBASE_URL}/api/files/redacted_content/${unredactHash}/redacted_cv_info_amhz90nhr7.json`; const url = `${env.POCKETBASE_URL}/api/collections/redacted_content/records/${unredactHash}`;
const res = await fetch(url, { const res = await fetch(url, {
method: "GET", method: "GET",
@ -41,7 +41,7 @@ class Redactor implements Readable<Profile | undefined> {
if (!res.ok) throw new Error(`HTTP ${res.status}`); if (!res.ok) throw new Error(`HTTP ${res.status}`);
const data = await res.json(); const data = await res.json();
this.unredactedProfile = parseProfile(data); this.unredactedProfile = parseProfile(data.json);
this.notify(); // <-- tell Svelte to update this.notify(); // <-- tell Svelte to update
return this.unredactedProfile; return this.unredactedProfile;
} }