skills
This commit is contained in:
parent
e1c965efb4
commit
e2794dae17
|
@ -0,0 +1,56 @@
|
||||||
|
<script lang="ts">
|
||||||
|
|
||||||
|
import type { Skill } from '$lib/config/skills';
|
||||||
|
import list from '$lib/config/skills';
|
||||||
|
|
||||||
|
function sortSkills(skills: Skill[]): Skill[] {
|
||||||
|
return skills.sort((a, b) => {
|
||||||
|
if (a.level < b.level) return -1;
|
||||||
|
if (a.level > b.level) return 1;
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{#each list as category}
|
||||||
|
<div class="collapse collapse-arrow outline-1 outline-secondary">
|
||||||
|
<input type="radio" name="skillAccordion" />
|
||||||
|
<div class=" flex flex-row collapse-title font-semibold space-x-4">
|
||||||
|
<i class="text-2xl">{category.icon}</i>
|
||||||
|
<h2 class="text-2xl">{category.title}</h2>
|
||||||
|
<!-- Progresses are stupidly subjective and I don't know how to grade this so no progress bars for now.
|
||||||
|
<ProgressBar class="min-w-[100px] h-2" value={category.level} max={100} /> -->
|
||||||
|
</div>
|
||||||
|
<div class="collapse-content">
|
||||||
|
<div class="flex flex-col justify-center m-2 space-y-8">
|
||||||
|
{#if category.subCategories}
|
||||||
|
{#each category.subCategories as subCategory (subCategory.title)}
|
||||||
|
<div class="flex flex-col space-y-2">
|
||||||
|
<div class="flex flex-row justify-center items-center">
|
||||||
|
<p class="text-xl font-medium m-2">{subCategory.title}</p>
|
||||||
|
<!-- <ProgressBar value={subCategory.level} max={100} /> -->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex flex-wrap justify-center space-x-2 m-2">
|
||||||
|
{#if subCategory.skills}
|
||||||
|
{#each sortSkills(subCategory.skills) as skill (skill.title)}
|
||||||
|
<span
|
||||||
|
class="mt-2 badge {skill.level === 'A'
|
||||||
|
? 'badge-primary'
|
||||||
|
: skill.level === 'B'
|
||||||
|
? 'badge-accent'
|
||||||
|
: 'badge-primary badge-ghost'}"
|
||||||
|
>
|
||||||
|
{skill.title}
|
||||||
|
</span>
|
||||||
|
{/each}
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/each}
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/each}
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
<script lang="ts">
|
||||||
|
import IndividualSkills from './IndividualSkills.svelte';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<section
|
||||||
|
class="card flex flex-col items-center justify-center mx-auto w-full bg-base-300 p-8 m-8 space-y-4"
|
||||||
|
id="skills"
|
||||||
|
>
|
||||||
|
<h2 class="text-4xl m-2">My skillset</h2>
|
||||||
|
<p class="text-center">
|
||||||
|
Below is a list of tools, frameworks, languages and skills <br />I use or have used to
|
||||||
|
varying degrees and a subjective rating
|
||||||
|
</p>
|
||||||
|
<span class="h6 m-2">based on my proficiency:</span>
|
||||||
|
<div class="flex flex-wrap justify-center space-x-2 m-2">
|
||||||
|
<span class="badge badge-primary badge-lg">Proficient</span>
|
||||||
|
<span class="badge badge-accent badge-lg">Experienced</span>
|
||||||
|
<span class="badge-ghost badge-lg">Limited Experience</span>
|
||||||
|
</div>
|
||||||
|
<div class="flex flex-col items-center justify-center mx-auto space-x-2 space-y-2">
|
||||||
|
<IndividualSkills />
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
|
@ -0,0 +1,146 @@
|
||||||
|
export type Level = 'A' | 'B' | 'C' // A: Proficient, B: Experienced, C: limited Experience
|
||||||
|
|
||||||
|
export interface Skill {
|
||||||
|
title: string
|
||||||
|
level: Level
|
||||||
|
}
|
||||||
|
export interface SubCategory {
|
||||||
|
title: string
|
||||||
|
level: number
|
||||||
|
skills: Skill[]
|
||||||
|
}
|
||||||
|
export interface Category {
|
||||||
|
icon: string
|
||||||
|
title: string
|
||||||
|
level: number
|
||||||
|
subCategories: SubCategory[]
|
||||||
|
}
|
||||||
|
// prettier-ignore
|
||||||
|
const list: Category[] = [
|
||||||
|
{ icon: '🚀', title:'Software Development', level: 70, subCategories: [
|
||||||
|
{ title:'Programming Languages', level: 75, skills: [
|
||||||
|
{ title: 'JavaScript/TypeScript', level: 'A' },
|
||||||
|
{ title: 'Python', level: 'B' },
|
||||||
|
{ title: 'Bash', level: 'B' },
|
||||||
|
{ title: 'SQL', level: 'B' },
|
||||||
|
{ title: 'Rust', level: 'C' },
|
||||||
|
]},
|
||||||
|
{ title:'Web Frameworks', level: 70, skills: [
|
||||||
|
{ title: 'Svelte(Kit)', level: 'A' },
|
||||||
|
{ title: 'React', level: 'C'},
|
||||||
|
]},
|
||||||
|
{ title:'Configuration and Performance', level: 70, skills: [
|
||||||
|
{ title: 'SEO', level: 'B'},
|
||||||
|
{ title: 'Performance', level: 'B'},
|
||||||
|
{ title: 'Obfuscation', level: 'B'},
|
||||||
|
]},
|
||||||
|
{ title:'Databases', level: 70, skills: [
|
||||||
|
{ title: 'PostgreSQL', level: 'A' },
|
||||||
|
{ title: 'MariaDB', level: 'B' },
|
||||||
|
{ title: 'MongoDB', level: 'C' }
|
||||||
|
]},
|
||||||
|
{ title:'Testing & Validation', level: 50, skills: [
|
||||||
|
{ title: 'ajv', level: 'A' },
|
||||||
|
{ title: 'Playwright', level: 'B'},
|
||||||
|
{ title: 'SEO, performance optimizations', level: 'B'},
|
||||||
|
]},
|
||||||
|
]},
|
||||||
|
{ icon: '🔁🔁', title:'DevOps', level: 70, subCategories: [
|
||||||
|
{ title:'Infrastructure & Configuration Management', level: 80, skills: [
|
||||||
|
{ title: 'Terraform & tooling', level: 'A'},
|
||||||
|
{ title: 'Ansible', level: 'A'},
|
||||||
|
{ title: 'Docker, Docker-Compose', level: 'A' },
|
||||||
|
{ title: 'Kubernetes', level: 'C'},
|
||||||
|
]},
|
||||||
|
{ title: 'Version Control & CI/CD', level: 90, skills: [
|
||||||
|
{ title: 'Git', level: 'A' },
|
||||||
|
{ title: 'GitHub & Gitea Ecosystem', level: 'A' },
|
||||||
|
{ title: 'Gitlab Ecosystem', level: 'B' }
|
||||||
|
]},
|
||||||
|
{ title: 'Monitoring & Observability ', level: 90, skills: [
|
||||||
|
{ title: 'Grafana', level: 'B' },
|
||||||
|
{ title: 'Prometheus', level: 'B' },
|
||||||
|
]},
|
||||||
|
]},
|
||||||
|
{ icon: '⛅', title:'Cloud Computing', level: 70, subCategories: [
|
||||||
|
{ title:'AWS', level: 80, skills: [
|
||||||
|
{ title: 'EC2', level: 'A' },
|
||||||
|
{ title: 'RDS', level: 'A'},
|
||||||
|
{ title: 'S3', level: 'A'},
|
||||||
|
{ title: 'CloudFormation', level: 'C'},
|
||||||
|
]},
|
||||||
|
{ title: 'Azure (C)', skills: [
|
||||||
|
{ title: 'Azure OpenAI API', level: 'B' },
|
||||||
|
{ title: 'AKS', level: 'B' }
|
||||||
|
]},
|
||||||
|
{ title: 'Hashicorp', skills: [
|
||||||
|
{ title: 'Vault', level: 'B' },
|
||||||
|
{ title: 'Consul', level: 'C' },
|
||||||
|
]},
|
||||||
|
{ title:'Vercel', level: 100, skills: []},
|
||||||
|
{ title:'DigitalOcean', level: 100, skills: []},
|
||||||
|
]},
|
||||||
|
{ icon: '💻⚙️', title:'System Administration', level: 75, subCategories: [
|
||||||
|
{ title:'Operating Systems', level: 80, skills: [
|
||||||
|
{ title: 'Debian / Ubuntu', level: 'A' },
|
||||||
|
{ title: 'Nix(OS)', level: 'B' },
|
||||||
|
{ title: 'Arch Linux', level: 'B' },
|
||||||
|
{ title: 'Alpine', level: 'B' },
|
||||||
|
{ title: 'MicroSuck Winbloats', level: 'B' },
|
||||||
|
]},
|
||||||
|
{ title: 'Version Control & CI/CD', level: 90, skills: [
|
||||||
|
{ title: 'Git', level: 'A' },
|
||||||
|
{ title: 'GitHub & Gitea Ecosystem', level: 'A' },
|
||||||
|
{ title: 'Gitlab Ecosystem', level: 'B' }
|
||||||
|
]},
|
||||||
|
{ title: 'Monitoring & Observability ', level: 90, skills: [
|
||||||
|
{ title: 'Grafana', level: 'B' },
|
||||||
|
{ title: 'Prometheus', level: 'B' },
|
||||||
|
]},
|
||||||
|
{ title: 'Secrets Man. & Cryptography', level: 70, skills: [
|
||||||
|
{ title: 'Hashicorp Vault', level: 'A' },
|
||||||
|
{ title: 'Sops', level: 'B' },
|
||||||
|
{ title: 'AWS Secrets Manager', level: 'B' },
|
||||||
|
]}
|
||||||
|
]},
|
||||||
|
{ icon: '🔧', title:"Some fun geek skillz", level: 70, subCategories: [
|
||||||
|
{ title:'mini hardware', level: 80, skills: [
|
||||||
|
{ title: 'Raspberry Pi', level: 'A' },
|
||||||
|
{ title: 'ESP8266, ESP32', level: 'A' },
|
||||||
|
{ title: 'Arduino', level: 'A' },
|
||||||
|
{ title: 'MQTT', level: 'B' },
|
||||||
|
{ title: 'Wifi & BLE', level: 'B' }
|
||||||
|
]},
|
||||||
|
{ title: '3D printing', level: 90, skills: [
|
||||||
|
{ title: 'knowledge, theory', level: 'A' },
|
||||||
|
{ title: 'materials - PLA, PETG', level: 'A' },
|
||||||
|
{ title: 'Autodesk Inventor', level: 'B' },
|
||||||
|
{ title: 'OctoPrint and Klipper', level: 'B' },
|
||||||
|
{ title: 'Ultimaker Cura', level: 'B' },
|
||||||
|
]},
|
||||||
|
]},
|
||||||
|
{ icon: '💬', title:'Languages', level: 70, subCategories: [
|
||||||
|
{ title: 'English', level: 'A' },
|
||||||
|
{ title: 'Czech', level: 'A' },
|
||||||
|
{ title: 'French', level: 'B' },
|
||||||
|
{ title: 'German', level: 'C' }
|
||||||
|
]},
|
||||||
|
{ icon: '🎨', title:'Design', level: 70, subCategories: [
|
||||||
|
{ title: 'UI/UX', level: 'B' },
|
||||||
|
{ title: 'LaTeX', level: 'C' },
|
||||||
|
{ title: 'Wireframing, Prototyping, Diagramming', level: 'B', skills: [
|
||||||
|
{ title: 'Figma', level: 'A' },
|
||||||
|
{ title: 'Devops diagram tool - '}
|
||||||
|
|
||||||
|
] },
|
||||||
|
{ title: 'Images, Diagrams, Vectors', level: 'B', skills: [
|
||||||
|
//only foss
|
||||||
|
{ title: 'Inkscape', level: 'A' },
|
||||||
|
{ title: 'Gimp', level: 'A' },
|
||||||
|
{ title: 'Blender', level: 'B'},
|
||||||
|
{ title: 'Adobe PS, AI, InDesign'}
|
||||||
|
]},
|
||||||
|
]}
|
||||||
|
];
|
||||||
|
|
||||||
|
export default list
|
Loading…
Reference in New Issue