diff --git a/README.md b/README.md
index df7963a..60f98b3 100644
--- a/README.md
+++ b/README.md
@@ -1,75 +1,2 @@
-# React + TypeScript + Vite
-
-This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
-
-Currently, two official plugins are available:
-
-- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh
-- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
-
-## React Compiler
-
-The React Compiler is enabled on this template. See [this documentation](https://react.dev/learn/react-compiler) for more information.
-
-Note: This will impact Vite dev & build performances.
-
-## Expanding the ESLint configuration
-
-If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
-
-```js
-export default defineConfig([
- globalIgnores(["dist"]),
- {
- files: ["**/*.{ts,tsx}"],
- extends: [
- // Other configs...
-
- // Remove tseslint.configs.recommended and replace with this
- tseslint.configs.recommendedTypeChecked,
- // Alternatively, use this for stricter rules
- tseslint.configs.strictTypeChecked,
- // Optionally, add this for stylistic rules
- tseslint.configs.stylisticTypeChecked,
-
- // Other configs...
- ],
- languageOptions: {
- parserOptions: {
- project: ["./tsconfig.node.json", "./tsconfig.app.json"],
- tsconfigRootDir: import.meta.dirname,
- },
- // other options...
- },
- },
-]);
-```
-
-You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:
-
-```js
-// eslint.config.ts
-import reactX from "eslint-plugin-react-x";
-import reactDom from "eslint-plugin-react-dom";
-
-export default defineConfig([
- globalIgnores(["dist"]),
- {
- files: ["**/*.{ts,tsx}"],
- extends: [
- // Other configs...
- // Enable lint rules for React
- reactX.configs["recommended-typescript"],
- // Enable lint rules for React DOM
- reactDom.configs.recommended,
- ],
- languageOptions: {
- parserOptions: {
- project: ["./tsconfig.node.json", "./tsconfig.app.json"],
- tsconfigRootDir: import.meta.dirname,
- },
- // other options...
- },
- },
-]);
-```
+# Hi
+Nice of you to check out the source of the website. Hopefully you enjoy what you see!
\ No newline at end of file
diff --git a/assets/Squagon.pdf b/assets/Squagon.pdf
new file mode 100644
index 0000000..50c166f
Binary files /dev/null and b/assets/Squagon.pdf differ
diff --git a/eslint.config.ts b/eslint.config.ts
index e684b1f..4d22e49 100644
--- a/eslint.config.ts
+++ b/eslint.config.ts
@@ -1,18 +1,18 @@
-import js from "@eslint/js";
-import globals from "globals";
-import reactHooks from "eslint-plugin-react-hooks";
-import reactRefresh from "eslint-plugin-react-refresh";
-import tseslint from "typescript-eslint";
-import { defineConfig, globalIgnores } from "eslint/config";
+import js from '@eslint/js';
+import globals from 'globals';
+import reactHooks from 'eslint-plugin-react-hooks';
+import reactRefresh from 'eslint-plugin-react-refresh';
+import tseslint from 'typescript-eslint';
+import { defineConfig, globalIgnores } from 'eslint/config';
export default defineConfig([
- globalIgnores(["dist"]),
+ globalIgnores(['dist', 'node_modules']),
{
- files: ["**/*.{ts,tsx}"],
+ files: ['**/*.{ts,tsx}'],
extends: [
js.configs.recommended,
tseslint.configs.recommended,
- reactHooks.configs["recommended-latest"],
+ reactHooks.configs['recommended-latest'],
reactRefresh.configs.vite,
],
languageOptions: {
diff --git a/index.html b/index.html
index b5f8a1c..7cd4d28 100644
--- a/index.html
+++ b/index.html
@@ -2,10 +2,9 @@
+ This website is by and about me, Wouter van Veelen. The reason for having this
+ website is three-fold. First, I want to have a place where I can experiment with web
+ techniques and frameworks. Secondly, I want a place where I can publicly share
+ creative works. Third, I wanted to delete my LinkedIn, without becoming completely
+ unfindable for potential employers or collaborators.
+
+
+ About the technical specs, this website built using Vite + React (compiler) and
+ served by an Apache2 web server running on a self-built Arch-linux server. The
+ storage on the server runs on zfs in a 3+1 HDD configuration with an NVME boot
+ drive.
+
+
+ );
}
diff --git a/src/pages/Career.tsx b/src/pages/Career.tsx
index 6120d2e..86f7e6c 100644
--- a/src/pages/Career.tsx
+++ b/src/pages/Career.tsx
@@ -1,43 +1,153 @@
-import {
- Timeline,
- TimelineConnector,
- TimelineContent,
- TimelineDot,
- TimelineItem,
- TimelineOppositeContent,
- TimelineSeparator,
-} from '@mui/lab';
-import type { ReactElement } from 'react';
-import { CollapsableCard } from '../components/CollapsableCard.tsx';
+import { Timeline } from '@mui/lab';
+import { Fragment, type ReactElement } from 'react';
+import { Switch, Typography } from '@mui/material';
+import { useToggle } from '../utils.ts';
+import { OutsideLink } from '../components/OutsideLink.tsx';
+import { CareerEntry } from '../components/CareerEntry.tsx';
export function Career(): ReactElement {
+ const [full, toggleFull] = useToggle(true);
return (
-
-
- 2014
-
-
-
-
-
-
+
+
+ D.B.V. de Stretchers
+ {' '}
+ is a sports association on the University of Twente where all sports are
+ practiced and the focus is on fun, learning and activities
+
+
+ During my active years I was a trainer and assisted in the events
+ committee as well as PR and the website. During the academic year
+ 2020-2021 I was the chairman of the association
+
+
+ )}
+
+
+ With courses focused around algorithms, machine learning and data
+ processing.
+
+
+ Completed all required courses, but did not complete the final thesis
+ because of personal reasons.
+
+
+ {full && (
+
+
+ The{' '}
+
+ muziekbank
+ {' '}
+ is a library of vinyls and cds where customers can go to discover new
+ and old music, experience event and rent items like a normal library.
+
+
+ While being active I manned the counter to assist customers and was
+ involved in processing newly bought cds to be added to the collection
+
+
+ )}
+
+
+ Full stack developer on a SaaS project based on Java, Spring Boot, GraphQL,
+ Typescript and React.
+
+
+ Personally dove deep in understanding the fundamentals of frameworks and
+ languages and applying them for major version upgrades and developing on
+ internal tools and libraries.
+
+ On this website you can find bits about me and bits by me. I am a software developer
+ and the career tab can tell you some of my history in the world. As proof of being a
+ software developer, this website is entirely self-hosted, including a git repository
+ (and except the DNS servers, I suppose), on a server that I have physically built
+ and maintain.
+
+
+ Besides being a software developer, I also like stories and puzzles a whole lot, so
+ you can also find tabs dedicated to those. Hope you enjoy! I hope to add more
+ puzzle-focused elements to the site in the future.
+
+
+ Use the top bar to find what you are looking for or contact me via email. No direct
+ mailto link here to avoid scraper bots, but my first name and this domain name
+ should do the trick.
+
+ I have a love for puzzles and puzzle events. In the past I have particapated in and
+ organized the{' '}
+ Pandora puzzle event at the
+ University of Twente.
+
+
As such I want to create and share more puzzles here, in time.
+
+ );
+}
diff --git a/src/pages/Storytelling.tsx b/src/pages/Storytelling.tsx
index e69de29..e235a6e 100644
--- a/src/pages/Storytelling.tsx
+++ b/src/pages/Storytelling.tsx
@@ -0,0 +1,28 @@
+import { Fragment, type ReactElement } from 'react';
+import { Card, CardContent } from '@mui/material';
+import { OutsideLink } from '../components/OutsideLink.tsx';
+
+export function Storytelling(): ReactElement {
+ return (
+
+
+
+ I like to consume and tell stories. Besides reading and watching tv and movies, I
+ also like to create my own stories.
+
+
+ I've played my fair share of Dungeons and Dragons and have also DM'ed for a while,
+ and for the{' '}
+ Pandora puzzle event I have
+ also been responsible for or involved with the story aspect during the two times I
+ was part of the event organisation
+
+
+ I've also participated in a small short story writing competition for{' '}
+ Bellettrie, the
+ student library of the University of Twente. The theme was 'Fairytale' and you can
+ read my entry here.
+