113 lines
3.5 KiB
PHP
113 lines
3.5 KiB
PHP
<?php
|
|
/**
|
|
* Content config:
|
|
*/
|
|
$name = "David Hrdina Němeček";
|
|
$site_title = "www.dejvino.cz";
|
|
$site_url = "https://www.dejvino.cz/";
|
|
$site_desc = "$name - Professional Software Developer";
|
|
$subtitle = "Full-Stack Architect & Open Source Contributor";
|
|
$photo_file = "photo.png";
|
|
$email_user = "ciao";
|
|
|
|
$about_text = [
|
|
"Full-stack developer focused on high-performance systems and minimalist architecture.",
|
|
"Specializing in turning complex requirements into elegant, maintainable code."
|
|
];
|
|
|
|
$nav_links = [
|
|
"~/blog" => "https://wp.dejvino.com/",
|
|
"~/projects" => "https://projects.dejvino.com/",
|
|
"~/code" => "https://git.dejvino.cz/",
|
|
"~/personal" => "https://www.dejvino.cz/"
|
|
];
|
|
|
|
$hardware_info = "Mandolin, Mountain Biking, and tuning my MX-5.";
|
|
|
|
/**
|
|
* Page design:
|
|
* - clean and simple, human-maintaninable
|
|
* - no dependencies
|
|
* - single-file website
|
|
*/
|
|
?>
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title><?= $site_title ?></title>
|
|
<link rel="canonical" href="<?= $site_url ?>">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta name="description" content="<?= $site_desc ?>">
|
|
<meta name="author" content="<?= $name ?>">
|
|
|
|
<!-- Open Graph / Social Media -->
|
|
<meta property="og:type" content="website">
|
|
<meta property="og:url" content="<?= $site_url ?>">
|
|
<meta property="og:title" content="<?= $name ?>">
|
|
<meta property="og:description" content="<?= $subtitle ?>">
|
|
|
|
<style>
|
|
<?php
|
|
include 'style.css';
|
|
?>
|
|
</style>
|
|
<link rel="shortcut icon" href="favicon.ico">
|
|
</head>
|
|
<body>
|
|
|
|
<main class="bento-grid">
|
|
<section class="card profile">
|
|
<?php
|
|
if (file_exists($photo_file)) {
|
|
$avatarBase64 = base64_encode(file_get_contents($photo_file));
|
|
echo '<img src="data:image/png;base64,' . $avatarBase64 . '" alt="' . $name . '" class="avatar" width="120" height="160" />';
|
|
} else {
|
|
echo '<div class="avatar-placeholder"></div>';
|
|
}
|
|
?>
|
|
<div class="header-text">
|
|
<h1><?= $name ?></h1>
|
|
<p class="subtitle"><?= $subtitle ?></p>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="card about">
|
|
<h2>Bio</h2>
|
|
<?php foreach ($about_text as $para): ?>
|
|
<p><?= $para ?></p>
|
|
<?php endforeach; ?>
|
|
</section>
|
|
|
|
<section class="card links">
|
|
<h2>Navigation</h2>
|
|
<ul class="link-grid">
|
|
<?php foreach ($nav_links as $label => $url): ?>
|
|
<li><a href="<?= $url ?>"><span><?= $label ?></span></a></li>
|
|
<?php endforeach; ?>
|
|
</ul>
|
|
</section>
|
|
|
|
<section class="card interests">
|
|
<h2>Likes</h2>
|
|
<p><?= $hardware_info ?></p>
|
|
</section>
|
|
|
|
<section class="card contact">
|
|
<h2>Remote_Access</h2>
|
|
<p class="mono-addr">
|
|
Contact email: <span id="contact-mail">uncovering...</span>
|
|
</p>
|
|
</section>
|
|
</main>
|
|
|
|
<script>
|
|
((u, d, t) => {
|
|
const addr = u + '@' + d + '.' + t;
|
|
const el = document.getElementById("contact-mail");
|
|
el.innerHTML = `<a href="mailto:${addr}">${addr}</a>`;
|
|
})('<?= $email_user ?>', 'dejvino', 'cz');
|
|
</script>
|
|
</body>
|
|
</html>
|