initial version

This commit is contained in:
Daniel Bulant 2026-02-05 01:20:04 +01:00
commit c290faea0f
17 changed files with 482 additions and 0 deletions

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1,019 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.1 MiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 57 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 592 KiB

1
a1/assets/icon-link.svg Normal file
View 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
View 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

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.7 MiB

2
a1/assets/mihai.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 786 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 282 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 516 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 478 KiB

161
a1/assets/styles.css Normal file
View 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
View 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">&gt;</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
View 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">&gt;</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
View 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">&gt;</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
View 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">&gt;</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
View file

@ -0,0 +1,2 @@
User-agent: *
Disallow: /