diff --git a/routes/osp.js b/routes/osp.js
new file mode 100644
index 0000000..d6c9936
--- /dev/null
+++ b/routes/osp.js
@@ -0,0 +1,14 @@
+const handler = require('express-async-handler');
+
+function template(name) {
+ return handler(
+ async function (req, res) {
+ return res.template(name, { current_route: req.originalUrl });
+ }
+ );
+}
+
+module.exports = (router) => {
+ router.get('/osp/lightkeeper', template('osp/lightkeeper.pug'));
+ router.get('/osp/bfile', template('osp/bfile.pug'));
+}
\ No newline at end of file
diff --git a/routes/pages.js b/routes/pages.js
index 572e4ed..77cf469 100644
--- a/routes/pages.js
+++ b/routes/pages.js
@@ -26,4 +26,6 @@ module.exports = (router) => {
router.get('/about', handler(about));
// used only in about route
router.get('/power_of_php', phpower);
+
+ router.use(require('./osp'));
}
\ No newline at end of file
diff --git a/view/layout/main.pug b/view/layout/main.pug
index 70cac4a..9272abd 100644
--- a/view/layout/main.pug
+++ b/view/layout/main.pug
@@ -11,7 +11,11 @@ block root
"hr_2": "hr",
"Sources": "/sources",
"Services": "/services",
- "Resume": "/resume"
+ "Resume": "/resume",
+ "hr_2": "hr",
+ "Featured Open Source projects": "h1",
+ "⛯ Lightkeeper": "/osp/lightkeeper",
+ "🛸 blek! File": "/osp/bfile"
}
doctype html
@@ -78,6 +82,8 @@ html(style='overflow-y:auto' lang='en_US')
each route, name in routes
if (route == 'hr')
li
+ else if (route == 'h1')
+ li(style='padding-left:4px;margin:4px 0') #{name}
else
li(style='padding-left:4px')
if current_route == route
diff --git a/view/osp/bfile.pug b/view/osp/bfile.pug
new file mode 100644
index 0000000..0904d6e
--- /dev/null
+++ b/view/osp/bfile.pug
@@ -0,0 +1,29 @@
+extends ../layout/main.pug
+block root
+ include ../ui/label.pug
+block content
+ a(href='/') Go home
+ table
+ tbody
+ tr
+ td
+ img(src='https://file.blek.codes/android-chrome-192x192.png' width='128' height='128' title='blek! File logo' alt='blek! File logo' style='margin:20px')
+ td
+ h1 blek! File
+ p This is a minute file sharing service(like google drive but it doesnt store your files for long), as well as my first project that's made with rust.
+ p
+ .
+ I have been inspired by projects like
+ a(href='https://0x0.st') 0x0.st
+ | and
+ a(href='https://anonfiles.me') anonfiles.me
+ | to write this.
+ p
+ | Links:
+ a(href='https://git.blek.codes/blek/bfile')
+ +label('Git repo', '#AFA6BF')
+ |
+ a(href='https://file.blek.codes')
+ +label('My instance', '#BCA6BF')
+ img(src='https://files.blek.codes/file_ui.webp' title='blek!File UI' alt='blek!File UI')
+
\ No newline at end of file
diff --git a/view/osp/lightkeeper.pug b/view/osp/lightkeeper.pug
new file mode 100644
index 0000000..2b49b0c
--- /dev/null
+++ b/view/osp/lightkeeper.pug
@@ -0,0 +1,18 @@
+extends ../layout/main.pug
+block content
+ a(href='/') Go home
+ table
+ tbody
+ tr
+ td
+ img(src='https://github.com/kalaksi/lightkeeper/blob/master/flatpak/io.github.kalaksi.Lightkeeper-128px.png?raw=true' height='128' width='128' alt='Lightkeeper logo' title='Lightkeeper logo' style='border-radius:24px;margin:20px')
+ td
+ h1 Lightkeeper
+ p Lightkeeper is a tool for simplifying server administration over SSH. It basically wraps the SSH commands into a nice GUI for you to manage.
+ p Links:
+ ul
+ li
+ a(href='https://github.com/kalaksi/lightkeeper') GitHub repo
+ li
+ a(href='https://flathub.org/apps/io.github.kalaksi.Lightkeeper') Get it on Flathub
+ img(src='https://github.com/kalaksi/lightkeeper/raw/master/doc/images/LightkeeperRM-overview.png' height='320px')
\ No newline at end of file