initial version
2
a1/assets/avatar-dots-colors-primary.svg
Normal file
|
After Width: | Height: | Size: 1,019 KiB |
2
a1/assets/avatar-dots-colors.svg
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
2
a1/assets/avatar-dots-small.svg
Normal file
|
After Width: | Height: | Size: 57 KiB |
2
a1/assets/avatar-dots.svg
Normal file
|
After Width: | Height: | Size: 592 KiB |
1
a1/assets/icon-link.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" data-astro-cid-6ygtcg62="true" data-icon="solar:arrow-right-up-linear"> <symbol id="ai:solar:arrow-right-up-linear" viewBox="0 0 24 24"><path fill="none" stroke="white" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M6 18L18 6m0 0H9m9 0v9"></path></symbol><use href="#ai:solar:arrow-right-up-linear"></use> </svg>
|
||||
|
After Width: | Height: | Size: 404 B |
1
a1/assets/icon-right.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" data-astro-cid-6ygtcg62="true" data-icon="solar:arrow-right-linear"> <symbol id="ai:solar:arrow-right-linear" viewBox="0 0 24 24"><path fill="none" stroke="white" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M4 12h16m0 0l-6-6m6 6l-6 6"></path></symbol><use href="#ai:solar:arrow-right-linear"></use> </svg>
|
||||
|
After Width: | Height: | Size: 399 B |
2
a1/assets/jeremy.svg
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
2
a1/assets/mihai.svg
Normal file
|
After Width: | Height: | Size: 786 KiB |
2
a1/assets/people-dots-colors.svg
Normal file
|
After Width: | Height: | Size: 282 KiB |
2
a1/assets/projects-dots-color.svg
Normal file
|
After Width: | Height: | Size: 516 KiB |
2
a1/assets/projects-dots.svg
Normal file
|
After Width: | Height: | Size: 478 KiB |
161
a1/assets/styles.css
Normal file
|
|
@ -0,0 +1,161 @@
|
|||
:root {
|
||||
--font-mono: "Fira Code VF", "Fira Code", monospace;
|
||||
--font-sans: "Fira Sans", sans-serif;
|
||||
--primary-dark: #242038;
|
||||
--primary: #9067c6;
|
||||
--bg-dark: #100d11;
|
||||
--bg: #110f1a;
|
||||
--bg-success: #7ceec8;
|
||||
--gray-700: oklch(37.3% 0.034 259.733);
|
||||
}
|
||||
html,
|
||||
body {
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: var(--bg);
|
||||
font-family: var(--font-mono);
|
||||
}
|
||||
|
||||
code {
|
||||
font-variant-ligatures: none;
|
||||
}
|
||||
* {
|
||||
user-select: none;
|
||||
box-sizing: border-box;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: none;
|
||||
background: none;
|
||||
}
|
||||
|
||||
.bg-gradient {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: linear-gradient(to bottom, var(--primary), var(--bg));
|
||||
opacity: 0.06;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
nav {
|
||||
z-index: 100;
|
||||
/*background: var(--bg);*/
|
||||
top: 0;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
position: fixed;
|
||||
flex: 1;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
max-width: 70rem;
|
||||
padding: 0.5rem;
|
||||
margin: auto;
|
||||
text-transform: uppercase;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.nav-spacer {
|
||||
height: 3rem;
|
||||
}
|
||||
|
||||
nav .links {
|
||||
display: flex;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.font-bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
.text-gray-500 {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.btn {
|
||||
isolation: isolate;
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
padding: 0.25rem 0.5rem;
|
||||
}
|
||||
|
||||
.btn::before {
|
||||
z-index: -1;
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
height: 0;
|
||||
background: var(--primary);
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.btn:hover::before {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
main {
|
||||
max-width: 70rem;
|
||||
margin: auto;
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
.rounded-full {
|
||||
border-radius: 999px;
|
||||
}
|
||||
|
||||
.card {
|
||||
display: flex;
|
||||
gap: 1rem;
|
||||
padding: 1rem;
|
||||
border-radius: 0.5rem;
|
||||
margin: 1rem 0;
|
||||
background: var(--bg-dark);
|
||||
}
|
||||
|
||||
.card > img {
|
||||
height: 5rem;
|
||||
width: 5rem;
|
||||
}
|
||||
|
||||
.card .contents {
|
||||
flex: 1;
|
||||
flex-direction: column;
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.btn-link {
|
||||
border: 1px solid var(--gray-700);
|
||||
}
|
||||
|
||||
.btn-link::after {
|
||||
content: "";
|
||||
width: 1rem;
|
||||
height: 1rem;
|
||||
background-image: url("/assets/icon-right.svg");
|
||||
}
|
||||
|
||||
.btn-link-out {
|
||||
border: 1px solid var(--gray-700);
|
||||
}
|
||||
|
||||
.btn-link-out::after {
|
||||
content: "";
|
||||
width: 1rem;
|
||||
height: 1rem;
|
||||
background-image: url("/assets/icon-link.svg");
|
||||
}
|
||||
|
||||
main.profile {
|
||||
background: var(--bg-dark);
|
||||
}
|
||||
74
a1/group/index.html
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Daniel Bulant - Profile</title>
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Fira+Code:wght@300..700&family=Fira+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link href="/assets/styles.css" rel="stylesheet" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="bg-gradient"></div>
|
||||
|
||||
<nav>
|
||||
<a href="/" class="font-bold">
|
||||
Daniel Bulant
|
||||
<span class="text-gray-500">></span>
|
||||
Group
|
||||
</a>
|
||||
<div class="links">
|
||||
<a href="/profile" class="btn">/profile</a>
|
||||
<a href="/projects" class="btn">/projects</a>
|
||||
<a href="/group" class="btn">/group</a>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="nav-spacer"></div>
|
||||
|
||||
<main>
|
||||
<h1>Group</h1>
|
||||
|
||||
<div class="card">
|
||||
<img
|
||||
src="/assets/avatar-dots-colors-primary.svg"
|
||||
class="rounded-full"
|
||||
alt=""
|
||||
/>
|
||||
<div class="contents">
|
||||
<h2>Daniel</h2>
|
||||
<a class="btn btn-link" href="/profile">View profile</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<img src="/assets/mihai.svg" class="rounded-full" alt="" />
|
||||
<div class="contents">
|
||||
<h2>Mihai</h2>
|
||||
<a
|
||||
class="btn btn-link-out"
|
||||
href="http://au790887.eu.pythonanywhere.com/"
|
||||
>
|
||||
View site
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<img src="/assets/jeremy.svg" class="rounded-full" alt="" />
|
||||
<div class="contents">
|
||||
<h2>Jeremy</h2>
|
||||
<a
|
||||
class="btn btn-link-out"
|
||||
href="http://au792963.eu.pythonanywhere.com/"
|
||||
>
|
||||
View site
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
67
a1/index.html
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Daniel Bulant - AU Home</title>
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Fira+Code:wght@300..700&family=Fira+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link href="/assets/styles.css" rel="stylesheet" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="bg-gradient"></div>
|
||||
|
||||
<nav>
|
||||
<a href="/" class="font-bold">
|
||||
Daniel Bulant
|
||||
<span class="text-gray-500">></span>
|
||||
Home
|
||||
</a>
|
||||
<div class="links">
|
||||
<a href="/profile" class="btn">/profile</a>
|
||||
<a href="/projects" class="btn">/projects</a>
|
||||
<a href="/group" class="btn">/group</a>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="nav-spacer"></div>
|
||||
|
||||
<main>
|
||||
<h1>Hello there!</h1>
|
||||
|
||||
<div class="card">
|
||||
<!-- no alt text needed; text description is enough -->
|
||||
<img
|
||||
src="/assets/avatar-dots-colors-primary.svg"
|
||||
class="rounded-full"
|
||||
alt=""
|
||||
/>
|
||||
<div class="contents">
|
||||
<h2>Profile</h2>
|
||||
<a class="btn btn-link" href="/profile">View profile</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<img src="/assets/projects-dots-color.svg" alt="" />
|
||||
<div class="contents">
|
||||
<h2>Projects</h2>
|
||||
<a class="btn btn-link" href="/projects">View projects</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<img src="/assets/people-dots-colors.svg" alt="" />
|
||||
<div class="contents">
|
||||
<h2>Group</h2>
|
||||
<a class="btn btn-link" href="/group">View group </a>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
120
a1/profile/index.html
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Daniel Bulant - Profile</title>
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Fira+Code:wght@300..700&family=Fira+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link href="/assets/styles.css" rel="stylesheet" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="bg-gradient"></div>
|
||||
|
||||
<nav>
|
||||
<a href="/" class="font-bold">
|
||||
Daniel Bulant
|
||||
<span class="text-gray-500">></span>
|
||||
Profile
|
||||
</a>
|
||||
<div class="links">
|
||||
<a href="/profile" class="btn">/profile</a>
|
||||
<a href="/projects" class="btn">/projects</a>
|
||||
<a href="/group" class="btn">/group</a>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="nav-spacer"></div>
|
||||
|
||||
<main class="profile">
|
||||
<div class="card">
|
||||
<img src="/assets/avatar-dots-colors.svg" alt="" />
|
||||
<div class="contents">
|
||||
<h1>Profile</h1>
|
||||
<p>
|
||||
Full-stack web developer; student at Aarhus University.
|
||||
</p>
|
||||
<p>
|
||||
I like working on different projects, sometimes useful,
|
||||
sometimes silly.
|
||||
</p>
|
||||
<h2>Live projects / examples of my work</h2>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://haxagon.cz">Haxagon</a> -
|
||||
cybersecurity e-learning platform for highschools,
|
||||
with real-time data streaming, advanced permissions
|
||||
and virtual machines.
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://danbulant.itch.io/heaventaker">
|
||||
Heaventaker
|
||||
</a>
|
||||
- a short WIP Helltaker fan-game.
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://tictactoe.danbulant.eu">
|
||||
Tictactoe
|
||||
</a>
|
||||
- ultimate tictactoe variant with (simple) online
|
||||
and local multiplayer.
|
||||
</li>
|
||||
</ul>
|
||||
<h2>Other projects</h2>
|
||||
<ul>
|
||||
<li>
|
||||
A custom 32bit CPU made in logisim, with a simulator
|
||||
written in Rust. Experiments with optimization like
|
||||
JIT compilation, PGO and LTO. Capable of playing Bad
|
||||
Apple faster than realtime on most machines.
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://github.com/danbulant/chip8">
|
||||
Chip8 emulator
|
||||
</a>
|
||||
with support for more memory using a hack, as well
|
||||
as a
|
||||
<a
|
||||
href="https://github.com/danbulant/chip8badapple"
|
||||
>
|
||||
Bad Apple ROM generator
|
||||
</a>
|
||||
using that hack.
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://github.com/danbulant/Mangades">
|
||||
A site
|
||||
</a>
|
||||
for generating EPUBs and CBZs from Mangadex entries.
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://github.com/danbulant/wooting-fun">
|
||||
Bad Apple on Wooting keyboards
|
||||
</a>
|
||||
using their addressable RGB LEDs.
|
||||
</li>
|
||||
<li>
|
||||
I'm running a few servers as a sort of home lab,
|
||||
where I experiment with various technologies like
|
||||
Nomad, Kubernetes, Docker and more. Tictactoe
|
||||
multiplayer is running there.
|
||||
</li>
|
||||
<li>
|
||||
Tons of unpublished and mostly unfinished projects,
|
||||
like a web controller for Kubernetes for easier
|
||||
management, search engine tech, programming
|
||||
languages as well as experiments with GUIs,
|
||||
distributed computing and various cyber security
|
||||
related stuff.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
38
a1/projects/index.html
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Daniel Bulant - Profile</title>
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Fira+Code:wght@300..700&family=Fira+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link href="/assets/styles.css" rel="stylesheet" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="bg-gradient"></div>
|
||||
|
||||
<nav>
|
||||
<a href="/" class="font-bold">
|
||||
Daniel Bulant
|
||||
<span class="text-gray-500">></span>
|
||||
Projects
|
||||
</a>
|
||||
<div class="links">
|
||||
<a href="/profile" class="btn">/profile</a>
|
||||
<a href="/projects" class="btn">/projects</a>
|
||||
<a href="/group" class="btn">/group</a>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="nav-spacer"></div>
|
||||
|
||||
<main>
|
||||
<h1>Projects</h1>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
2
a1/robots.txt
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
User-agent: *
|
||||
Disallow: /
|
||||