Initial commit of simple php site.
This commit is contained in:
@@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
REMOTE_PATH="/home/admin/www/jasonhilder.dev/"
|
||||||
|
|
||||||
|
echo "Deploying to server..."
|
||||||
|
|
||||||
|
# Sync local project to server over SSH, only transferring changed files.
|
||||||
|
# -a = archive mode (preserves permissions, timestamps etc)
|
||||||
|
# -v = verbose output
|
||||||
|
# -z = compress data during transfer
|
||||||
|
# --delete = remove files on server that no longer exist locally
|
||||||
|
# --exclude = skip these files/dirs, they don't belong on the server
|
||||||
|
rsync -avz --delete \
|
||||||
|
--exclude='.git' \
|
||||||
|
--exclude='README.md' \
|
||||||
|
--exclude='deploy.sh' \
|
||||||
|
./ "server:$REMOTE_PATH"
|
||||||
|
|
||||||
|
echo "Deploy complete."
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<?php
|
||||||
|
define('ROOT', __DIR__);
|
||||||
|
require __DIR__ . '/src/router.php';
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
// --- Security headers ---
|
||||||
|
header_remove('X-Powered-By');
|
||||||
|
header('X-Frame-Options: DENY');
|
||||||
|
header('X-Content-Type-Options: nosniff');
|
||||||
|
header('Referrer-Policy: strict-origin-when-cross-origin');
|
||||||
|
header('Content-Security-Policy: default-src \'self\'');
|
||||||
|
|
||||||
|
// --- Routing ---
|
||||||
|
$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
|
||||||
|
|
||||||
|
if ($uri === false || $uri === null) {
|
||||||
|
http_response_code(400);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$routes = [
|
||||||
|
'/' => 'web/pages/home.php',
|
||||||
|
'/about' => 'web/pages/about.php',
|
||||||
|
];
|
||||||
|
|
||||||
|
$base = realpath(ROOT . '/web/pages');
|
||||||
|
|
||||||
|
if ($base === false) {
|
||||||
|
http_response_code(500);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (array_key_exists($uri, $routes)) {
|
||||||
|
$real = realpath(ROOT . '/' . $routes[$uri]);
|
||||||
|
|
||||||
|
if ($real !== false && str_starts_with($real, $base . DIRECTORY_SEPARATOR)) {
|
||||||
|
require $real;
|
||||||
|
} else {
|
||||||
|
http_response_code(403);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
http_response_code(404);
|
||||||
|
require ROOT . '/web/pages/404.php';
|
||||||
|
}
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
body {
|
|
||||||
background-color: #191919;
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<?php include_once(ROOT . '/web/partials/head.php'); ?>
|
||||||
|
|
||||||
|
<h1>404</h1>
|
||||||
|
<p>Seems this is not what you are looking for...</p>
|
||||||
|
|
||||||
|
<?php include_once(ROOT . '/web/partials/footer.php') ?>
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?php include_once(ROOT . '/web/partials/head.php'); ?>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h2 class="main-title">Hi, I'm Jason</h2>
|
||||||
|
<h1 class="sub-title">Software engineer.</h1>
|
||||||
|
<p>
|
||||||
|
I build backend systems, data pipelines, and internal tooling. I have a bias toward simplicity and the shortest path
|
||||||
|
to something solid — built to last, not just to ship. I'd rather understand a system deeply than paper over it with abstractions.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
When I'm not working, I'm either in the water surfing, spending time with my girlfriend, playing games, or digging into systems programming
|
||||||
|
— CPU simulators, indie game experiments, and the custom tooling that tends to grow around them. I run Linux, daily-drive a
|
||||||
|
Happy Hacking Keyboard, and have strong opinions about my desktop setup — some might call it a problem, I call it a hobby.
|
||||||
|
</p>
|
||||||
|
<div>
|
||||||
|
<p>Values I hold in work and life</p><br>
|
||||||
|
<span>Simplicity.</span><br>
|
||||||
|
<span>Pragmatism.</span><br>
|
||||||
|
<span>Minimalism.</span><br>
|
||||||
|
<span>Right tool for the job.</span><br>
|
||||||
|
<span>Unix philosophy</span><br>
|
||||||
|
</div>
|
||||||
|
<p> ---------------------------------------------- </p>
|
||||||
|
<div>
|
||||||
|
<a target="_blank" href="https://codeberg.org/jasonhilder">Codeberg</a>
|
||||||
|
<a target="_blank" href="https://github.com/jasonhilder">Github</a>
|
||||||
|
<a target="_blank" href="https://www.linkedin.com/in/jason-hilder/">LinkedIn</a>
|
||||||
|
<p><small>Active work lives on Codeberg — GitHub is kept as an archive of older projects.</small></p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<?php include_once(ROOT . '/web/partials/footer.php') ?>
|
||||||
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
</body>
|
||||||
|
<footer>
|
||||||
|
</footer>
|
||||||
|
</html
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Jason Hilder</title>
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="/web/static/favicon/apple-touch-icon.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="/web/static/favicon/favicon-32x32.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="/web/static/favicon/favicon-16x16.png">
|
||||||
|
<link rel="manifest" href="/web/static/favicon/site.webmanifest">
|
||||||
|
<link rel="stylesheet" href="/web/static/css/reset.css">
|
||||||
|
<link rel="stylesheet" href="/web/static/css/index.css">
|
||||||
|
<script src="/web/static/js/index.js" defer></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
@@ -465,3 +465,7 @@ label input {
|
|||||||
.debug-toggle-label {
|
.debug-toggle-label {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ADDITIONAL */
|
||||||
|
.main-title { margin-bottom:0px !important; }
|
||||||
|
.sub-title { margin-top:10px !important; }
|
||||||
Reference in New Issue
Block a user