Initial Commit
This commit is contained in:
commit
418e8ff301
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
/vendor
|
||||
/composer.lock
|
3
README.md
Normal file
3
README.md
Normal file
@ -0,0 +1,3 @@
|
||||
# Website
|
||||
|
||||
The fourth redesign of my website, finally a solid base I can build upon... Yeah
|
11
composer.json
Normal file
11
composer.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"repositories": [
|
||||
{
|
||||
"type": "vcs",
|
||||
"url": "https://git.willy.club/WillySoft/Route"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"willysoft/route": "dev-master"
|
||||
}
|
||||
}
|
44
helpers.php
Normal file
44
helpers.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Helper for evaluating/including views
|
||||
*/
|
||||
function view(string $_view, array $_data = [])
|
||||
{
|
||||
$_path = __DIR__ . '/view/' . $_view . '.php';
|
||||
extract($_data);
|
||||
require $_path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper for converting and outputting JSON
|
||||
*/
|
||||
function json_response(mixed $data, int $status_code = 200)
|
||||
{
|
||||
http_response_code($status_code);
|
||||
header('Content-type: application/json');
|
||||
echo json_encode($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper for reading and decoding JSON from request body
|
||||
*/
|
||||
function json_decode_input(): array|bool|null
|
||||
{
|
||||
return json_decode(file_get_contents('php://input'), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper for generating URLs
|
||||
*/
|
||||
function url(string $url, bool $full = false): string
|
||||
{
|
||||
$dir = dirname($_SERVER['SCRIPT_NAME']);
|
||||
if ($dir === '/') {
|
||||
$dir = '';
|
||||
}
|
||||
if (!$full) {
|
||||
return $dir . $url;
|
||||
}
|
||||
return isset($_SERVER['HTTPS']) ? 'https' : 'http' . '://' . $_SERVER['HTTP_HOST'] . $dir . $url;
|
||||
}
|
14
public/index.php
Normal file
14
public/index.php
Normal file
@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
require '../vendor/autoload.php';
|
||||
|
||||
require '../helpers.php';
|
||||
|
||||
use WillySoft\Route as App;
|
||||
|
||||
App::get('/', function() {
|
||||
view('home');
|
||||
});
|
||||
|
||||
http_response_code(404);
|
||||
view('404');
|
96
public/style.css
Normal file
96
public/style.css
Normal file
@ -0,0 +1,96 @@
|
||||
:root {
|
||||
--primary: #fff;
|
||||
--secondary: #eee;
|
||||
--text: #111;
|
||||
--links: #00f;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--primary: #181820;
|
||||
--secondary: #22222f;
|
||||
--text: #eee;
|
||||
--links: #aaf;
|
||||
}
|
||||
img {
|
||||
filter: brightness(85%);
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
background: var(--primary);
|
||||
margin: 0;
|
||||
color: var(--text);
|
||||
line-height: 1.5;
|
||||
font-size: 1rem;
|
||||
font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif;
|
||||
|
||||
padding: .75rem;
|
||||
max-width: 47rem;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
hr {
|
||||
display: none;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--links);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 1.953rem;
|
||||
line-height: 1.1;
|
||||
}
|
||||
h2 {
|
||||
font-size: 1.563rem;
|
||||
line-height: 1.2;
|
||||
}
|
||||
h3 {
|
||||
font-size: 1.25rem;
|
||||
line-height: 1.4;
|
||||
}
|
||||
h1+h2,
|
||||
h2+h3,
|
||||
h1 {
|
||||
margin-top: 2rem;
|
||||
margin-bottom: .75rem;
|
||||
}
|
||||
|
||||
img {
|
||||
display: block;
|
||||
height: auto;
|
||||
max-width: 100%;
|
||||
max-height: 20rem;
|
||||
}
|
||||
|
||||
table {
|
||||
display: block;
|
||||
border-collapse: collapse;
|
||||
overflow: auto;
|
||||
}
|
||||
tbody {
|
||||
display: table;
|
||||
width: 100%;
|
||||
}
|
||||
td,
|
||||
th {
|
||||
text-align: left;
|
||||
padding: .75rem;
|
||||
}
|
||||
tr:nth-child(even) {
|
||||
background: var(--secondary);
|
||||
}
|
||||
|
||||
pre,
|
||||
code {
|
||||
font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace;
|
||||
background: var(--secondary);
|
||||
}
|
||||
pre {
|
||||
padding: .75rem;
|
||||
max-width: 100%;
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
overflow-y: hidden;
|
||||
}
|
17
view/404.php
Normal file
17
view/404.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?= view('header', ['title' => 'Page not found']) ?>
|
||||
|
||||
<h1>Page not found</h1>
|
||||
|
||||
<p>Sorry, the page you requested could not be found on this server.</p>
|
||||
|
||||
<?php
|
||||
if (!isset($_SERVER['HTTP_REFERER'])) {
|
||||
$referer = url('/');
|
||||
} else {
|
||||
$referer = $_SERVER['HTTP_REFERER'];
|
||||
}
|
||||
?>
|
||||
|
||||
<a href="<?=htmlspecialchars($referer)?>">Return</a>
|
||||
|
||||
<?= view('footer') ?>
|
3
view/footer.php
Normal file
3
view/footer.php
Normal file
@ -0,0 +1,3 @@
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
21
view/header.php
Normal file
21
view/header.php
Normal file
@ -0,0 +1,21 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="<?=url('/')?>style.css">
|
||||
<title><?=$title?></title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<header>
|
||||
<nav>
|
||||
<a href="<?=url('/')?>">Home</a> |
|
||||
<a href="http://status.trygve.me">Status</a>
|
||||
</nav>
|
||||
<hr>
|
||||
</header>
|
||||
|
||||
<main>
|
38
view/home.php
Normal file
38
view/home.php
Normal file
@ -0,0 +1,38 @@
|
||||
<?= view('header', ['title' => 'Home']) ?>
|
||||
|
||||
<h1>Service</h1>
|
||||
<p>This space hosts some services for me and friends.</p>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<a href="//git.willy.club">Gitea</a><br>
|
||||
A place to host your code
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Matrix homeserver</a><br>
|
||||
<span style="color: red">Registrations closed for the time being maybe forever</span>
|
||||
<br>
|
||||
Easy to use end-to-end encrypted comms
|
||||
</li>
|
||||
<li>
|
||||
<a href="mumble://mumble.willy.club">Mumble</a><br>
|
||||
Voice chat application
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h1>Touch</h1>
|
||||
|
||||
<p>Matrix: <a href="https://matrix.to/#/@william:willy.club">@william:willy.club</a></p>
|
||||
|
||||
|
||||
<h1>Blog</h1>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<a href="/posts/0">Restoring my dignity</a> (forever draft)<br>
|
||||
I have fallen and I can't get up<br>
|
||||
<small><b><?=date("d.m.Y")?></b></small>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<?= view('footer') ?>
|
Loading…
Reference in New Issue
Block a user