Skip to content

Commit caabf10

Browse files
committed
🔥 Removed custom cursor && moved to webp
1 parent 799a81f commit caabf10

40 files changed

+20
-133
lines changed

src/app.css

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,7 @@
7373
@apply h-full;
7474
}
7575
* {
76-
@apply cursor-none border-border;
77-
}
78-
*:hover {
79-
@apply cursor-none;
76+
@apply border-border;
8077
}
8178
body {
8279
@apply h-full bg-background text-foreground;

src/lib/index.ts

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export const projects = [
1919
{
2020
title: 'console-utils-rs',
2121
summary: 'CLI Input Library for Rust',
22-
picture: 'console-utils.png',
22+
picture: 'console-utils.webp',
2323
description:
2424
"This project was initiated by writing Python during my Computer Science lessons. The thing is that Rust itself (the std library) does'nt have a very “nice” way of retrieving user input. In comparison, python has the super simple <code >input</code> function which can do that very easily! Therefore, I decided to develop this crate which main point is to be very developer friendly with providing high functionality!",
2525
link: 'https://crates.io/crates/console-utils',
@@ -28,7 +28,7 @@ export const projects = [
2828
{
2929
title: 'dashboard',
3030
summary: 'A dashboard of all my websites',
31-
picture: 'dashboard.png',
31+
picture: 'dashboard.webp',
3232
description:
3333
'The summary basically is enough to explain this project: A dashboard of all my websites. I am here going to explain further how it came to this project. I bought some time ago the domain <code>nwrenger.dev</code> and wanted to host under that domain some websites, which btw was harder than I thought because of DNS, the provider and GH-Pages. Nevertheless, the idea of an overview of all my websites began to grow, and now here we are!',
3434
link: 'https://github.com/nwrenger/dashboard',
@@ -37,7 +37,7 @@ export const projects = [
3737
{
3838
title: 'doenermann-bot',
3939
summary: 'The Discord Bot',
40-
picture: 'doenermann-bot.png',
40+
picture: 'doenermann-bot.webp',
4141
description:
4242
'Before I am explaining the origins/need of this bot, please note that the black bars in the picture are there to protect personal information, nothing more, nothing less! So, this bot was created for a discord server which I am also a part of. It can track birthdays (second message seen in the picture), copy messages from a channel (first message seen in the picture), give users automatically roles on certain conditions, ... This was created as a drop-in replacement of Mee6, which did some very shady stuff lately.',
4343
link: 'https://github.com/nwrenger/doenermann-bot',
@@ -46,7 +46,7 @@ export const projects = [
4646
{
4747
title: 'Escaping-from-the-Supernova',
4848
summary: 'A procedural generated textadventure',
49-
picture: 'efts.png',
49+
picture: 'efts.webp',
5050
description:
5151
'This project marks my first attempt at writing in Rust, and the original version is available under the "old" branch. After gaining more experience and developing my own CLI crate <code>console-utils</code>, I expanded the project into a procedurally generated text adventure with a total of 16 different endings. Have fun exploring them!',
5252
link: 'https://github.com/nwrenger/Escaping-from-the-Supernova',
@@ -55,7 +55,7 @@ export const projects = [
5555
{
5656
title: 'eta',
5757
summary: 'A Code Editor made in egui',
58-
picture: 'eta.png',
58+
picture: 'eta.webp',
5959
description:
6060
'As explained in the summary, this is a code editor made in <code>egui</code> which focuses on efficiency. Furthermore, this was created due to the lack of performance seen in VSC, the most used code editor, and my curiosity of how a project editor app works and how hard is it to create one, which I now know it is <code>VERY HARD</code>.',
6161
link: 'https://github.com/nwrenger/eta',
@@ -64,7 +64,7 @@ export const projects = [
6464
{
6565
title: 'flip-ui',
6666
summary: 'The UI Builder for the Flipper Zero',
67-
picture: 'flip-ui.png',
67+
picture: 'flip-ui.webp',
6868
description:
6969
"This is a UI build for the flipperzero, a small IoT device which was mainly hyped due to it's hacking capabilities. The idea itself came from building a Flipperzero App myself and seeing how unnecessary, difficult that was. Nevertheless, the workflow when using this is to create a UI using the website and then use a Rust crate which converts the UI data and your own custom functions into a flipperzero compatible binary.",
7070
link: 'https://github.com/flip-ui',
@@ -73,7 +73,7 @@ export const projects = [
7373
{
7474
title: 'gluer',
7575
summary: 'A Rust wrapper for backends that eliminates redundant definitions',
76-
picture: 'gluer.png',
76+
picture: 'gluer.webp',
7777
description:
7878
'As the summary suggests, this project aims to streamline development by eliminating redundant definitions in both the backend and frontend through static analysis of routes, functions, structs, enums and types. Utilizing the <code>#[metadata]</code> procedural attribute macro and the <code>generate!</code> procedural macro, the project extracts relevant information and generates the corresponding <code>api</code> in a TypeScript file. Currently, the project supports the <code>axum</code> framework, with plans to extend support to additional backends in the future.',
7979
link: 'https://crates.io/crates/gluer',
@@ -82,7 +82,7 @@ export const projects = [
8282
{
8383
title: 'hadar',
8484
summary: "Codebase of a 'simple' Battlesnake agent",
85-
picture: 'hadar.png',
85+
picture: 'hadar.webp',
8686
description:
8787
'This is a very simple Battlesnake agent, a bot designed to play competitive snake against other bots. Its sole mission is to seek food and avoid killing itself when it gets too long. The results of this strategy are displayed in the picture above!',
8888
link: 'https://github.com/nwrenger/hadar',
@@ -91,7 +91,7 @@ export const projects = [
9191
{
9292
title: 'light-magic',
9393
summary: 'A persistent in-memory database',
94-
picture: 'light-magic.png',
94+
picture: 'light-magic.webp',
9595
description:
9696
"A powerful and user-friendly in-memory database crate that extends Rust's standard data types, such as as the <code>Table</code> type, and the macro system for generating data types, interactions, and data operations. It features efficient <code>search</code> and <code>join!</code> functions for seamless data management and rust's beautiful type system for creating the database table. Give it a try and experience the simplicity and performance of this innovative database solution!",
9797
link: 'https://crates.io/crates/light-magic',
@@ -100,7 +100,7 @@ export const projects = [
100100
{
101101
title: 'omega',
102102
summary: 'A performant terminal-based project editor',
103-
picture: 'omega.png',
103+
picture: 'omega.webp',
104104
description:
105105
"This project was created after I created <code>eta</code> from which I learned a lot. It's a terminal-based project editor with syntax highlighting, great performance and very useful and powerful shortcuts. So please give it a try!",
106106
link: 'https://crates.io/crates/omega',
@@ -109,7 +109,7 @@ export const projects = [
109109
{
110110
title: 'portfolio',
111111
summary: 'My personal Portfolio',
112-
picture: 'portfolio.png',
112+
picture: 'portfolio.webp',
113113
description:
114114
'You are aCtuAlLy currently viewing my portfolio. Feel free to explore the project source code to understand how I built this website and provide feedback on areas for improvement. This portfolio style emphasizes simplicity with a touch of design and fun. My portfolio/personal website has evolved significantly over time, so don’t hesitate to revisit and see what has changed!',
115115
link: 'https://github.com/nwrenger/portfolio',
@@ -118,7 +118,7 @@ export const projects = [
118118
{
119119
title: 'quickmaths',
120120
summary: 'A school project...QUICKMATHS!!!',
121-
picture: 'quickmaths.png',
121+
picture: 'quickmaths.webp',
122122
description:
123123
"Indeed, this summary hints at something math-related, and that's essentially accurate. Developed during my school lessons, this website focuses on learning math calculations and uniquely features local co-op! Surprising, right? Grab a friend, try it out below, and see who excels at calculations!",
124124
link: 'https://quickmaths.nwrenger.dev',
@@ -127,7 +127,7 @@ export const projects = [
127127
{
128128
title: 'schiller-db',
129129
summary: "Schillernova's Database Software",
130-
picture: 'schiller-db.png',
130+
picture: 'schiller-db.webp',
131131
description:
132132
"Developed for a project week (a school-wide activity for a week, in my case we were our own state), this project unfortunately didn't meet expectations, but that's a tale for another time! Here, authorities could access an overview of all citizens, including the unemployed, as well as a record of crimes committed by citizens. The aim was to assist authorities in state management by eliminating the need for extensive paperwork, which is typically essential in bureaucratic processes.",
133133
link: 'https://github.com/nwrenger/schiller-db',
@@ -136,7 +136,7 @@ export const projects = [
136136
{
137137
title: 'schiller-lib',
138138
summary: 'The Schiller School Library App',
139-
picture: 'schiller-lib.png',
139+
picture: 'schiller-lib.webp',
140140
description:
141141
"Like many schools, mine also has a library where students can read and borrow books. My brother and I developed this piece of software to address this need. Originally, the library's software was a Windows application, but now it has been transformed into a comprehensive website plus server with OAuth for authentication. This update was made to eliminate the need for Windows/PC and to simplify the user interface for younger students.",
142142
link: 'https://github.com/wrenger/schiller-lib',
@@ -145,7 +145,7 @@ export const projects = [
145145
{
146146
title: 'schulen-im-chaos',
147147
summary: 'Homework-Sharing Platform',
148-
picture: 'sic.png',
148+
picture: 'sic.webp',
149149
description:
150150
'The "Schulen im Chaos" (Schools in Chaos) project, which I was invited to develop the infrastructure and website for, focuses—as the summary suggests—on sharing notes on various school subjects, such as Mathematics, Physics, Computer Science, etc. It\'s important to note that the current scope of this project is limited to German schools only, due to the significant differences in school systems worldwide.',
151151
link: 'https://schulenimchaos.de',
@@ -154,7 +154,7 @@ export const projects = [
154154
{
155155
title: 'shitboard',
156156
summary: 'Online Soundboard App',
157-
picture: 'shitboard.png',
157+
picture: 'shitboard.webp',
158158
description:
159159
'Developed at the request of a friend who wanted a sound-sharing platform but never ended up uploading anything... So please, if you have content to share, go ahead and upload it. What gets uploaded won’t be deleted. Have fun! Note: Not everything will stay there indefinitely, so please don’t upload illegal material!',
160160
link: 'https://shitboard.nwrenger.dev',
@@ -163,7 +163,7 @@ export const projects = [
163163
{
164164
title: 'songwriting',
165165
summary: 'Songwriting Portfolio',
166-
picture: 'songwriting.png',
166+
picture: 'songwriting.webp',
167167
description:
168168
'I developed my Songwriting Portfolio for my music class. Please note that it is entirely written in <code>German</code>. I utilized the new <code>Skeleton Framework</code> and created some impressive components and animations. Enjoy exploring it!',
169169
link: 'https://songwriting.nwrenger.dev',

src/routes/+layout.svelte

Lines changed: 1 addition & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -6,104 +6,16 @@
66
import { Sun, Moon } from 'lucide-svelte';
77
88
import { page } from '$app/state';
9-
import { onMount, type Snippet } from 'svelte';
10-
import { fade } from 'svelte/transition';
9+
import { type Snippet } from 'svelte';
1110
interface Props {
1211
children?: Snippet;
1312
}
1413
1514
let { children }: Props = $props();
16-
17-
let coords = $state({ x: 0, y: 0 });
18-
let size = $state(0);
19-
let button_down = false;
20-
21-
function handleLeave(e: PointerEvent) {
22-
button_down = false;
23-
24-
coords = { x: e.clientX, y: e.clientY };
25-
size = 0;
26-
}
27-
28-
function handleEnter(e: PointerEvent) {
29-
button_down = false;
30-
31-
coords = { x: e.clientX, y: e.clientY };
32-
size = 10;
33-
}
34-
35-
function handleMove(e: PointerEvent) {
36-
coords = { x: e.clientX, y: e.clientY };
37-
const target = e.target as HTMLElement;
38-
39-
if (!button_down) {
40-
if (target.closest('a') || target.closest('button')) {
41-
size = 15;
42-
} else {
43-
size = 10;
44-
}
45-
}
46-
}
47-
48-
function handleDown(e: PointerEvent) {
49-
button_down = true;
50-
51-
coords = { x: e.clientX, y: e.clientY };
52-
const target = e.target as HTMLElement;
53-
54-
if (target.closest('a') || target.closest('button')) {
55-
size = 9;
56-
} else {
57-
size = 7;
58-
}
59-
}
60-
61-
function handleUp(e: PointerEvent) {
62-
button_down = false;
63-
64-
coords = { x: e.clientX, y: e.clientY };
65-
const target = e.target as HTMLElement;
66-
67-
if (target.closest('a') || target.closest('button')) {
68-
size = 15;
69-
} else {
70-
size = 10;
71-
}
72-
}
73-
74-
function handleScroll() {
75-
let target = document.elementFromPoint(coords.x, coords.y);
76-
77-
if (target && !button_down) {
78-
if (target.closest('a') || target.closest('button')) {
79-
size = 15;
80-
} else {
81-
size = 10;
82-
}
83-
}
84-
}
85-
86-
let mounted = $state(false);
87-
onMount(() => (mounted = true));
88-
89-
let isTouchDevice = $state(false);
90-
$effect(() => {
91-
if (mounted) isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0;
92-
});
9315
</script>
9416

9517
<ModeWatcher disableTransitions={false} />
9618

97-
<svelte:body
98-
onpointerleave={!isTouchDevice ? handleLeave : null}
99-
onpointerenter={!isTouchDevice ? handleEnter : null}
100-
onpointerdown={!isTouchDevice ? handleDown : null}
101-
onpointerup={!isTouchDevice ? handleUp : null}
102-
onpointermove={!isTouchDevice ? handleMove : null}
103-
/>
104-
105-
<svelte:window onscroll={!isTouchDevice ? handleScroll : null} />
106-
10719
<div class="min-h-screen">
10820
<header
10921
class="sticky top-0 z-50 w-full border-b border-border/40 bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60"
@@ -148,25 +60,3 @@
14860
{@render children?.()}
14961
</div>
15062
</div>
151-
152-
{#if !isTouchDevice}
153-
<div
154-
class="pointer-events-none fixed left-0 top-0 z-[1000] rounded-[50%] bg-white mix-blend-difference"
155-
style="
156-
transition: width 0.15s ease-out, height 0.15s ease-out;
157-
transform: translate(calc({coords.x}px - 50%), calc({coords.y}px - 50%));
158-
width: {size * 2}px;
159-
height: {size * 2}px;
160-
"
161-
></div>
162-
{#if mounted && size === 0}
163-
<div
164-
transition:fade
165-
class="fixed left-0 top-0 z-[999] flex h-full w-full items-center justify-center bg-background/30 text-lg backdrop-blur supports-[backdrop-filter]:bg-background/30"
166-
>
167-
<div in:fade class="animate-pulse text-center">
168-
<p>Move, click, or interact using your cursor!</p>
169-
</div>
170-
</div>
171-
{/if}
172-
{/if}

src/routes/projects/+page.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
src={'projects/' + picture}
3434
alt={title}
3535
height="h-52 md:h-64"
36-
rounded="rounded-t-md"
36+
rounded="rounded-t-md rounded-b-none"
3737
/>
3838
</a>
3939
<Card.Header class="w-full p-4">

static/projects/chadmaths.png

-165 KB
Binary file not shown.

static/projects/chadmaths.webp

41.2 KB
Binary file not shown.

static/projects/console-utils.png

-356 KB
Binary file not shown.

static/projects/console-utils.webp

114 KB
Binary file not shown.

static/projects/dashboard.png

-1.62 MB
Binary file not shown.

static/projects/dashboard.webp

117 KB
Binary file not shown.

static/projects/doenermann-bot.png

-206 KB
Binary file not shown.

static/projects/doenermann-bot.webp

47.3 KB
Binary file not shown.

static/projects/efts.png

-558 KB
Binary file not shown.

static/projects/efts.webp

103 KB
Binary file not shown.

static/projects/eta.png

-362 KB
Binary file not shown.

static/projects/eta.webp

107 KB
Binary file not shown.

static/projects/flip-ui.png

-241 KB
Binary file not shown.

static/projects/flip-ui.webp

39.7 KB
Binary file not shown.

static/projects/gluer.png

-408 KB
Binary file not shown.

static/projects/gluer.webp

126 KB
Binary file not shown.

static/projects/hadar.png

-650 KB
Binary file not shown.

static/projects/hadar.webp

132 KB
Binary file not shown.

static/projects/light-magic.png

-432 KB
Binary file not shown.

static/projects/light-magic.webp

159 KB
Binary file not shown.

static/projects/omega.png

-1.03 MB
Binary file not shown.

static/projects/omega.webp

146 KB
Binary file not shown.

static/projects/portfolio.png

-321 KB
Binary file not shown.

static/projects/portfolio.webp

110 KB
Binary file not shown.

static/projects/quickmaths.png

-625 KB
Binary file not shown.

static/projects/quickmaths.webp

48.7 KB
Binary file not shown.

static/projects/schiller-db.png

-153 KB
Binary file not shown.

static/projects/schiller-db.webp

38.8 KB
Binary file not shown.

static/projects/schiller-lib.png

-379 KB
Binary file not shown.

static/projects/schiller-lib.webp

98.6 KB
Binary file not shown.

static/projects/shitboard.png

-365 KB
Binary file not shown.

static/projects/shitboard.webp

13.9 KB
Binary file not shown.

static/projects/sic.png

-706 KB
Binary file not shown.

static/projects/sic.webp

145 KB
Binary file not shown.

static/projects/songwriting.png

-925 KB
Binary file not shown.

static/projects/songwriting.webp

275 KB
Binary file not shown.

0 commit comments

Comments
 (0)