mirror of
https://codeberg.org/vlw/vlw.se.git
synced 2025-09-13 21:13:40 +02:00
The PR is a huge refactor of all Reflect and Vegvisir code. I've merged the API and "Front-end" codebases together into the same root, this will allow for both Reflect and Vegvisir to use the same resources. Not only that, but I've also added proper database modeling with actual OOP inheritance for database tables. Reviewed-on: https://codeberg.org/vlw/vlw.se/pulls/23
133 lines
4.5 KiB
PHP
133 lines
4.5 KiB
PHP
<?php
|
|
|
|
use VLW\Database\Models\Work\Work;
|
|
use const VLW\{TIMELINE_PREVIEW_LIMIT_PARAM, TIMELINE_PREVIEW_LIMIT_COUNT};
|
|
|
|
require_once VV::root("src/Consts.php");
|
|
require_once VV::root("src/Database/Models/Work/Work.php");
|
|
|
|
?>
|
|
<style><?= VV::css("public/assets/css/pages/work") ?></style>
|
|
<section class="hero">
|
|
<div class="item vegvisir">
|
|
<div class="wrapper">
|
|
<div class="title">
|
|
<?= VV::embed("public/assets/media/icons/vegvisir.svg") ?>
|
|
<h1>vegvisir</h1>
|
|
</div>
|
|
<p><?= (new Work("vlw/vegvisir"))->summary() ?></p>
|
|
<div class="actions">
|
|
<a href="https://vegvisir.vlw.se"><button class="inline solid">
|
|
<p>read more</p>
|
|
<?= VV::embed("public/assets/media/icons/chevron.svg") ?>
|
|
</button></a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="item reflect">
|
|
<div class="wrapper">
|
|
<div class="title">
|
|
<?= VV::embed("public/assets/media/icons/reflect.svg") ?>
|
|
<h1>reflect</h1>
|
|
</div>
|
|
<p><?= (new Work("vlw/reflect"))->summary() ?></p>
|
|
<div class="actions">
|
|
<a href="https://reflect.vlw.se"><button class="inline solid">
|
|
<p>read more</p>
|
|
<?= VV::embed("public/assets/media/icons/chevron.svg") ?>
|
|
</button></a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
<section class="featured">
|
|
<featured-item>
|
|
<div class="title">
|
|
<?= VV::embed("public/assets/media/icons/vw.svg") ?>
|
|
</div>
|
|
<h3>vlw.se</h3>
|
|
<p>Can I put my own website here, is that cheating? Maybe, but I think this site counts as the most important thing I've personally created. I've only used my own libraries and frameworks to create this website, so it kind of works as a live demonstration of many of my web projects bundled together.</p>
|
|
<div class="actions">
|
|
<a href="https://codeberg.org/vlw/vlw.se"><button class="inline">
|
|
<p>read more</p>
|
|
<?= VV::embed("public/assets/media/icons/chevron.svg") ?>
|
|
</button></a>
|
|
</div>
|
|
</featured-item>
|
|
<featured-item>
|
|
<div class="title">
|
|
<?= VV::embed("public/assets/media/icons/vw.svg") ?>
|
|
</div>
|
|
<h3>Silly dabbles</h3>
|
|
<p>I create silly things for fun to challenge myself sometimes, and putting them all on the timeline is not right. So I made an appropriately-themed and named page to highlight most of my "what if I could" projects.</p>
|
|
<div class="actions">
|
|
<a href="/playground"><button class="inline">
|
|
<p>playground</p>
|
|
<?= VV::embed("public/assets/media/icons/chevron.svg") ?>
|
|
</button></a>
|
|
</div>
|
|
</featured-item>
|
|
<featured-item>
|
|
<div class="title">
|
|
<?= VV::embed("public/assets/media/icons/repo.svg") ?>
|
|
</div>
|
|
<h3>vlw/php-mysql</h3>
|
|
<p><?= (new Work("vlw/php-mysql"))->summary() ?></p>
|
|
<div class="actions">
|
|
<a href="https://codeberg.org/vlw/php-mysql"><button class="inline">
|
|
<?= VV::embed("public/assets/media/icons/codeberg.svg") ?>
|
|
<p>view source</p>
|
|
<?= VV::embed("public/assets/media/icons/chevron.svg") ?>
|
|
</button></a>
|
|
</div>
|
|
</featured-item>
|
|
<featured-item>
|
|
<div class="title">
|
|
<?= VV::embed("public/assets/media/icons/star.svg") ?>
|
|
</div>
|
|
<h3>Website for iCellate Medical</h3>
|
|
<p><?= (new Work("icellate/website"))->summary() ?></p>
|
|
<div class="actions">
|
|
<a href="/work/icellate/website"><button class="inline">
|
|
<p>read more</p>
|
|
<?= VV::embed("public/assets/media/icons/chevron.svg") ?>
|
|
</button></a>
|
|
</div>
|
|
</featured-item>
|
|
<featured-item>
|
|
<div class="title">
|
|
<?= VV::embed("public/assets/media/icons/star.svg") ?>
|
|
</div>
|
|
<h3>Modernizing GeneMate by iCellate</h3>
|
|
<p><?= (new Work("icellate/genemate"))->summary() ?></p>
|
|
<div class="actions">
|
|
<a href="/work/icellate/genemate"><button class="inline">
|
|
<p>read more</p>
|
|
<?= VV::embed("public/assets/media/icons/chevron.svg") ?>
|
|
</button></a>
|
|
</div>
|
|
</featured-item>
|
|
<featured-item>
|
|
<div class="title">
|
|
<?= VV::embed("public/assets/media/icons/star.svg") ?>
|
|
</div>
|
|
<h3>Custom pages for Deltaco AB</h3>
|
|
<p><?= (new Work("deltaco/asyncapp"))->summary() ?></p>
|
|
<div class="actions">
|
|
<a href="/work/deltaco/asyncapp"><button class="inline">
|
|
<p>read more</p>
|
|
<?= VV::embed("public/assets/media/icons/chevron.svg") ?>
|
|
</button></a>
|
|
</div>
|
|
</featured-item>
|
|
</section>
|
|
<section class="heading">
|
|
<h1>latest projects</h1>
|
|
</section>
|
|
<?= VV::include("public/work/timeline?" . http_build_query([TIMELINE_PREVIEW_LIMIT_PARAM => TIMELINE_PREVIEW_LIMIT_COUNT])) ?>
|
|
<section class="heading">
|
|
<a href="/work/timeline"><button class="inline solid">
|
|
<p>view full timeline</p>
|
|
<?= VV::embed("public/assets/media/icons/chevron.svg") ?>
|
|
</button></a>
|
|
</section>
|