Füge resume-Ordner korrekt ohne Submodul hinzu
This commit is contained in:
1
resume
1
resume
Submodule resume deleted from badb945ea5
26
resume/.gitignore
vendored
Normal file
26
resume/.gitignore
vendored
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
# build output
|
||||||
|
dist/
|
||||||
|
|
||||||
|
# generated types
|
||||||
|
.astro/
|
||||||
|
|
||||||
|
# dependencies
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# logs
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
pnpm-debug.log*
|
||||||
|
|
||||||
|
# environment variables
|
||||||
|
.env
|
||||||
|
.env.production
|
||||||
|
|
||||||
|
# macOS-specific files
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
# jetbrains setting folder
|
||||||
|
.idea/
|
||||||
|
|
||||||
|
.vscode/
|
||||||
54
resume/README.md
Normal file
54
resume/README.md
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
# Astro Starter Kit: Basics
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm create astro@latest -- --template basics
|
||||||
|
```
|
||||||
|
|
||||||
|
[](https://stackblitz.com/github/withastro/astro/tree/latest/examples/basics)
|
||||||
|
[](https://codesandbox.io/p/sandbox/github/withastro/astro/tree/latest/examples/basics)
|
||||||
|
[](https://codespaces.new/withastro/astro?devcontainer_path=.devcontainer/basics/devcontainer.json)
|
||||||
|
|
||||||
|
> 🧑🚀 **Seasoned astronaut?** Delete this file. Have fun!
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 🚀 Project Structure
|
||||||
|
|
||||||
|
Inside of your Astro project, you'll see the following folders and files:
|
||||||
|
|
||||||
|
```text
|
||||||
|
/
|
||||||
|
├── public/
|
||||||
|
│ └── favicon.svg
|
||||||
|
├── src/
|
||||||
|
│ ├── components/
|
||||||
|
│ │ └── Card.astro
|
||||||
|
│ ├── layouts/
|
||||||
|
│ │ └── Layout.astro
|
||||||
|
│ └── pages/
|
||||||
|
│ └── index.astro
|
||||||
|
└── package.json
|
||||||
|
```
|
||||||
|
|
||||||
|
Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page is exposed as a route based on its file name.
|
||||||
|
|
||||||
|
There's nothing special about `src/components/`, but that's where we like to put any Astro/React/Vue/Svelte/Preact components.
|
||||||
|
|
||||||
|
Any static assets, like images, can be placed in the `public/` directory.
|
||||||
|
|
||||||
|
## 🧞 Commands
|
||||||
|
|
||||||
|
All commands are run from the root of the project, from a terminal:
|
||||||
|
|
||||||
|
| Command | Action |
|
||||||
|
| :------------------------ | :----------------------------------------------- |
|
||||||
|
| `npm install` | Installs dependencies |
|
||||||
|
| `npm run dev` | Starts local dev server at `localhost:4321` |
|
||||||
|
| `npm run build` | Build your production site to `./dist/` |
|
||||||
|
| `npm run preview` | Preview your build locally, before deploying |
|
||||||
|
| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
|
||||||
|
| `npm run astro -- --help` | Get help using the Astro CLI |
|
||||||
|
|
||||||
|
## 👀 Want to learn more?
|
||||||
|
|
||||||
|
Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat).
|
||||||
6
resume/astro.config.mjs
Normal file
6
resume/astro.config.mjs
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
import { defineConfig } from 'astro/config';
|
||||||
|
import tailwind from '@astrojs/tailwind';
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
integrations: [tailwind()]
|
||||||
|
});
|
||||||
BIN
resume/bun.lockb
Normal file
BIN
resume/bun.lockb
Normal file
Binary file not shown.
6425
resume/package-lock.json
generated
Normal file
6425
resume/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
19
resume/package.json
Normal file
19
resume/package.json
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"name": "@example/basics",
|
||||||
|
"type": "module",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"dev": "astro dev",
|
||||||
|
"start": "astro dev",
|
||||||
|
"build": "astro build",
|
||||||
|
"preview": "astro preview",
|
||||||
|
"astro": "astro"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@astrojs/tailwind": "^5.1.0",
|
||||||
|
"astro": "^4.15.3",
|
||||||
|
"marked": "^15.0.4",
|
||||||
|
"tailwindcss": "^3.4.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
3930
resume/pnpm-lock.yaml
generated
Normal file
3930
resume/pnpm-lock.yaml
generated
Normal file
File diff suppressed because it is too large
Load Diff
BIN
resume/public/anton-new-head.png
Normal file
BIN
resume/public/anton-new-head.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.4 MiB |
BIN
resume/public/anton-new.png
Normal file
BIN
resume/public/anton-new.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.3 MiB |
BIN
resume/public/anton.png
Normal file
BIN
resume/public/anton.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.9 MiB |
BIN
resume/public/donald-trump.jpg
Normal file
BIN
resume/public/donald-trump.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 295 KiB |
9
resume/public/favicon.svg
Normal file
9
resume/public/favicon.svg
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 128 128">
|
||||||
|
<path d="M50.4 78.5a75.1 75.1 0 0 0-28.5 6.9l24.2-65.7c.7-2 1.9-3.2 3.4-3.2h29c1.5 0 2.7 1.2 3.4 3.2l24.2 65.7s-11.6-7-28.5-7L67 45.5c-.4-1.7-1.6-2.8-2.9-2.8-1.3 0-2.5 1.1-2.9 2.7L50.4 78.5Zm-1.1 28.2Zm-4.2-20.2c-2 6.6-.6 15.8 4.2 20.2a17.5 17.5 0 0 1 .2-.7 5.5 5.5 0 0 1 5.7-4.5c2.8.1 4.3 1.5 4.7 4.7.2 1.1.2 2.3.2 3.5v.4c0 2.7.7 5.2 2.2 7.4a13 13 0 0 0 5.7 4.9v-.3l-.2-.3c-1.8-5.6-.5-9.5 4.4-12.8l1.5-1a73 73 0 0 0 3.2-2.2 16 16 0 0 0 6.8-11.4c.3-2 .1-4-.6-6l-.8.6-1.6 1a37 37 0 0 1-22.4 2.7c-5-.7-9.7-2-13.2-6.2Z" />
|
||||||
|
<style>
|
||||||
|
path { fill: #000; }
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
path { fill: #FFF; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 749 B |
61
resume/src/components/Card.astro
Normal file
61
resume/src/components/Card.astro
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
---
|
||||||
|
interface Props {
|
||||||
|
title: string;
|
||||||
|
body: string;
|
||||||
|
href: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const { href, title, body } = Astro.props;
|
||||||
|
---
|
||||||
|
|
||||||
|
<li class="link-card">
|
||||||
|
<a href={href}>
|
||||||
|
<h2>
|
||||||
|
{title}
|
||||||
|
<span>→</span>
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
{body}
|
||||||
|
</p>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<style>
|
||||||
|
.link-card {
|
||||||
|
list-style: none;
|
||||||
|
display: flex;
|
||||||
|
padding: 1px;
|
||||||
|
background-color: #23262d;
|
||||||
|
background-image: none;
|
||||||
|
background-size: 400%;
|
||||||
|
border-radius: 7px;
|
||||||
|
background-position: 100%;
|
||||||
|
transition: background-position 0.6s cubic-bezier(0.22, 1, 0.36, 1);
|
||||||
|
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
.link-card > a {
|
||||||
|
width: 100%;
|
||||||
|
text-decoration: none;
|
||||||
|
line-height: 1.4;
|
||||||
|
padding: calc(1.5rem - 1px);
|
||||||
|
border-radius: 8px;
|
||||||
|
color: white;
|
||||||
|
background-color: #23262d;
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 1.25rem;
|
||||||
|
transition: color 0.6s cubic-bezier(0.22, 1, 0.36, 1);
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
.link-card:is(:hover, :focus-within) {
|
||||||
|
background-position: 0;
|
||||||
|
background-image: var(--accent-gradient);
|
||||||
|
}
|
||||||
|
.link-card:is(:hover, :focus-within) h2 {
|
||||||
|
color: rgb(var(--accent-light));
|
||||||
|
}
|
||||||
|
</style>
|
||||||
43
resume/src/components/ContactInfo.astro
Normal file
43
resume/src/components/ContactInfo.astro
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
---
|
||||||
|
interface Props {
|
||||||
|
lang: string;
|
||||||
|
email: string;
|
||||||
|
phone: string;
|
||||||
|
address: string;
|
||||||
|
website?: string;
|
||||||
|
github?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const { lang, email, phone, address, website, github } = Astro.props;
|
||||||
|
---
|
||||||
|
|
||||||
|
<section class="mb-4 bg-gray-50 p-3 rounded-lg">
|
||||||
|
<h3 class="text-xl font-semibold mb-2 text-gray-800">
|
||||||
|
{lang === "de" ? "Kontaktinformationen" : "Contact Details"}
|
||||||
|
</h3>
|
||||||
|
<div class="space-y-2 text-gray-600">
|
||||||
|
<p>📧 {email}</p>
|
||||||
|
<p>📱 {phone}</p>
|
||||||
|
<p class="whitespace-pre-wrap">📍 {address}</p>
|
||||||
|
{
|
||||||
|
github && (
|
||||||
|
<p>
|
||||||
|
💻{" "}
|
||||||
|
<a href={github} class="text-green-600 hover:text-green-700">
|
||||||
|
GitHub
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
website && (
|
||||||
|
<p>
|
||||||
|
🔗{" "}
|
||||||
|
<a href={website} class="text-green-600 hover:text-green-700">
|
||||||
|
Website
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
42
resume/src/components/Education.astro
Normal file
42
resume/src/components/Education.astro
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
---
|
||||||
|
interface Education {
|
||||||
|
degree: string;
|
||||||
|
institution: string;
|
||||||
|
period: string;
|
||||||
|
details?: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
lang: string;
|
||||||
|
education: Education[];
|
||||||
|
}
|
||||||
|
|
||||||
|
const { education, lang } = Astro.props;
|
||||||
|
---
|
||||||
|
|
||||||
|
<section class="mb-8">
|
||||||
|
<h3 class="text-xl font-semibold mb-2 text-gray-800">
|
||||||
|
{lang === "de" ? "Ausbildung" : "Education"}
|
||||||
|
</h3>
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
education.map((edu) => (
|
||||||
|
<div class="relative pb-6 last:pb-0 pl-6 break-inside-avoid before:absolute before:left-0 before:top-0 before:bottom-0 before:w-0.5 before:bg-green-600">
|
||||||
|
<div class="absolute left-0 top-1.5 w-2 h-2 -translate-x-[.2rem] rounded-full bg-green-600" />
|
||||||
|
<span class="text-sm text-green-600 font-medium">{edu.period}</span>
|
||||||
|
<h4 class="font-bold text-gray-800">{edu.degree}</h4>
|
||||||
|
<p class="text-gray-600">{edu.institution}</p>
|
||||||
|
{edu.details && (
|
||||||
|
<ul class="space-y-0.5 text-gray-700">
|
||||||
|
{edu.details.map((detail) => (
|
||||||
|
<li class="relative pl-5 before:absolute before:left-0 before:top-2 before:w-1 before:h-1 before:bg-green-600 before:rounded-full">
|
||||||
|
{detail}
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
40
resume/src/components/Experience.astro
Normal file
40
resume/src/components/Experience.astro
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
---
|
||||||
|
interface Job {
|
||||||
|
title: string;
|
||||||
|
company: string;
|
||||||
|
period: string;
|
||||||
|
description: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
lang: string;
|
||||||
|
jobs: Job[];
|
||||||
|
}
|
||||||
|
|
||||||
|
const { jobs, lang } = Astro.props;
|
||||||
|
---
|
||||||
|
|
||||||
|
<section class="mb-8">
|
||||||
|
<h3 class="text-xl font-semibold mb-2 text-gray-800">
|
||||||
|
{lang === "de" ? "Berufserfahrung" : "Work Experience"}
|
||||||
|
</h3>
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
jobs.map((job) => (
|
||||||
|
<div class="relative pb-6 last:pb-0 pl-6 break-inside-avoid before:absolute before:left-0 before:top-0 before:bottom-0 before:w-0.5 before:bg-green-600">
|
||||||
|
<div class="absolute left-0 top-1.5 w-2 h-2 -translate-x-[.2rem] rounded-full bg-green-600" />
|
||||||
|
<span class="text-sm text-green-600 font-medium">{job.period}</span>
|
||||||
|
<h4 class="font-bold text-gray-800">{job.title}</h4>
|
||||||
|
<p class="text-gray-600">{job.company}</p>
|
||||||
|
<ul class="space-y-0.5 text-gray-700">
|
||||||
|
{job.description.map((item) => (
|
||||||
|
<li class="relative pl-5 before:absolute before:left-0 before:top-2 before:w-1 before:h-1 before:bg-green-600 before:rounded-full">
|
||||||
|
{item}
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
23
resume/src/components/Header.astro
Normal file
23
resume/src/components/Header.astro
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
interface Props {
|
||||||
|
name: string;
|
||||||
|
title?: string;
|
||||||
|
photo: string;
|
||||||
|
details?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const { name, title, photo, details } = Astro.props;
|
||||||
|
---
|
||||||
|
|
||||||
|
<header class="flex flex-col md:flex-row items-center gap-8 mb-4 mt-48">
|
||||||
|
<div
|
||||||
|
class="w-48 h-48 flex-shrink-0 overflow-hidden rounded-full border-4 border-gray-200 bg-gray-100"
|
||||||
|
>
|
||||||
|
<img src={photo} alt={name} class="w-full h-full object-cover" />
|
||||||
|
</div>
|
||||||
|
<div class="text-center md:text-left mt-24">
|
||||||
|
<h1 class="text-4xl font-bold text-gray-800 ml-20">{name}</h1>
|
||||||
|
{title && <h2 class="text-2xl text-gray-600 mt-2">{title}</h2>}
|
||||||
|
{details && <span class="text-gray-600 mt-2">{details}</span>}
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
29
resume/src/components/Languages.astro
Normal file
29
resume/src/components/Languages.astro
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
interface Language {
|
||||||
|
language: string;
|
||||||
|
level: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
lang: string;
|
||||||
|
languages: Language[];
|
||||||
|
}
|
||||||
|
|
||||||
|
const { languages, lang } = Astro.props;
|
||||||
|
---
|
||||||
|
|
||||||
|
<section class="mb-4 break-inside-avoid">
|
||||||
|
<h3 class="text-xl font-semibold mb-2 text-gray-800">
|
||||||
|
{lang === "de" ? "Sprachkenntnisse" : "Languages"}
|
||||||
|
</h3>
|
||||||
|
<div class="space-y-2">
|
||||||
|
{
|
||||||
|
languages.map((lang) => (
|
||||||
|
<div class="flex justify-between items-center bg-gray-50 p-3 gap-2 rounded">
|
||||||
|
<span class="font-medium text-gray-800">{lang.language}</span>
|
||||||
|
<span class="text-gray-600">{lang.level}</span>
|
||||||
|
</div>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
69
resume/src/components/Projects.astro
Normal file
69
resume/src/components/Projects.astro
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
---
|
||||||
|
import { marked } from "marked";
|
||||||
|
|
||||||
|
interface Project {
|
||||||
|
title: string;
|
||||||
|
description: string;
|
||||||
|
technologies: string[];
|
||||||
|
link?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
lang: string;
|
||||||
|
intro: string;
|
||||||
|
projects: Project[];
|
||||||
|
}
|
||||||
|
|
||||||
|
const { projects, lang, intro: _intro } = Astro.props;
|
||||||
|
const intro = marked(_intro);
|
||||||
|
---
|
||||||
|
|
||||||
|
<section class="mb-8">
|
||||||
|
<h3 class="text-xl font-semibold mb-2 text-gray-800">
|
||||||
|
<span>{lang === "de" ? "Projekte" : "Projects"}</span>
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<div class="mb-2 prose">
|
||||||
|
<div set:html={intro} />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid gap-4">
|
||||||
|
{
|
||||||
|
projects.map((project) => (
|
||||||
|
<div class="bg-gray-50 p-4 rounded-lg break-inside-avoid">
|
||||||
|
<div class="flex justify-between items-start">
|
||||||
|
<h4 class="font-bold text-gray-800">{project.title}</h4>
|
||||||
|
{project.link && (
|
||||||
|
<a
|
||||||
|
href={project.link}
|
||||||
|
class="text-green-600 hover:text-green-700"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
<span class="sr-only">Project Link</span>
|
||||||
|
🔗
|
||||||
|
</a>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
<p class="text-gray-700 mt-2">{project.description}</p>
|
||||||
|
<div class="flex flex-wrap gap-2 mt-2">
|
||||||
|
{project.technologies.map((tech) => (
|
||||||
|
<span class="bg-white px-2 py-0.5 rounded-full text-sm text-gray-700 border border-gray-200">
|
||||||
|
{tech}
|
||||||
|
</span>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<style is:global>
|
||||||
|
.prose a {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prose a:hover {
|
||||||
|
@apply text-green-500;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
38
resume/src/components/Skills.astro
Normal file
38
resume/src/components/Skills.astro
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
interface Skill {
|
||||||
|
category: string;
|
||||||
|
details: string[];
|
||||||
|
icon?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
lang: string;
|
||||||
|
skills: Skill[];
|
||||||
|
}
|
||||||
|
|
||||||
|
const { skills, lang } = Astro.props;
|
||||||
|
---
|
||||||
|
|
||||||
|
<section class="mb-4">
|
||||||
|
<h3 class="text-xl font-semibold mb-2 text-gray-800">
|
||||||
|
{lang === "de" ? "Fähigkeiten" : "Skills"}
|
||||||
|
</h3>
|
||||||
|
<div class="flex flex-col gap-2">
|
||||||
|
{
|
||||||
|
skills.map((skill) => (
|
||||||
|
<div class="bg-gray-50 p-3 rounded-lg break-inside-avoid">
|
||||||
|
<h4 class="font-bold text-gray-800 mb-2">
|
||||||
|
{skill.icon} {skill.category}
|
||||||
|
</h4>
|
||||||
|
<div class="flex flex-wrap gap-2">
|
||||||
|
{skill.details.map((s) => (
|
||||||
|
<span class="bg-white px-2 py-0.5 rounded-full text-sm text-gray-700 border border-gray-200">
|
||||||
|
{s}
|
||||||
|
</span>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
1
resume/src/env.d.ts
vendored
Normal file
1
resume/src/env.d.ts
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
/// <reference path="../.astro/types.d.ts" />
|
||||||
21
resume/src/layouts/Layout.astro
Normal file
21
resume/src/layouts/Layout.astro
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
interface Props {
|
||||||
|
title: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const { title } = Astro.props;
|
||||||
|
---
|
||||||
|
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="description" content="Lebenslauf von Max Mustermann" />
|
||||||
|
<meta name="viewport" content="width=device-width" />
|
||||||
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||||
|
<title>{title}</title>
|
||||||
|
</head>
|
||||||
|
<body class="bg-gray-100 print:bg-white">
|
||||||
|
<slot />
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
159
resume/src/pages/en.astro
Normal file
159
resume/src/pages/en.astro
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
---
|
||||||
|
import Layout from "../layouts/Layout.astro";
|
||||||
|
import Header from "../components/Header.astro";
|
||||||
|
import ContactInfo from "../components/ContactInfo.astro";
|
||||||
|
import Experience from "../components/Experience.astro";
|
||||||
|
import Education from "../components/Education.astro";
|
||||||
|
import Skills from "../components/Skills.astro";
|
||||||
|
import Languages from "../components/Languages.astro";
|
||||||
|
import Projects from "../components/Projects.astro";
|
||||||
|
|
||||||
|
const jobs = [
|
||||||
|
{
|
||||||
|
title: "Software Engineer & Product Owner",
|
||||||
|
company: "GEPROG GmbH, Kiel",
|
||||||
|
period: "Feb 2020 - Aug 2024",
|
||||||
|
description: [
|
||||||
|
"Development of web applications using Nuxt.js, TypeScript, and Golang",
|
||||||
|
"Product management and leadership of an agile international team",
|
||||||
|
"Code reviews and mentoring of developers",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Teaching Assistant",
|
||||||
|
company: "GEOMAR Helmholtz Centre for Ocean Research, Kiel",
|
||||||
|
period: "Jun 2019 - Feb 2020",
|
||||||
|
description: [
|
||||||
|
"Assisted in the development of a master module on computer vision",
|
||||||
|
"Conducted tutorials on basic OpenCV algorithms",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Web Developer",
|
||||||
|
company: "Ennit interactive GmbH, Kiel",
|
||||||
|
period: "Jan 2017 - Jan 2019",
|
||||||
|
description: [
|
||||||
|
"Created websites for companies such as Kempinski, Romantik Hotels, and Diakonie Nord",
|
||||||
|
"Developed web shops for Orion and Bartels-Langness",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const education = [
|
||||||
|
{
|
||||||
|
degree: "M.Sc. Software Engineering",
|
||||||
|
institution: " University of Applied Sciences Mannheim",
|
||||||
|
period: "Mar 2022 - Aug 2024",
|
||||||
|
details: ["Final Grade: 1.2"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
degree: "B.Sc. Information Technology",
|
||||||
|
institution: " University of Applied Sciences Kiel",
|
||||||
|
period: "Sep 2018 - Sep 2021",
|
||||||
|
details: ["Final Grade: 2.3"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
degree: "B.Sc. Computer Science",
|
||||||
|
institution: "University of Kiel",
|
||||||
|
period: "Oct 2016 - Sep 2018",
|
||||||
|
details: [],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
degree: "Abitur",
|
||||||
|
institution: "RBZ1 Königsweg Kiel",
|
||||||
|
period: "Aug 2016 - Sep 2019",
|
||||||
|
details: [],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const projects = [
|
||||||
|
{
|
||||||
|
title: "Woodpecker CI",
|
||||||
|
description:
|
||||||
|
"An open-source CI/CD tool designed to automate software testing and deployments. Served as a core maintainer since 2021, driving the development and ensuring code quality in a collaborative environment.",
|
||||||
|
technologies: ["Golang", "Vue.js", "Docker", "Kubernetes"],
|
||||||
|
link: "https://github.com/woodpecker-ci/woodpecker",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Kiel Live",
|
||||||
|
description:
|
||||||
|
"A public transport application providing live bus tracking in Kiel, with ~7000 monthly active users. Initiated and led the project as the creator, managing the entire development lifecycle from concept to deployment.",
|
||||||
|
technologies: ["Golang", "Vue.js", "WebSocket", "nats.io"],
|
||||||
|
link: "https://github.com/kiel-live/kiel-live",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Online Terminbuch",
|
||||||
|
description:
|
||||||
|
"A web application for managing appointment scheduling in medical practices. Developed and maintained independently over several years, it is in daily use by multiple doctor offices. Patients value features such as automated appointment notifications, effectively reducing missed appointments.",
|
||||||
|
technologies: ["Vue.js 3", "Golang", "Pocketbase", "Langchain"],
|
||||||
|
link: "https://online-terminbuch.de",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Lagoss",
|
||||||
|
description:
|
||||||
|
"An open-source serverless functions runtime enabling JavaScript code execution. Maintained as the primary developer after forking, enhancing functionality and addressing community needs.",
|
||||||
|
technologies: ["Next.js", "Rust"],
|
||||||
|
link: "https://github.com/lagossapp/lagoss",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const skills = [
|
||||||
|
{
|
||||||
|
category: "Programming Languages",
|
||||||
|
icon: "💻",
|
||||||
|
details: ["TypeScript", "Golang", "PHP", "Java", "C++", "SQL"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
category: "Frameworks",
|
||||||
|
icon: "🛠️",
|
||||||
|
details: ["Vue.js", "Nuxt.js", "React", "Next.js", "Tailwind", "Laravel"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
category: "DevOps & Cloud",
|
||||||
|
icon: "☁️",
|
||||||
|
details: ["Docker", "Kubernetes", "CI/CD", "Ansible", "Terraform"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
category: "Mobile Development",
|
||||||
|
icon: "📱",
|
||||||
|
details: ["Flutter", "Android"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
category: "Methods",
|
||||||
|
icon: "📚",
|
||||||
|
details: ["Agile/Scrum", "TDD", "Design Thinking"],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const languages = [
|
||||||
|
{ language: "German", level: "Native" },
|
||||||
|
{ language: "English", level: "Fluent" },
|
||||||
|
];
|
||||||
|
---
|
||||||
|
|
||||||
|
<Layout title="Klara Bracke - Software Engineer">
|
||||||
|
<main class="container mx-auto px-4 py-4 max-w-4xl">
|
||||||
|
<Header name="Klara Bracke" photo="/klara-new-head.png" title="" />
|
||||||
|
|
||||||
|
<div class="grid grid-cols-1 md:grid-cols-3 gap-8">
|
||||||
|
<div class="md:col-span-1">
|
||||||
|
<ContactInfo
|
||||||
|
lang="en"
|
||||||
|
email="klara@ju60.de"
|
||||||
|
phone="+49 152 27679550"
|
||||||
|
address="Kiel, Germany"
|
||||||
|
website="https://beechy.de"
|
||||||
|
github="https://github.com/anbraten"
|
||||||
|
/>
|
||||||
|
<Skills lang="en" skills={skills} />
|
||||||
|
<Languages lang="en" languages={languages} />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="md:col-span-2">
|
||||||
|
<Experience lang="en" jobs={jobs} />
|
||||||
|
<Education lang="en" education={education} />
|
||||||
|
<Projects lang="en" projects={projects} />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
</Layout>
|
||||||
151
resume/src/pages/index.astro
Normal file
151
resume/src/pages/index.astro
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
---
|
||||||
|
import Layout from "../layouts/Layout.astro";
|
||||||
|
import Header from "../components/Header.astro";
|
||||||
|
import ContactInfo from "../components/ContactInfo.astro";
|
||||||
|
import Experience from "../components/Experience.astro";
|
||||||
|
import Education from "../components/Education.astro";
|
||||||
|
import Skills from "../components/Skills.astro";
|
||||||
|
import Languages from "../components/Languages.astro";
|
||||||
|
import Projects from "../components/Projects.astro";
|
||||||
|
|
||||||
|
const jobs = [
|
||||||
|
|
||||||
|
{
|
||||||
|
title: "Büroassistenz",
|
||||||
|
company: "Zahnarztpraxis Bracke, Preetz",
|
||||||
|
period: "Jan 2019 - heute",
|
||||||
|
description: [
|
||||||
|
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Werkstudentin",
|
||||||
|
company: "Nexus/Chili GmbH, Heidelberg",
|
||||||
|
period: "Feb 2020 - Aug 2024",
|
||||||
|
description: [
|
||||||
|
"Aufnahme von Kundenanfragen",
|
||||||
|
"Bearbeitung von Kundenanfragen",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Praktikantin",
|
||||||
|
company: "Uniklinikum RWTH Aachen",
|
||||||
|
period: "Sep 2020 - Jan 2023",
|
||||||
|
description: [
|
||||||
|
"Arbeiten in Qualitätsmanagement",
|
||||||
|
"",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
const education = [
|
||||||
|
{
|
||||||
|
degree: "M.Sc. Medical Data Science",
|
||||||
|
institution: " Technische Hochschule Mannheim",
|
||||||
|
period: "März 2024 - Dez 2025",
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
degree: "B.Sc. Medizinisches Informationsmanagement",
|
||||||
|
institution: "Hochschule Stralsund",
|
||||||
|
period: "Okt 2019 - Sep 2024",
|
||||||
|
details: ["Abschlussnote= 1,7"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
degree: "Abitur",
|
||||||
|
institution: "RBZ1 Königsweg Kiel",
|
||||||
|
period: "Aug 2016 - Sep 2019",
|
||||||
|
details: [],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const projects = [
|
||||||
|
{
|
||||||
|
title: "Kazinomerkennung",
|
||||||
|
description:
|
||||||
|
"Ein System zur automatischen Erkennung von Kasinos in Bildern, das auf Convolutional Neural Networks basiert.",
|
||||||
|
technologies: ["Python", "TensorFlow"],
|
||||||
|
link: "",
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
const skills = [
|
||||||
|
{
|
||||||
|
category: "Programmiersprachen",
|
||||||
|
icon: "💻",
|
||||||
|
details: ["Python", "Java", "SQL"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
category: "Healthcare IT & Standards",
|
||||||
|
icon: "🏥",
|
||||||
|
details: ["HL7", "FHIR", "IHE", "DICOM"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
category: " Krankenhaussysteme & Prozesse",
|
||||||
|
icon: "🏥",
|
||||||
|
details: ["KIS", "PACS/RIS", "Medizinische Dokumentation",
|
||||||
|
"CDSS"],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
category: "Qualitäts- & Risikomanagement",
|
||||||
|
icon: "📊",
|
||||||
|
details: ["PDCA", "Risikomatrix", "Fehlermanagement", "Auditvorbereitung"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
category: "KI & Maschinelles Lernen",
|
||||||
|
icon: "🤖",
|
||||||
|
details: ["Convolutional Neural Networks (CNN)", "MSTransformers"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
category: "Methoden",
|
||||||
|
icon: "📚",
|
||||||
|
details: ["Scrum", "Design Thinking"],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const languages = [
|
||||||
|
{ language: "Deutsch"},
|
||||||
|
{ language: "Englisch"},
|
||||||
|
];
|
||||||
|
|
||||||
|
// const intro = `Mit 12 Jahren habe ich meine erste Homepage erstellt und
|
||||||
|
// damit meine Leidenschaft für die Softwareentwicklung entdeckt.
|
||||||
|
// Durch mein Studium und meine beruflichen Positionen habe ich vielfältige Konzepte,
|
||||||
|
// von Softwareengineering, HA-Clustering bis hin zu Design Thinking, intensiv kennengelernt
|
||||||
|
// und praktisch angewendet. Neben meiner Arbeit an Kundenprojekten engagiere
|
||||||
|
// ich mich in verschiedenen [Open-Source-Projekten](https://github.com/anbraten?tab=repositories).`;
|
||||||
|
|
||||||
|
const intro = `Neben meiner Arbeit an Kundenprojekten wirke ich an verschiedenen anderen Open-Source [Projekten](https://github.com/anbraten?tab=repositories)
|
||||||
|
mit.`;
|
||||||
|
---
|
||||||
|
|
||||||
|
<Layout title="Klara Bracke - Software Engineer">
|
||||||
|
<main class="container mx-auto px-4 py-4 max-w-4xl">
|
||||||
|
<Header name="Klara Bracke" photo="/donald-trump.jpg" title="" />
|
||||||
|
|
||||||
|
<div class="grid grid-cols-1 md:grid-cols-3 gap-8">
|
||||||
|
<div class="md:col-span-1">
|
||||||
|
<ContactInfo
|
||||||
|
lang="de"
|
||||||
|
email="klara@ju60.de"
|
||||||
|
phone="+49 152 27679550"
|
||||||
|
address="Mannheim, Deutschland"
|
||||||
|
website="https://beechy.de"
|
||||||
|
github="https://github.com/anbraten"
|
||||||
|
/>
|
||||||
|
<Skills lang="de" skills={skills} />
|
||||||
|
<Languages lang="de" languages={languages} />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="md:col-span-2">
|
||||||
|
<Experience lang="de" jobs={jobs} />
|
||||||
|
<Education lang="de" education={education} />
|
||||||
|
<Projects lang="de" projects={projects} intro={intro} />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
</Layout>
|
||||||
104
resume/src/pages/wohn.astro
Normal file
104
resume/src/pages/wohn.astro
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
---
|
||||||
|
import Layout from "../layouts/Layout.astro";
|
||||||
|
import Header from "../components/Header.astro";
|
||||||
|
import ContactInfo from "../components/ContactInfo.astro";
|
||||||
|
import Experience from "../components/Experience.astro";
|
||||||
|
import Education from "../components/Education.astro";
|
||||||
|
import Skills from "../components/Skills.astro";
|
||||||
|
import Languages from "../components/Languages.astro";
|
||||||
|
import Projects from "../components/Projects.astro";
|
||||||
|
|
||||||
|
const jobs = [
|
||||||
|
{
|
||||||
|
title: "Software Engineer & Product Owner",
|
||||||
|
company: "GEPROG GmbH, Kiel",
|
||||||
|
period: "Feb 2020 - Aug 2024",
|
||||||
|
description: [
|
||||||
|
"Entwicklung von Web-Anwendungen mit Nuxt.js, Typescript & Golang",
|
||||||
|
"Produktmanagement und Führung eines agilen internationales Teams",
|
||||||
|
"Code-Reviews und Mentoring von Entwicklern",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Lehrassistenz",
|
||||||
|
company: "GEOMAR Helmholtz Centre for Ocean Research, Kiel",
|
||||||
|
period: "Jun 2019 - Feb 2020",
|
||||||
|
description: [
|
||||||
|
"Unterstützung bei der Entwicklung eines Master-Moduls zu Computer Vision",
|
||||||
|
"Durchführung von Übungen zu grundlegenden OpenCV-Algorithmen",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Web Developer",
|
||||||
|
company: "Ennit interactive GmbH, Kiel",
|
||||||
|
period: "Jan 2017 - Jan 2019",
|
||||||
|
description: [
|
||||||
|
"Erstellung von Webauftritten für Firmen wie Kempinski, Romantik Hotels und Diakonie Nord",
|
||||||
|
"Entwicklung von Web-Shops für Orion und Bartels-Langness",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const education = [];
|
||||||
|
|
||||||
|
const projects = [];
|
||||||
|
|
||||||
|
const skills = [];
|
||||||
|
|
||||||
|
const languages = [];
|
||||||
|
|
||||||
|
// const intro = `Mit 12 Jahren habe ich meine erste Homepage erstellt und
|
||||||
|
// damit meine Leidenschaft für die Softwareentwicklung entdeckt.
|
||||||
|
// Durch mein Studium und meine beruflichen Positionen habe ich vielfältige Konzepte,
|
||||||
|
// von Softwareengineering, HA-Clustering bis hin zu Design Thinking, intensiv kennengelernt
|
||||||
|
// und praktisch angewendet. Neben meiner Arbeit an Kundenprojekten engagiere
|
||||||
|
// ich mich in verschiedenen [Open-Source-Projekten](https://github.com/anbraten?tab=repositories).`;
|
||||||
|
|
||||||
|
const intro = `Neben meiner Arbeit an Kundenprojekten wirke ich an verschiedenen anderen Open-Source [Projekten](https://github.com/anbraten?tab=repositories)
|
||||||
|
mit.`;
|
||||||
|
---
|
||||||
|
|
||||||
|
<Layout title="Klara Bracke - Software Engineer">
|
||||||
|
<main class="container mx-auto px-4 py-4 max-w-4xl">
|
||||||
|
<Header name="Klara Bracke" photo="/klara-new-head.png" title="" />
|
||||||
|
|
||||||
|
<div class="grid grid-cols-1 md:grid-cols-3 gap-8">
|
||||||
|
<div class="md:col-span-1">
|
||||||
|
<ContactInfo
|
||||||
|
lang="de"
|
||||||
|
email="klara@ju60.de"
|
||||||
|
phone="+49 152 27679550"
|
||||||
|
address="Buchenkamp 5\n\t 24211 Schellhorn"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="md:col-span-2">
|
||||||
|
<p class="text-lg">
|
||||||
|
Hallo, ich bin 27 Jahre alt und arbeite als Softwareentwickler.
|
||||||
|
Nachdem ich in den letzten 2 Jahren meinen Master in Mannheim gemacht
|
||||||
|
habe, bin ich nun zurück in meiner Heimat Kiel und auf der Suche nach
|
||||||
|
einem schönen Zuhause. In meiner Freizeit gehe ich je nach Wind und
|
||||||
|
Wellen gerne zum Rudern oder Kitesurfen.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="text-lg mt-8">
|
||||||
|
<div class="mt-4">
|
||||||
|
<p>Geburtsdatum: 03.08.1997</p>
|
||||||
|
<p>Geburtsort: Kiel</p>
|
||||||
|
<p>Lebensstand: ledig</p>
|
||||||
|
</div>
|
||||||
|
<div class="mt-4">
|
||||||
|
<p>Beruf: Softwareentwickler (Festangestellt)</p>
|
||||||
|
<p>Arbeitgeber: FLS GmbH (Heikendorf)</p>
|
||||||
|
<p>Monatliches Nettoeinkommen: 3.400€</p>
|
||||||
|
</div>
|
||||||
|
<div class="mt-4">
|
||||||
|
<p>Raucher: Nein</p>
|
||||||
|
<p>Haustiere: Nein</p>
|
||||||
|
<p>Musikinstrument: Nein</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
</Layout>
|
||||||
8
resume/tailwind.config.mjs
Normal file
8
resume/tailwind.config.mjs
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
/** @type {import('tailwindcss').Config} */
|
||||||
|
export default {
|
||||||
|
content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'],
|
||||||
|
theme: {
|
||||||
|
extend: {},
|
||||||
|
},
|
||||||
|
plugins: [],
|
||||||
|
}
|
||||||
3
resume/tsconfig.json
Normal file
3
resume/tsconfig.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"extends": "astro/tsconfigs/base"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user