This commit is contained in:
floppydiskette 2023-07-26 00:08:58 +01:00 committed by Frankie B
parent 5a39e2a796
commit 8e81858470
30 changed files with 311 additions and 183 deletions

View file

@ -17,7 +17,7 @@
*/
'name' => env('APP_NAME', 'diskfloppy.me'),
'version' => '5.4.6',
'version' => '5.5.0-DEV',
/*
|--------------------------------------------------------------------------

View file

@ -1,4 +1,4 @@
* {
body {
font-family: monospace;
}
@ -13,11 +13,11 @@ ul {
table.banner {
margin-left: auto;
margin-right: auto;
border: 2px solid #E04A38;
background-color: #E6897E;
border: 2px solid #e04a38;
background-color: #e6897e;
width: 95%;
/* Passes both WCAG AD and WCAG AAA contrast tests */
color: #0F0F0F;
color: #0f0f0f;
}
table.banner td {
@ -25,7 +25,7 @@ table.banner td {
}
table.banner td a {
color: #0F0F0F;
color: #0f0f0f;
}
table.banner td a:hover {
@ -34,32 +34,24 @@ table.banner td a:hover {
div.page {
min-width: 780px;
max-width: 1024px;
max-width: 800px;
padding-left: 0.5em;
padding-right: 0.5em;
margin: auto;
}
h1.inline {
font-family: sans-serif;
font-weight: normal;
margin-top: 0em;
clear: none;
font-size: 100%;
display: inline;
}
h1.inline:before { content: "" }
h1:before { content: "> " }
h2:before { content: ">> " }
h3:before { content: ">>> " }
h1, h2, h3 {
font-family: monospace;
font-weight: normal;
h1,
h2,
h3 {
margin-top: 1em;
clear: left;
color: #FFFFFF;
color: #ffffff;
}
img {
@ -78,14 +70,13 @@ table.form td {
/* -------------------------------------------------------------------------- */
div.preview {
display: inline-block;
width: 30em;
max-width: 100%;
text-align: center;
vertical-align: top;
margin-bottom: 2em
margin-bottom: 2em;
}
div.project {
@ -94,127 +85,146 @@ div.project {
max-width: 100%;
text-align: center;
vertical-align: top;
margin-bottom: 2em
margin-bottom: 2em;
}
div.preview .heading .name, div.project .heading .name {
font-size: 120%
div.preview .heading .name,
div.project .heading .name {
font-size: 120%;
}
div.preview img, div.project img {
div.preview img,
div.project img {
width: auto;
max-width: 90%;
max-height: 15em
max-height: 15em;
}
div.preview pre.small, div.project pre.small {
div.preview pre.small,
div.project pre.small {
font-size: 75%;
overflow: hidden
overflow: hidden;
}
div.preview pre, div.project pre {
div.preview pre,
div.project pre {
background-color: #222;
color: #ccc;
display: inline-block;
text-align: left;
padding: 0.2em;
max-width: 90%
max-width: 90%;
}
div.project pre {
border: 1px solid #666666
border: 1px solid #666666;
}
pre {
display: inline;
max-width: 95%;
overflow: auto
overflow: auto;
}
.header a {
text-decoration: none
text-decoration: none;
}
nav {
margin-bottom: 0.3em
margin-bottom: 0.3em;
text-align: left;
}
div.ddate {
text-align: center
nav div a img {
width: 32px;
}
nav div h1 {
font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto,
Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue,
sans-serif;
font-weight: normal;
font-size: 30px;
margin: 10px;
margin-left: 0px;
}
div.date {
text-align: center;
}
div.note {
font-style: italic
font-style: italic;
}
table {
border-collapse: collapse;
border-color: #FFFFFF;
border-color: #ffffff;
}
table.noborder td {
border: none
border: none;
}
table.skami a {
text-decoration: none
text-decoration: none;
}
table.weather th {
font-weight: normal
font-weight: normal;
}
table.weather td {
font-weight: bold;
text-align: right
text-align: right;
}
.project .name {
font-weight: bold
font-weight: bold;
}
.toplinks a {
margin-right: 0.5em;
text-decoration: none
text-decoration: none;
}
div.inlinepage {
margin-top: 2em;
border: 0;
padding: 0
padding: 0;
}
div.pheader {
font-size: 120%
font-size: 120%;
}
div.pheader span.date {
margin-right: 1em;
font-weight: normal
font-weight: normal;
}
div.pheader a {
font-weight: bold;
text-decoration: none
text-decoration: none;
}
div.rss {
position: absolute;
top: 1em;
right: 1em
right: 1em;
}
div.archived {
margin-top: 0.5em
margin-top: 0.5em;
}
div.archived span.date {
font-style: italic;
margin-right: 0.2em
margin-right: 0.2em;
}
video {
max-width: 100%
max-width: 100%;
}
.toplinks span {
@ -222,7 +232,7 @@ .toplinks span {
text-align: right;
float: left;
width: 8em;
margin-right: 0.5em
margin-right: 0.5em;
}
.deprecated {
@ -231,15 +241,15 @@ .deprecated {
color: #aa0000;
text-align: center;
padding-bottom: 0.5em;
border-bottom: 2px dashed #aa0000
border-bottom: 2px dashed #aa0000;
}
.project .attributes {
font-style: italic
font-style: italic;
}
.project .attribbracket {
margin-left: 0.5em
margin-left: 0.5em;
}
.toplinks {
@ -247,11 +257,11 @@ .toplinks {
width: 100%;
padding-top: 0.5em;
padding-bottom: 0.5em;
border-bottom: 1px solid #cccccc
border-bottom: 1px solid #cccccc;
}
table td {
border: 1px solid white
border: 1px solid white;
}
td {
@ -260,7 +270,7 @@ td {
}
table.skami {
border-color: #eeeeee !important
border-color: #eeeeee !important;
}
.header .pagetree {
@ -271,25 +281,30 @@ .header .pagetree {
padding-top: 0.1em;
padding-bottom: 0.1em;
border-top: 1px solid #cccccc;
color: #FFFFFF;
color: #ffffff;
}
.header .pagetree .title {
color: #fff
color: #fff;
}
.header {
font-size: 100%;
font-weight: normal;
padding-bottom: 0em;
border-bottom: 1px solid #cccccc;
text-align: center;
color: #FFFFFF;
color: #ffffff;
}
h1 { font-size: 150% }
h2 { font-size: 130% }
h3 { font-size: 115% }
h1 {
font-size: 150%;
}
h2 {
font-size: 130%;
}
h3 {
font-size: 115%;
}
body {
font-family: sans-serif;
@ -319,7 +334,7 @@ table.commits tr td {
a {
color: #99f;
text-decoration: none
text-decoration: none;
}
table.gb_entryform tr td {
@ -340,8 +355,26 @@ table.gb_entryform tr td input {
margin-bottom: 5px;
}
table.gb_entryform_container {
width: 100%;
}
table.gb_entryform_container tr td {
border: none;
vertical-align: top;
}
table.gb_entryform_container tr td p,
table.gb_entryform_container tr td ul {
margin: 0px;
}
table.gb_entryform tbody tr td textarea {
width: 210px;
}
table.gb_entry tr td {
border: solid #FFFFFF;
border: solid #ffffff 1px;
width: 500px;
vertical-align: top;
padding: 5px;
@ -354,7 +387,7 @@ table.gb_entry {
table.gb_admin {
margin-bottom: 5px;
width: 500px;
border: #FFFFFF solid;
border: #ffffff solid;
}
table.gb_admin tr td {
@ -376,3 +409,12 @@ table.gb_admin tr td.gb_message {
vertical-align: top;
padding: 5px;
}
table.infotable tr td {
border: none;
padding-right: 5px;
}
table.infotable tr td h1 {
margin: 0px;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 561 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 459 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 853 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -16,6 +16,6 @@
@break
@endif
{{ str_pad($count+1, 2, '0', STR_PAD_LEFT) }}] <a href="{{ $track->url }}">{{ $track->name }} {{ $track->artist }}</a>
<small>({{ $track->plays }} plays)</small><br/>
<small>({{ $track->plays }} plays)</small><br>
@php $count++ @endphp
@endforeach

View file

@ -2,7 +2,7 @@
@section('title', 'Error 401: Unauthorized User!')
@section('content')
<h1>{{ $error }}</h1>
<hr/>
<hr>
@if(isset($description))
<p>{{ $description }}</p>
@endif

View file

@ -2,11 +2,11 @@
@section('title', 'Error 403: IP Blocked!')
@section('content')
<h1>Error 403: IP Blocked!</h1>
<hr/>
<hr>
<p>Your IP has been banned from submitting to the guestbook.</p>
@if (isset($reason))
<p><b>Reason:</b> {{ $reason }}</p>
@endif
<br/>
<br>
Click <a href="/guestbook">here</a> to go back to the guestbook.
@stop

View file

@ -2,9 +2,9 @@
@section('title', 'Error 429: Overclocking Detected!')
@section('content')
<h1>Error 429: Overclocking Detected!</h1>
<hr/>
<hr>
<p>Whoa there! Your submissions are going at warp speed.</p>
<p>Remember you can only submit an entry <u>once every hour</u>!</p>
<br/>
<br>
Click <a href="/guestbook">here</a> to go back to the guestbook.
@stop

View file

@ -2,7 +2,7 @@
@section('title', 'Error 401: Unauthorized User!')
@section('content')
<h1>Error 401: Unauthorized User!</h1>
<hr/>
<hr>
<p>Woah there! Only authorized users can access this page. Please <a href="/login">log in</a> to proceed.</p>
<p>Ended up here on accident? Click <a href="/">here</a> to return to the homepage</u>!</p>
@stop

View file

@ -4,7 +4,7 @@
<a href="https://www.linux.org/"><img src="{{ URL::asset ('images/buttons/linuxnow.gif') }}" width="88" height="31" alt="Linux NOW!"></a>&nbsp;
<a href="https://www.vim.org/"><img src="{{ URL::asset ('images/buttons/vim.gif') }}" width="88" height="31" alt="vim"></a>&nbsp;
<a href="http://jigsaw.w3.org/css-validator/check/referer"><img src="{{ URL::asset ('images/buttons/vcss-blue.gif') }}" width="88" height="31" alt="Valid CSS!"></a>&nbsp;
<img src="{{ URL::asset ('images/buttons/valid-html401-blue.png') }}" width="88" height="31" alt="Valid HTML 4.01!"><br/>
This site is best viewed at 1024x768 with 16-bit color or better<br/>
&copy; floppydisk 2021-{{ date('Y') }}, Site Version {{ config('app.version') }}, <a href="https://github.com/floppydisk05/diskfloppy.me">GitHub</a><br/>
<img src="{{ URL::asset ('images/buttons/valid-html401-blue.png') }}" width="88" height="31" alt="Valid HTML 4.01!"><br>
This site is best viewed at 1024x768 with 16-bit color or better<br>
&copy; floppydisk 2021-{{ date('Y') }}, Site Version {{ config('app.version') }}, <a href="https://github.com/floppydisk05/diskfloppy.me">GitHub</a><br>
</div>

View file

@ -1,18 +1,27 @@
<nav>
<div>
<a href="/">home</a> |
<a href="//git.diskfloppy.me/">cgit</a> |
<a href="//wiki.diskfloppy.me/">wiki</a> |
<!--<a href="/">home</a> |
<a href="//git.diskfloppy.me/">cgit</a> |
<a href="/projects/">projects</a> |
<a href="/calculators/">calculators</a> |
<a href="/computers/">computers</a> |
<a href="/bookmarks/">bookmarks</a> |
<a href="/guestbook/">guestbook</a>
@if (auth()->check())
| <a href="/admin/">admin</a>
| <a href="/admin/">admin</a>
| ({{ auth()->user()->name }}) <a href="/logout">logout</a>
@else
| <a href="/login">login</a>
@endif
@else
| <a href="/login">login</a>
@endif
-->
<h1>diskfloppy.me | <strong>@yield('title')</strong></h1>
<a href="/" title="Home"><img src="/images/icons/nav/home.png"></a>
<a href="//git.diskfloppy.me/" title="cgit"><img src="/images/icons/nav/repo.png"></a>
<a href="/bookmarks/" title="Bookmarks"><img src="/images/icons/nav/bookmarks.png"></a>
<a href="/guestbook/" title="Guestbook"><img src="/images/icons/nav/guestbook.png"></a>
<a href="/contact/" title="Contact"><img src="/images/icons/nav/mail.png"></a>
<a href="/weather/" title="Weather"><img src="/images/icons/nav/weather.png"></a>
<a href="/music/" title="Music"><img src="/images/icons/nav/music.png"></a>&nbsp;&nbsp;
<a href="/login/" title="Log in"><img src="/images/icons/nav/login.png"></a>
</div>
</nav>

View file

@ -2,7 +2,7 @@
@section('title', 'Delete confirm')
@section('content')
<h1>Delete Confirmation</h1>
<hr/>
<hr>
<p>Are you sure you want to delete this entry?</p>
<h3>Entry Details:</h3>

View file

@ -1,5 +1,5 @@
@extends('layouts.default-admin')
@section('title', 'guestbook')
@section('title', 'Guestbook')
@section('content')
@php
$entries = DB::select('
@ -13,8 +13,8 @@
<table class="gb_admin">
<tr>
<td>
Name:&nbsp;{{ $entry->name }}<br/>
IP:&nbsp;&nbsp;&nbsp;{{ $entry->ip_address }}<br/>
Name:&nbsp;{{ $entry->name }}<br>
IP:&nbsp;&nbsp;&nbsp;{{ $entry->ip_address }}<br>
Date:&nbsp;{{ gmdate("H:i:s - Y-m-d", $entry->timestamp) }}
</td>
<td class="gb_del">
@ -23,7 +23,7 @@
</tr>
<tr>
<td colspan="2" class="gb_message">
<br/>
<br>
{{ htmlspecialchars($entry->message) }}
</td>
</tr></table>

View file

@ -1,28 +1,46 @@
@extends('layouts.default')
@section('title', 'bookmarks')
@section('title', 'Bookmarks')
@section('description', 'This is the personal homepage of floppydisk.')
@section('content')
@php
$categories = DB::select('
@php
$categories = DB::select('
SELECT id, name
FROM bookmark__categories
ORDER BY priority ASC
');
@endphp
@endphp
@foreach ($categories as $category)
<h1>{{ $category->name }}</h1>
@php
$sites = DB::select('
@foreach ($categories as $category)
<table class="infotable">
<tr>
<td colspan="2">
<h1>{{ $category->name }}</h1>
</td>
</tr>
<tr>
<td colspan="2">
<hr>
</td>
</tr>
@php
$sites = DB::select(
'
SELECT name, url, description
FROM bookmark__sites
WHERE category_id = ? ORDER BY priority ASC
', array($category->id));
@endphp
<ul>
@foreach ($sites as $site)
<li><a href="{{ $site->url }}">{{ $site->name }}</a> - {{ $site->description }}</li>
',
[$category->id],
);
@endphp
@foreach ($sites as $site)
<tr>
<td><a href="{{ $site->url }}">{{ $site->name }}</a>
- {{ $site->description }}</td>
</tr>
@endforeach
</table>
<br>
@endforeach
</ul>
@endforeach
@stop

View file

@ -1,5 +1,5 @@
@extends('layouts.default')
@section('title', 'calculators')
@section('title', 'Calculators')
@section('description', 'C a l c u l a t o r s.')
@section('content')
<h1>CASIO fx-CG50</h1>

View file

@ -1,5 +1,5 @@
@extends('layouts.default')
@section('title', 'computers')
@section('title', 'Computers')
@section('description', 'Computers I own or have owned.')
@section('content')
<table class="computers" border="0">

View file

@ -1,47 +1,58 @@
@extends('layouts.default')
@section('title', 'guestbook')
@section('title', 'Guestbook')
@section('content')
<br/>
<form method="POST" action="/guestbook">
@csrf
<x-honeypot />
<table class="gb_entryform">
<tr>
<td>
<label for="name">Name:</label>
</td>
<td>
<input name="name" type="text" id="name" placeholder="John Doe">
</td>
<td>
<span class="text-danger">{{ $errors->first('name') }}</span>
</td>
</tr>
<tr>
<td>
<label for="message">Message:</label>
</td>
<td>
<textarea name="message" id="message" rows="3"></textarea>
</td>
<td>
<span class="text-danger">{{ $errors->first('message') }}</span>
</td>
</tr>
<tr>
<td colspan="2">
<button type="submit">Submit</button>
</td>
</tr>
</table>
</form>
<p>A few things to note:</p>
<ul>
<li>You can submit an entry <u>once every hour</u>.</li>
<li>Your IP address <u>will</u> be logged but <u>will not</u> be publically displayed.</li>
<li>Any entries that appear to be spam <u>will</u> be removed.</li>
</ul>
<hr/>
<br>
<table class="gb_entryform_container">
<tr>
<td>
<form method="POST" action="/guestbook">
@csrf
<x-honeypot />
<table class="gb_entryform">
<tr>
<td>
<label for="name"><strong>Name:</strong></label>
</td>
<td>
<input name="name" type="text" id="name" placeholder="John Doe">
</td>
<td>
<span class="text-danger">{{ $errors->first('name') }}</span>
</td>
</tr>
<tr>
<td>
<label for="message"><strong>Message:</strong></label>
</td>
<td>
<textarea name="message" id="message" rows="3"></textarea>
</td>
<td>
<span class="text-danger">{{ $errors->first('message') }}</span>
</td>
</tr>
<tr>
<td></td>
<td>
<button type="submit">Submit</button>
</td>
</tr>
</table>
</form>
</td>
<td>
<p>A few things to note:</p>
<ul>
<li>You can submit an entry <u>once every hour</u>.</li>
<li>Your IP address is logged but <u>not</u> publically displayed.</li>
<li>Any entries that appear to be spam <u>will</u> be removed.</li>
</ul>
</td>
</tr>
</table>
<hr>
@php
$entries = DB::select('
SELECT name, timestamp, message
@ -51,11 +62,16 @@
@endphp
<h1>Entries <small>({{ count($entries) }} total)</small></h1>
@foreach ($entries as $entry)
<table class="gb_entry"><tr><td>
Name:&nbsp;{{ $entry->name }}<br/>
Date:&nbsp;{{ gmdate("H:i:s - Y-m-d", $entry->timestamp) }}<br/><br/>
{{ $entry->message }}
</td></tr></table>
<table class="gb_entry">
<tr>
<td>
Submitted by <strong>{{ $entry->name }}</strong>
on <strong>{{ gmdate('H:i:s - Y-m-d', $entry->timestamp) }}</strong>
<hr>
{{ $entry->message }}
</td>
</tr>
</table>
<br>
@endforeach
@stop

View file

@ -1,18 +1,37 @@
@extends('layouts.default')
@section('title', 'home')
@section('title', 'Home')
@section('description', 'This is the personal homepage of floppydisk.')
@section('content')
<h1>About me</h1>
<p>Hi!<br/>
This is the personal homepage of floppydisk.
</p>
<h2>Interests</h2>
<p>
&#9670; <b>Tech Theatre</b> - Lighting, Stage Management, etc.<br/>
&#9670; <b>Programming</b>&nbsp; - HTML, JavaScript, C#, Java, PHP, Ruby<br/>
&#9670; <b>Photography</b>&nbsp; - <a href="https://www.flickr.com/photos/floppydisk/">Flickr</a>
</p>
<p>Hi! This my personal homepage on the <strong>W</strong>orld <strong>W</strong>ide <strong>W</strong>eb.
</p>
<table class="infotable">
<tr>
<td colspan="2">
<h1>Interests</h1>
</td>
</tr>
<tr>
<td colspan="2">
<hr>
</td>
</tr>
<tr>
<td>&#9670; <b>Tech Theatre</b></td>
<td>- Lighting, Stage Management, etc.</td>
</tr>
<tr>
<td>&#9670; <b>Programming</b></td>
<td>- HTML, JavaScript, C#, Java, PHP, Ruby</td>
</tr>
<tr>
<td>&#9670; <b>Photography</b></td>
<td>- <a href="https://www.flickr.com/photos/floppydisk/">Flickr</a></td>
</tr>
</table>
<br>
{{--
<!-- Last.fm -->
@include('components.lastfm')
@ -21,18 +40,42 @@
<!-- Site Updates -->
@include('components.git')
--}}
<h1>Contact</h1>
<p><strong>Mail</strong>:&nbsp;<a href="mailto:contact@diskfloppy.me">contact@diskfloppy.me</a><br/>
<strong>IRC</strong>:&nbsp;&nbsp;<a href="https://r-type.ca/page.php?id=1034">floppydisk @ r-type</a><br/>
</p>
<h1>Elsewhere</h1>
<p><strong>Mastodon:</strong>&nbsp;<a rel="me" href="https://c.im/@floppydisk">@floppydisk@c.im</a><br/>
<strong>Matrix:</strong>&nbsp;&nbsp;&nbsp;<a href="https://matrix.to/#/@floppydisk:arcticfoxes.net">@floppydisk:arcticfoxes.net</a><br/>
<strong>Twitter:</strong>&nbsp;&nbsp;<a href="https://twitter.com/floppydisk__">@floppydisk__</a><br/>
<strong>GitHub:</strong>&nbsp;&nbsp;&nbsp;<a href="https://github.com/floppydisk05">floppydisk05</a><br/>
<strong>SDF:</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://floppydisk.sdf.org/">~floppydisk</a><br/>
<a href="https://stackoverflow.com/users/15933092/floppydisk"><img src="https://stackoverflow.com/users/flair/15933092.png?theme=dark" width="208" height="58" alt="profile for floppydisk at Stack Overflow, Q&amp;A for professional and enthusiast programmers" title="profile for floppydisk at Stack Overflow, Q&amp;A for professional and enthusiast programmers"></a>
</p>
<table class="infotable">
<tr>
<td colspan="2">
<h1>Contact &amp; social</h1>
</td>
</tr>
<tr>
<td colspan="2">
<hr>
</td>
</tr>
<tr>
<td><strong>E-mail</strong></td>
<td><a href="mailto:contact@diskfloppy.me">contact (at) diskfloppy (dot) me</a></td>
</tr>
<tr>
<td><strong>Mastodon:</strong></td>
<td><a rel="me" href="https://c.im/@floppydisk">@floppydisk@c.im</a></td>
</tr>
<tr>
<td><strong>Matrix:</strong></td>
<td><a href="https://matrix.to/#/@floppydisk:arcticfoxes.net">@floppydisk:arcticfoxes.net</a></td>
</tr>
<tr>
<td><strong>GitHub:</strong></td>
<td><a href="https://github.com/floppydisk05">floppydisk05</a></td>
</tr>
<!--<tr>
<td colspan="2">
<a href="https://stackoverflow.com/users/15933092/floppydisk"><img
src="https://stackoverflow.com/users/flair/15933092.png?theme=dark" width="208" height="58"
alt="profile for floppydisk at Stack Overflow, Q&amp;A for professional and enthusiast programmers"
title="profile for floppydisk at Stack Overflow, Q&amp;A for professional and enthusiast programmers"></a>
</td>
</tr>-->
</table>
@stop

View file

@ -1,16 +1,16 @@
<?php $categories = app('config')->get('projects'); ?>
@extends('layouts.default')
@section('title', 'projects')
@section('title', 'Projects')
@section('description', 'My projects')
@section('content')
@foreach ($categories as $category)
<h1>{{ $category['name']}}</h1>
@foreach ($category['projects'] as $project)
<div>
<a href="{{ $project['url'] }}">{{ $project['name'] }}</a> - {{ $project['description'] }}<br/>
<a href="{{ $project['url'] }}">{{ $project['name'] }}</a> - {{ $project['description'] }}<br>
<b>Languages:</b> {{ implode(", ", $project['languages']) }}
</div>
<br/>
<br>
@endforeach
@endforeach
@stop