diff --git a/.editorconfig b/.editorconfig
deleted file mode 100644
index 034f341..0000000
--- a/.editorconfig
+++ /dev/null
@@ -1,10 +0,0 @@
-root = true
-
-[*]
-charset = utf-8
-end_of_line = crlf
-indent_size = 2
-indent_style = space
-insert_final_newline = false
-max_line_length = 120
-tab_width = 4
diff --git a/.env.example b/.env.example
deleted file mode 100644
index adfe836..0000000
--- a/.env.example
+++ /dev/null
@@ -1,14 +0,0 @@
-# Since the ".env" file is gitignored, you can use the ".env.example" file to
-# build a new ".env" file when you clone the repo. Keep this file up-to-date
-# when you add new variables to `.env`.
-
-# This file will be committed to version control, so make sure not to have any
-# secrets in it. If you are cloning this repo, create a copy of this file named
-# ".env" and populate it with your secrets.
-
-# When adding additional environment variables, the schema in "/src/env.js"
-# should be updated accordingly.
-
-# Example:
-# SERVERVAR="foo"
-# NEXT_PUBLIC_CLIENTVAR="bar"
diff --git a/.eslintrc.json b/.eslintrc.json
new file mode 100644
index 0000000..ac3b2f4
--- /dev/null
+++ b/.eslintrc.json
@@ -0,0 +1,15 @@
+{
+ "extends": [
+ "next/core-web-vitals",
+ "prettier"
+ ],
+ "plugins": [
+ "prettier"
+ ],
+ "rules": {
+ "prettier/prettier": [
+ "error"
+ ],
+ "react/no-unescaped-entities": "off"
+ }
+}
diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index 94f480d..0000000
--- a/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-* text=auto eol=lf
\ No newline at end of file
diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml
deleted file mode 100644
index 8ce108a..0000000
--- a/.github/workflows/linting.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-name: Code quality
-
-on:
- push:
-
-jobs:
- quality:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- - name: Setup pnpm
- uses: pnpm/action-setup@v4
- - name: Setup Node.js
- uses: actions/setup-node@v4
- with:
- node-version: 22
- cache: pnpm
- - name: Install dependencies
- run: pnpm install --frozen-lockfile
- - name: Run oxlint
- run: pnpm oxlint
- - name: Run oxfmt
- run: pnpm oxfmt
diff --git a/.gitignore b/.gitignore
index e04ef94..ba9e141 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,43 +11,28 @@
# next.js
/.next/
/out/
-public/sitemap.xml
-.vercel
-next-env.d.ts
-.open-next
# production
/build
-*.xml
-# rss feed
-/public/feed.xml
# misc
.DS_Store
+*.pem
# debug
-*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
+.pnpm-debug.log*
# local env files
-.env
-.env.local
-.env.*.local
-
-# idea
-.idea
+.env*.local
-# Velite
-.velite
-public/static
-
-# Sentry Config File
-.env.sentry-build-plugin
+# vercel
+.vercel
# typescript
-tsconfig.tsbuildinfo
+*.tsbuildinfo
-# Claude
-.claude/settings.local.json
\ No newline at end of file
+# intellij
+.idea
\ No newline at end of file
diff --git a/.husky/.gitignore b/.husky/.gitignore
new file mode 100644
index 0000000..31354ec
--- /dev/null
+++ b/.husky/.gitignore
@@ -0,0 +1 @@
+_
diff --git a/.husky/pre-commit b/.husky/pre-commit
new file mode 100755
index 0000000..bbf6638
--- /dev/null
+++ b/.husky/pre-commit
@@ -0,0 +1,5 @@
+#!/bin/sh
+. "$(dirname "$0")/_/husky.sh"
+
+cd $(dirname "$0")
+npx lint-staged
diff --git a/.impeccable.md b/.impeccable.md
deleted file mode 100644
index f4bb898..0000000
--- a/.impeccable.md
+++ /dev/null
@@ -1,29 +0,0 @@
-## Design Context
-
-### Users
-
-A mixed audience of potential clients (gaming/Minecraft industry), employers, fellow developers, and the broader community. Visitors are evaluating Stella's work, personality, and technical ability. They want to quickly understand what she does, see compelling examples, and get a sense of who she is as a person.
-
-### Brand Personality
-
-**Warm, approachable, fun.** The site should feel like meeting someone genuinely enthusiastic about their craft. Not corporate, not cold — personality shines through in every detail. Think: a friend showing you their coolest work over coffee.
-
-### Aesthetic Direction
-
-- **Visual tone:** Portfolio showcase — image-heavy, visual storytelling, project cards that invite exploration
-- **Typography:** Instrument Serif for headings (editorial warmth), Switzer for body (clean readability)
-- **Color:** Purple primary (#9145FF) is the brand identity. Blue (#0085FF) and yellow (#FAC230) as playful accents. Both light and dark themes supported.
-- **References:** marijanapav.com (primary inspiration), raffi.zip, dzrgo.com, loganliffick.com, danielsun.space, emilkowal.ski, jakub.kr, benissen.com — all share: strong visual identity, personality-forward design, generous imagery, thoughtful typography, and layouts that feel curated rather than templated
-- **Anti-patterns:** Generic SaaS/template looks, overly minimal "developer portfolio" energy, cookie-cutter card grids without personality
-
-### Design Principles
-
-1. **Show, don't tell** — Lead with visuals. Images, videos, and interactive elements communicate more than paragraphs. Every section should have a strong visual anchor.
-
-2. **Personality in the details** — Small touches (twinkling stars, cat photos, playful copy) make the site memorable. Don't sand these away for "professionalism."
-
-3. **Warmth over polish** — Prefer designs that feel human and inviting over those that feel cold and perfect. Rounded edges, warm tones, approachable typography.
-
-4. **Curated, not comprehensive** — Show the best work prominently rather than listing everything equally. Quality of presentation over quantity of content.
-
-5. **Accessible by default** — WCAG AA minimum. Good contrast ratios, keyboard navigation, screen reader support. Accessibility is not optional.
diff --git a/.npmrc b/.npmrc
deleted file mode 100644
index cf8dd15..0000000
--- a/.npmrc
+++ /dev/null
@@ -1,2 +0,0 @@
-public-hoist-pattern[]=*import-in-the-middle*
-public-hoist-pattern[]=*require-in-the-middle*
diff --git a/.oxfmtrc.json b/.oxfmtrc.json
deleted file mode 100644
index 9bf93d4..0000000
--- a/.oxfmtrc.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "$schema": "./node_modules/oxfmt/configuration_schema.json",
- "useTabs": false,
- "tabWidth": 2,
- "printWidth": 120,
- "singleQuote": false,
- "jsxSingleQuote": false,
- "quoteProps": "as-needed",
- "trailingComma": "es5",
- "semi": true,
- "arrowParens": "always",
- "bracketSameLine": false,
- "bracketSpacing": true,
- "endOfLine": "lf",
- "insertFinalNewline": true,
- "sortTailwindcss": {
- "stylesheet": "src/app/globals.css",
- "functions": ["clsx", "cva", "cn"]
- },
- "ignorePatterns": [".claude", "**/.next", "**/.velite"]
-}
diff --git a/.oxlintrc.json b/.oxlintrc.json
deleted file mode 100644
index 779217c..0000000
--- a/.oxlintrc.json
+++ /dev/null
@@ -1,105 +0,0 @@
-{
- "$schema": "./node_modules/oxlint/configuration_schema.json",
- "plugins": ["nextjs", "typescript", "react", "jsx-a11y", "import", "unicorn", "oxc", "promise", "node"],
- "categories": {
- "correctness": "warn",
- "suspicious": "warn",
- "perf": "warn"
- },
- "env": {
- "browser": true,
- "node": true,
- "builtin": true
- },
- "options": {
- "reportUnusedDisableDirectives": "warn"
- },
- "ignorePatterns": [".claude", ".next/**", ".velite/**", "out/**", "build/**", "dist/**"],
- "rules": {
- // TypeScript
- "typescript/consistent-type-definitions": ["error", "type"],
- "typescript/no-explicit-any": "error",
- "typescript/no-inferrable-types": "error",
- "typescript/no-duplicate-enum-values": "error",
- "typescript/no-import-type-side-effects": "error",
- "typescript/prefer-includes": "error",
- "typescript/only-throw-error": "error",
- "typescript/return-await": "error",
- "typescript/no-deprecated": "warn",
-
- // Correctness
- "no-unused-vars": "warn",
- "react-hooks/exhaustive-deps": "warn",
- "array-callback-return": "error",
- "no-self-compare": "error",
- "no-constructor-return": "error",
- "no-promise-executor-return": "error",
- "eqeqeq": "error",
- "react/rules-of-hooks": "error",
-
- // Suspicious
- "no-alert": "error",
- "no-template-curly-in-string": "error",
- "no-shadow-restricted-names": "error",
- "no-unused-expressions": "error",
- "no-empty": "error",
- "no-proto": "error",
- "no-return-assign": "error",
- "no-multi-assign": "error",
- "unicorn/no-document-cookie": "error",
-
- // Unicorn
- "unicorn/prefer-set-has": "error",
- "unicorn/no-new-array": "warn",
- "unicorn/no-useless-spread": "warn",
- "unicorn/no-single-promise-in-promise-methods": "warn",
- "unicorn/prefer-node-protocol": "error",
- "unicorn/no-typeof-undefined": "error",
- "unicorn/no-useless-promise-resolve-reject": "error",
- "unicorn/prefer-array-some": "error",
- "unicorn/no-object-as-default-parameter": "warn",
-
- // Noisy rules - disable
- "no-shadow": "off",
- "no-await-in-loop": "off",
- "unicorn/no-array-sort": "off",
- "unicorn/prefer-add-event-listener": "off",
- "unicorn/require-post-message-target-origin": "off",
- "import/no-unassigned-import": "off",
- "import/no-named-as-default": "off",
- "import/no-named-as-default-member": "off",
- "typescript/no-unsafe-type-assertion": "off",
-
- // File size
- "max-lines": ["warn", { "max": 300, "skipBlankLines": true, "skipComments": true }],
-
- // Performance
- "oxc/no-barrel-file": "error",
- "import/no-cycle": "off",
-
- // Next.js
- "@next/next/no-html-link-for-pages": "error",
- "@next/next/no-sync-scripts": "error",
- "@next/next/inline-script-id": "error",
- "@next/next/no-assign-module-variable": "error",
- "@next/next/no-document-import-in-page": "error",
- "@next/next/no-duplicate-head": "error",
- "@next/next/no-head-import-in-document": "error",
- "@next/next/no-script-component-in-head": "error",
- "@next/next/no-img-element": "off",
-
- // React
- "react/jsx-no-target-blank": "off",
- "react/no-unknown-property": "off",
- "react/no-unsafe": "off",
- "react/react-in-jsx-scope": "off",
-
- // jsx-a11y
- "jsx-a11y/alt-text": "warn",
- "jsx-a11y/aria-props": "warn",
- "jsx-a11y/aria-proptypes": "warn",
- "jsx-a11y/aria-unsupported-elements": "warn",
- "jsx-a11y/role-has-required-aria-props": "warn",
- "jsx-a11y/role-supports-aria-props": "warn"
- }
-}
diff --git a/.prettierrc.json b/.prettierrc.json
new file mode 100644
index 0000000..06d1842
--- /dev/null
+++ b/.prettierrc.json
@@ -0,0 +1,7 @@
+{
+ "singleQuote": false,
+ "semi": true,
+ "trailingComma": "all",
+ "tabWidth": 2,
+ "printWidth": 140
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index dc42879..1f7c030 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,13 @@
# koding.dev
-Hello, world!
+My portfolio website!
+
+> **Please note**: This website is still under construction.
+> A **lot**, and I mean a **lot** of stuff is missing.
+
+## Design
+
+This is the target design that the website will be built on.
+It's not done yet, but trust me - it's gonna be awesome!
+
+
\ No newline at end of file
diff --git a/assets/img/avatar.png b/assets/img/avatar.png
new file mode 100644
index 0000000..a825ace
Binary files /dev/null and b/assets/img/avatar.png differ
diff --git a/assets/img/home-header.png b/assets/img/home-header.png
new file mode 100644
index 0000000..fc31dcb
Binary files /dev/null and b/assets/img/home-header.png differ
diff --git a/assets/img/icons/chevron-down.svg b/assets/img/icons/chevron-down.svg
new file mode 100644
index 0000000..fc32cf8
--- /dev/null
+++ b/assets/img/icons/chevron-down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/img/icons/email.svg b/assets/img/icons/email.svg
new file mode 100644
index 0000000..3f0d76e
--- /dev/null
+++ b/assets/img/icons/email.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/img/icons/github.svg b/assets/img/icons/github.svg
new file mode 100644
index 0000000..538ec5b
--- /dev/null
+++ b/assets/img/icons/github.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/img/icons/menu.svg b/assets/img/icons/menu.svg
new file mode 100644
index 0000000..64844e7
--- /dev/null
+++ b/assets/img/icons/menu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/img/icons/twitter.svg b/assets/img/icons/twitter.svg
new file mode 100644
index 0000000..45bd20c
--- /dev/null
+++ b/assets/img/icons/twitter.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/components.json b/components.json
deleted file mode 100644
index 4b0a655..0000000
--- a/components.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "$schema": "https://ui.shadcn.com/schema.json",
- "aliases": {
- "components": "@/components",
- "hooks": "@/hooks",
- "lib": "@/lib",
- "ui": "@/components/ui",
- "utils": "@/lib/utils"
- },
- "iconLibrary": "lucide",
- "rsc": true,
- "style": "default",
- "tailwind": {
- "baseColor": "gray",
- "config": "",
- "css": "src/app/globals.css",
- "cssVariables": true,
- "prefix": ""
- },
- "tsx": true
-}
diff --git a/components/interaction/IconButton.tsx b/components/interaction/IconButton.tsx
new file mode 100644
index 0000000..e329065
--- /dev/null
+++ b/components/interaction/IconButton.tsx
@@ -0,0 +1,27 @@
+import React, { DetailedHTMLProps, HTMLAttributes } from "react";
+import clsx from "clsx";
+import Link from "next/link";
+
+interface IconButtonProps extends DetailedHTMLProps, HTMLButtonElement> {
+ children: React.ReactNode;
+ href?: string;
+}
+
+const IconButton = ({ children, href, ...props }: IconButtonProps) => {
+ props.className = clsx("w-6 h-6", props.className, "fill-white hover:fill-purple-300 hover:cursor-pointer transition-all");
+ const component = ;
+
+ if (href && !href.startsWith("/")) {
+ return (
+
+ {component}
+
+ );
+ } else if (href) {
+ return {component};
+ } else {
+ return component;
+ }
+};
+
+export default IconButton;
diff --git a/components/interaction/LinkButton.tsx b/components/interaction/LinkButton.tsx
new file mode 100644
index 0000000..2c14ec5
--- /dev/null
+++ b/components/interaction/LinkButton.tsx
@@ -0,0 +1,30 @@
+import React, { DetailedHTMLProps, HTMLAttributes } from "react";
+import clsx from "clsx";
+import Link from "next/link";
+
+interface LinkButtonProps extends DetailedHTMLProps, HTMLButtonElement> {
+ children: React.ReactNode;
+ href?: string;
+}
+
+const LinkButton = ({ children, href, ...props }: LinkButtonProps) => {
+ const component = (
+
+ );
+
+ if (href && !href.startsWith("/")) {
+ return (
+
+ {component}
+
+ );
+ } else if (href) {
+ return {component};
+ } else {
+ return component;
+ }
+};
+
+export default LinkButton;
diff --git a/content/clients/axolotl-studios/avatar.png b/content/clients/axolotl-studios/avatar.png
deleted file mode 100644
index 70eeb57..0000000
Binary files a/content/clients/axolotl-studios/avatar.png and /dev/null differ
diff --git a/content/clients/axolotl-studios/meta.json b/content/clients/axolotl-studios/meta.json
deleted file mode 100644
index 887046b..0000000
--- a/content/clients/axolotl-studios/meta.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "slug": "axolotl-studios",
- "name": "Axolotl Studios",
- "description": "Implementation of a points and generator system for Skyblock.",
- "avatar": "./avatar.png",
- "start": "Aug 2023",
- "end": "Sep 2023",
- "hidden": true,
- "projects": [
- {
- "name": "Points",
- "description": "A points system for Skyblock, which allows players to earn points by completing tasks and challenges. The points can be used to purchase items and other rewards. Integrates with other plugins with an API."
- },
- {
- "name": "Generator",
- "description": "A generator system for Skyblock, which allows players to generate resources over time. Includes a management GUI."
- }
- ]
-}
diff --git a/content/clients/castiamc/avatar.png b/content/clients/castiamc/avatar.png
deleted file mode 100644
index f614826..0000000
Binary files a/content/clients/castiamc/avatar.png and /dev/null differ
diff --git a/content/clients/castiamc/banner.png b/content/clients/castiamc/banner.png
deleted file mode 100644
index afe83a0..0000000
Binary files a/content/clients/castiamc/banner.png and /dev/null differ
diff --git a/content/clients/castiamc/meta.json b/content/clients/castiamc/meta.json
deleted file mode 100644
index 4d48ce4..0000000
--- a/content/clients/castiamc/meta.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "slug": "castiamc",
- "name": "CastiaMC",
- "description": "Developing flexible, scalable, and maintainable Minecraft networks across OxyWire's servers.",
- "href": "https://castiamc.com",
- "avatar": "./avatar.png",
- "banner": "./banner.png",
- "start": "Nov 2022",
- "end": "Jan 2023",
- "projects": [
- {
- "name": "CastiaMC",
- "description": "CastiaMC is a Minecraft Java server that focuses on an enhanced, polished survival experience. I primarily worked on updating existing features, creating a shared core framework, and improving the overall codebase.",
- "links": [
- {
- "name": "Website",
- "href": "https://castiamc.com"
- }
- ],
- "media": []
- }
- ]
-}
diff --git a/content/clients/fadecloud/assets/cube-generator-island.png b/content/clients/fadecloud/assets/cube-generator-island.png
deleted file mode 100644
index f1b3fcd..0000000
Binary files a/content/clients/fadecloud/assets/cube-generator-island.png and /dev/null differ
diff --git a/content/clients/fadecloud/assets/cube-generator-place.mp4 b/content/clients/fadecloud/assets/cube-generator-place.mp4
deleted file mode 100644
index 21b0dba..0000000
Binary files a/content/clients/fadecloud/assets/cube-generator-place.mp4 and /dev/null differ
diff --git a/content/clients/fadecloud/avatar.png b/content/clients/fadecloud/avatar.png
deleted file mode 100644
index 66c08c7..0000000
Binary files a/content/clients/fadecloud/avatar.png and /dev/null differ
diff --git a/content/clients/fadecloud/banner.png b/content/clients/fadecloud/banner.png
deleted file mode 100644
index e07c7f6..0000000
Binary files a/content/clients/fadecloud/banner.png and /dev/null differ
diff --git a/content/clients/fadecloud/meta.json b/content/clients/fadecloud/meta.json
deleted file mode 100644
index 55afca3..0000000
--- a/content/clients/fadecloud/meta.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "slug": "fadecloud",
- "name": "FadeCloud",
- "description": "Development of the Cube Generator plugin for Skyblock.",
- "href": "https://fadecloud.net",
- "avatar": "./avatar.png",
- "banner": "./banner.png",
- "start": "Jan 2023",
- "end": "Mar 2023",
- "hidden": true,
- "projects": [
- {
- "name": "Cube Generator",
- "description": "A 'Cube Generator' is an item that - when placed generates - a bedrock cube with ores inside of it. The ores inside can be mined by players, and will be automatically added to a virtual storage system.",
- "media": [
- {
- "type": "video",
- "video": "./assets/cube-generator-place.mp4",
- "caption": "Placement / breaking of a Cube Generator."
- },
- {
- "type": "image",
- "image": "./assets/cube-generator-island.png",
- "caption": "An island with a Cube Generator placed on it."
- }
- ]
- }
- ]
-}
diff --git a/content/clients/innitgg/assets/map-casino.png b/content/clients/innitgg/assets/map-casino.png
deleted file mode 100644
index 569e29d..0000000
Binary files a/content/clients/innitgg/assets/map-casino.png and /dev/null differ
diff --git a/content/clients/innitgg/assets/map-cult.png b/content/clients/innitgg/assets/map-cult.png
deleted file mode 100644
index a189a6d..0000000
Binary files a/content/clients/innitgg/assets/map-cult.png and /dev/null differ
diff --git a/content/clients/innitgg/assets/map-lobby.png b/content/clients/innitgg/assets/map-lobby.png
deleted file mode 100644
index 26345c4..0000000
Binary files a/content/clients/innitgg/assets/map-lobby.png and /dev/null differ
diff --git a/content/clients/innitgg/assets/map-royale.png b/content/clients/innitgg/assets/map-royale.png
deleted file mode 100644
index 5455b95..0000000
Binary files a/content/clients/innitgg/assets/map-royale.png and /dev/null differ
diff --git a/content/clients/innitgg/avatar.jpg b/content/clients/innitgg/avatar.jpg
deleted file mode 100644
index 053811c..0000000
Binary files a/content/clients/innitgg/avatar.jpg and /dev/null differ
diff --git a/content/clients/innitgg/banner.jpg b/content/clients/innitgg/banner.jpg
deleted file mode 100644
index d9af68d..0000000
Binary files a/content/clients/innitgg/banner.jpg and /dev/null differ
diff --git a/content/clients/innitgg/meta.json b/content/clients/innitgg/meta.json
deleted file mode 100644
index 89041cf..0000000
--- a/content/clients/innitgg/meta.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "slug": "innitgg",
- "name": "Innit.gg",
- "description": "Developing a scalable, highly-available, and performant Minecraft server network, scaled through a custom Kubernetes deployment system.",
- "href": "https://innit.gg",
- "avatar": "./avatar.jpg",
- "banner": "./banner.jpg",
- "start": "Mar 2022",
- "end": "Oct 2022",
- "projects": [
- {
- "name": "Innit.gg",
- "description": "A (now-defunct 😔) Minecraft server network, with a focus on providing a high-quality minigames. The network was built on a custom Kubernetes deployment system, which allowed for a highly-available, and performant experience, with minimal downtime.",
- "avatar": "./avatar.jpg",
- "media": [
- {
- "type": "image",
- "image": "./assets/map-lobby.png",
- "caption": "W.I.P. Maps - Lobby"
- },
- {
- "type": "image",
- "image": "./assets/map-royale.png",
- "caption": "W.I.P. Maps - Royale (BR)"
- },
- {
- "type": "image",
- "image": "./assets/map-cult.png",
- "caption": "W.I.P. Maps - Cult (SW)"
- },
- {
- "type": "image",
- "image": "./assets/map-casino.png",
- "caption": "W.I.P. Maps - Casino (SW)"
- }
- ]
- }
- ]
-}
diff --git a/content/clients/katalyst/assets/craftadia-avatar.png b/content/clients/katalyst/assets/craftadia-avatar.png
deleted file mode 100644
index 68e0ea0..0000000
Binary files a/content/clients/katalyst/assets/craftadia-avatar.png and /dev/null differ
diff --git a/content/clients/katalyst/assets/craftadia-bank.png b/content/clients/katalyst/assets/craftadia-bank.png
deleted file mode 100644
index 3658a8a..0000000
Binary files a/content/clients/katalyst/assets/craftadia-bank.png and /dev/null differ
diff --git a/content/clients/katalyst/assets/craftadia-treasure-merchant.png b/content/clients/katalyst/assets/craftadia-treasure-merchant.png
deleted file mode 100644
index ad4bea6..0000000
Binary files a/content/clients/katalyst/assets/craftadia-treasure-merchant.png and /dev/null differ
diff --git a/content/clients/katalyst/assets/craftadia-wheel.png b/content/clients/katalyst/assets/craftadia-wheel.png
deleted file mode 100644
index 66073ef..0000000
Binary files a/content/clients/katalyst/assets/craftadia-wheel.png and /dev/null differ
diff --git a/content/clients/katalyst/avatar.jpg b/content/clients/katalyst/avatar.jpg
deleted file mode 100644
index e5573ed..0000000
Binary files a/content/clients/katalyst/avatar.jpg and /dev/null differ
diff --git a/content/clients/katalyst/banner.jpg b/content/clients/katalyst/banner.jpg
deleted file mode 100644
index 0e775ba..0000000
Binary files a/content/clients/katalyst/banner.jpg and /dev/null differ
diff --git a/content/clients/katalyst/meta.json b/content/clients/katalyst/meta.json
deleted file mode 100644
index e40b69e..0000000
--- a/content/clients/katalyst/meta.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "slug": "katalyst",
- "name": "Katalyst Media",
- "description": "Development for Craftadia and other Katalyst-owned Minecraft servers, updating legacy code and building new features.",
- "href": "https://katalyst.media",
- "avatar": "./avatar.jpg",
- "banner": "./banner.jpg",
- "start": "Sep 2019",
- "end": "Nov 2021",
- "projects": [
- {
- "name": "Craftadia",
- "description": "Minecraft survival, built for the community. Incorporating a town system to encourage player interaction, a rich set of events to keep players engaged, and a custom plugin suite to enhance the gameplay experience. I've worked on a lot with Craftadia, many of it isn't listed here, due to the lack of screenshots.",
- "avatar": "./assets/craftadia-avatar.png",
- "links": [
- {
- "name": "Website",
- "href": "https://craftadia.com"
- }
- ],
- "media": [
- {
- "type": "image",
- "image": "./assets/craftadia-bank.png",
- "caption": "Custom bank system, with interest rates, withdraw logs, and more."
- },
- {
- "type": "image",
- "image": "./assets/craftadia-treasure-merchant.png",
- "caption": "Buy and sell loot"
- },
- {
- "type": "image",
- "image": "./assets/craftadia-wheel.png",
- "caption": "Spins every x votes, granting the server a random reward"
- }
- ]
- }
- ]
-}
diff --git a/content/clients/lilypad/assets/website.png b/content/clients/lilypad/assets/website.png
deleted file mode 100644
index 7bf34cb..0000000
Binary files a/content/clients/lilypad/assets/website.png and /dev/null differ
diff --git a/content/clients/lilypad/avatar.png b/content/clients/lilypad/avatar.png
deleted file mode 100644
index 174e75f..0000000
Binary files a/content/clients/lilypad/avatar.png and /dev/null differ
diff --git a/content/clients/lilypad/banner.png b/content/clients/lilypad/banner.png
deleted file mode 100644
index b8af8d3..0000000
Binary files a/content/clients/lilypad/banner.png and /dev/null differ
diff --git a/content/clients/lilypad/meta.json b/content/clients/lilypad/meta.json
deleted file mode 100644
index e2ded0f..0000000
--- a/content/clients/lilypad/meta.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "slug": "lilypad",
- "name": "Lilypad.gg",
- "description": "Development of the Lilypad.gg website, billing panel & dashboard. Built with NextJS, Prisma, NextAuth, and TailwindCSS.",
- "role": "Web Developer",
- "href": "https://lilypad.gg",
- "wordmark": "./wordmark.svg",
- "avatar": "./avatar.png",
- "banner": "./banner.png",
- "start": "Jul 2024",
- "projects": [
- {
- "name": "Lilypad.gg",
- "description": "Development of the Lilypad.gg website, billing panel & dashboard. Built with NextJS, Prisma, NextAuth, and TailwindCSS.",
- "links": [
- {
- "name": "Website",
- "href": "https://lilypad.gg"
- }
- ],
- "media": [
- {
- "type": "image",
- "image": "./assets/website.png",
- "caption": "The Lilypad.gg website"
- }
- ]
- }
- ]
-}
diff --git a/content/clients/lilypad/wordmark.svg b/content/clients/lilypad/wordmark.svg
deleted file mode 100644
index 177b9eb..0000000
--- a/content/clients/lilypad/wordmark.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
diff --git a/content/clients/netherite/assets/netherite-panel-config.png b/content/clients/netherite/assets/netherite-panel-config.png
deleted file mode 100644
index 9a21917..0000000
Binary files a/content/clients/netherite/assets/netherite-panel-config.png and /dev/null differ
diff --git a/content/clients/netherite/assets/netherite-panel-deployment.png b/content/clients/netherite/assets/netherite-panel-deployment.png
deleted file mode 100644
index 666b295..0000000
Binary files a/content/clients/netherite/assets/netherite-panel-deployment.png and /dev/null differ
diff --git a/content/clients/netherite/assets/prison-dungeon.png b/content/clients/netherite/assets/prison-dungeon.png
deleted file mode 100644
index d7ad903..0000000
Binary files a/content/clients/netherite/assets/prison-dungeon.png and /dev/null differ
diff --git a/content/clients/netherite/assets/prison-spawn.png b/content/clients/netherite/assets/prison-spawn.png
deleted file mode 100644
index 87eb97f..0000000
Binary files a/content/clients/netherite/assets/prison-spawn.png and /dev/null differ
diff --git a/content/clients/netherite/avatar.png b/content/clients/netherite/avatar.png
deleted file mode 100644
index 97beb9c..0000000
Binary files a/content/clients/netherite/avatar.png and /dev/null differ
diff --git a/content/clients/netherite/banner.png b/content/clients/netherite/banner.png
deleted file mode 100644
index 0a01726..0000000
Binary files a/content/clients/netherite/banner.png and /dev/null differ
diff --git a/content/clients/netherite/meta.json b/content/clients/netherite/meta.json
deleted file mode 100644
index 72c0520..0000000
--- a/content/clients/netherite/meta.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "slug": "netherite",
- "name": "Netherite",
- "description": "Highly-scalable, high-throughput Minecraft development, built with Kubernetes & a microservice architecture.",
- "role": "Full Stack Developer",
- "href": "https://netherite.gg",
- "avatar": "./avatar.png",
- "banner": "./banner.png",
- "start": "Dec 2023",
- "projects": [
- {
- "name": "Netherite",
- "description": "The new Netherite network is built on a microservice architecture, with a focus on high-throughput, low-latency, and high-scalability. It's built with Kubernetes and Agones, using GRPC as a communication transport between microservices. Each service is scaled dynamically based on demand, ensuring optimal performance and resource utilization across our machines."
- },
- {
- "name": "Netherite: Prison",
- "description": "The Minecraft Prison experience, refined. Built with a scalable world loading system - stored in Amazon S3 - and seamlessly sharded across multiple servers.",
- "media": [
- {
- "type": "image",
- "image": "./assets/prison-spawn.png",
- "caption": "Spawn"
- },
- {
- "type": "image",
- "image": "./assets/prison-dungeon.png",
- "caption": "Dungeons"
- }
- ]
- },
- {
- "name": "Netherite: Panel",
- "description": "The Netherite Panel is a web-based control panel which manages config, deployments, audit logs, and other features of the Netherite network. It's built with NextJS, TypeScript, Tailwind CSS, GRPC, and various other technologies.",
- "media": [
- {
- "type": "image",
- "image": "./assets/netherite-panel-config.png",
- "caption": "Admin Panel - Config Editor"
- },
- {
- "type": "image",
- "image": "./assets/netherite-panel-deployment.png",
- "caption": "Admin Panel - Deployment"
- }
- ]
- }
- ]
-}
diff --git a/content/clients/origin-realms/assets/oe-avatar.png b/content/clients/origin-realms/assets/oe-avatar.png
deleted file mode 100644
index edb0957..0000000
Binary files a/content/clients/origin-realms/assets/oe-avatar.png and /dev/null differ
diff --git a/content/clients/origin-realms/assets/oe-interpolation.mp4 b/content/clients/origin-realms/assets/oe-interpolation.mp4
deleted file mode 100644
index da17f39..0000000
Binary files a/content/clients/origin-realms/assets/oe-interpolation.mp4 and /dev/null differ
diff --git a/content/clients/origin-realms/assets/oe-settings.png b/content/clients/origin-realms/assets/oe-settings.png
deleted file mode 100644
index 6c6fb0d..0000000
Binary files a/content/clients/origin-realms/assets/oe-settings.png and /dev/null differ
diff --git a/content/clients/origin-realms/avatar.png b/content/clients/origin-realms/avatar.png
deleted file mode 100644
index 1a7c322..0000000
Binary files a/content/clients/origin-realms/avatar.png and /dev/null differ
diff --git a/content/clients/origin-realms/banner.jpg b/content/clients/origin-realms/banner.jpg
deleted file mode 100644
index 1217a15..0000000
Binary files a/content/clients/origin-realms/banner.jpg and /dev/null differ
diff --git a/content/clients/origin-realms/meta.json b/content/clients/origin-realms/meta.json
deleted file mode 100644
index c516d50..0000000
--- a/content/clients/origin-realms/meta.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "slug": "origin-realms",
- "name": "Origin Realms",
- "description": "Working alongside an EXTREMELY talented team on seamless mod integration, enhancing the gameplay experience, while keeping the server magic alive.",
- "href": "https://originrealms.com",
- "avatar": "./avatar.png",
- "banner": "./banner.jpg",
- "start": "Dec 2020",
- "end": "Jun 2022",
- "projects": [
- {
- "name": "Origins Enhanced",
- "description": "Origins Enhanced an official modification for Origin Realms, introducing multiple tweaks, fixes and features to enhance your gameplay experience. On their own, each feature may appear insignificant, yet – when combined – create a more immersive and smoother experience. These include armor stand interpolation to make all animations silky smooth to minor rendering fixes with foliage.",
- "avatar": "./assets/oe-avatar.png",
- "links": [
- {
- "name": "CurseForge",
- "href": "https://www.curseforge.com/minecraft/mc-mods/origins-enhanced"
- },
- {
- "name": "Blog Post",
- "href": "https://originrealms.com/blog/origins-enhanced"
- }
- ],
- "media": [
- {
- "type": "video",
- "video": "./assets/oe-interpolation.mp4",
- "caption": "Armor stand interpolation"
- },
- {
- "type": "image",
- "image": "./assets/oe-settings.png",
- "caption": "Settings menu"
- }
- ]
- }
- ]
-}
diff --git a/content/clients/partyhat/assets/masayoshi-avatar.png b/content/clients/partyhat/assets/masayoshi-avatar.png
deleted file mode 100644
index 5af3d0c..0000000
Binary files a/content/clients/partyhat/assets/masayoshi-avatar.png and /dev/null differ
diff --git a/content/clients/partyhat/assets/masayoshi-games-banner.jpg b/content/clients/partyhat/assets/masayoshi-games-banner.jpg
deleted file mode 100644
index 5a4efaa..0000000
Binary files a/content/clients/partyhat/assets/masayoshi-games-banner.jpg and /dev/null differ
diff --git a/content/clients/partyhat/assets/mcparty-blizzard.png b/content/clients/partyhat/assets/mcparty-blizzard.png
deleted file mode 100644
index a05f700..0000000
Binary files a/content/clients/partyhat/assets/mcparty-blizzard.png and /dev/null differ
diff --git a/content/clients/partyhat/assets/mcparty-lobby.png b/content/clients/partyhat/assets/mcparty-lobby.png
deleted file mode 100644
index 06a1601..0000000
Binary files a/content/clients/partyhat/assets/mcparty-lobby.png and /dev/null differ
diff --git a/content/clients/partyhat/avatar.png b/content/clients/partyhat/avatar.png
deleted file mode 100644
index 6765fb8..0000000
Binary files a/content/clients/partyhat/avatar.png and /dev/null differ
diff --git a/content/clients/partyhat/banner.png b/content/clients/partyhat/banner.png
deleted file mode 100644
index 95d4ed5..0000000
Binary files a/content/clients/partyhat/banner.png and /dev/null differ
diff --git a/content/clients/partyhat/meta.json b/content/clients/partyhat/meta.json
deleted file mode 100644
index aa4ce83..0000000
--- a/content/clients/partyhat/meta.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "slug": "partyhat",
- "name": "Partyhat Productions",
- "description": "Lead server developer for the Masayoshi Games Twitch Rivals event, and an accompanying Minecraft network.",
- "role": "Game Server Developer",
- "href": "https://partyhat.dev",
- "avatar": "./avatar.png",
- "banner": "./banner.png",
- "start": "Nov 2021",
- "end": "Jun 2023",
- "projects": [
- {
- "name": "Masayoshi Games",
- "description": "A 64-player Hunger Games event, where players compete to be the last team standing. They are cast into an unfamiliar world, filled with \"The Roots\", and must defeat the infested monsters, and uncover rare loot to become the true \"Root Champions\"",
- "avatar": "./assets/masayoshi-avatar.png",
- "links": [
- {
- "name": "Broadcast",
- "href": "https://www.twitch.tv/videos/1706498880",
- "icon": "twitch"
- },
- {
- "name": "Schedule",
- "href": "https://schedule.twitchrivals.com/events/masayoshi-games-ft-minecraft-B04r1"
- }
- ],
- "media": [
- {
- "type": "embed",
- "url": "https://www.youtube.com/watch?v=a7k6WsF1nBE",
- "caption": "Masayoshi Games Trailer"
- },
- {
- "type": "image",
- "image": "./assets/masayoshi-games-banner.jpg",
- "caption": "Masayoshi Games Banner"
- }
- ]
- },
- {
- "name": "MC Party",
- "description": "A minigame network, built with a \"Mario Party\"-esc twist. Focused on fast-paced, fun, and competitive gameplay.",
- "avatar": "./avatar.png",
- "links": [
- {
- "name": "Website",
- "href": "https://mcparty.live"
- }
- ],
- "media": [
- {
- "type": "image",
- "image": "./assets/mcparty-lobby.png",
- "caption": "MC Party - Lobby"
- },
- {
- "type": "image",
- "image": "./assets/mcparty-blizzard.png",
- "caption": "MC Party - Blizzard Minigame"
- }
- ]
- }
- ]
-}
diff --git a/content/clients/promoquoter/avatar.svg b/content/clients/promoquoter/avatar.svg
deleted file mode 100644
index 5b8aa9c..0000000
--- a/content/clients/promoquoter/avatar.svg
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
\ No newline at end of file
diff --git a/content/clients/promoquoter/meta.json b/content/clients/promoquoter/meta.json
deleted file mode 100644
index eeed185..0000000
--- a/content/clients/promoquoter/meta.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "slug": "promoquoter",
- "name": "Promo Quoter",
- "description": "Quoting software for promotional products, built using Symfony",
- "role": "Web Developer",
- "href": "https://promoquoter.com",
- "avatar": "./avatar.svg",
- "start": "Dec 2022"
-}
diff --git a/content/clients/promoquoter/wordmark.svg b/content/clients/promoquoter/wordmark.svg
deleted file mode 100644
index 9e8a618..0000000
--- a/content/clients/promoquoter/wordmark.svg
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
\ No newline at end of file
diff --git a/content/clients/sk1er/assets/hyperium-avatar.png b/content/clients/sk1er/assets/hyperium-avatar.png
deleted file mode 100644
index cd020e6..0000000
Binary files a/content/clients/sk1er/assets/hyperium-avatar.png and /dev/null differ
diff --git a/content/clients/sk1er/assets/hyperium-menu.jpg b/content/clients/sk1er/assets/hyperium-menu.jpg
deleted file mode 100644
index 329a1e8..0000000
Binary files a/content/clients/sk1er/assets/hyperium-menu.jpg and /dev/null differ
diff --git a/content/clients/sk1er/assets/hyperium-settings.jpeg b/content/clients/sk1er/assets/hyperium-settings.jpeg
deleted file mode 100644
index f6c6825..0000000
Binary files a/content/clients/sk1er/assets/hyperium-settings.jpeg and /dev/null differ
diff --git a/content/clients/sk1er/avatar.jpg b/content/clients/sk1er/avatar.jpg
deleted file mode 100644
index 14d496f..0000000
Binary files a/content/clients/sk1er/avatar.jpg and /dev/null differ
diff --git a/content/clients/sk1er/banner.jpg b/content/clients/sk1er/banner.jpg
deleted file mode 100644
index b66fe6c..0000000
Binary files a/content/clients/sk1er/banner.jpg and /dev/null differ
diff --git a/content/clients/sk1er/meta.json b/content/clients/sk1er/meta.json
deleted file mode 100644
index 9fdce23..0000000
--- a/content/clients/sk1er/meta.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "slug": "sk1er",
- "name": "Sk1er LLC",
- "description": "Contributions to the Hyperium Minecraft Client.",
- "href": "https://sk1er.club",
- "avatar": "./avatar.jpg",
- "banner": "./banner.jpg",
- "start": "Apr 2019",
- "end": "Dec 2019",
- "projects": [
- {
- "name": "Hyperium",
- "description": "A free, open-source Minecraft client that aims to improve the vanilla experience. I contributed to the client by adding a few features, fixing bugs, and improving the codebase. Honestly, I attribute the start of my programming career to this client, it was a fun start to the journey!",
- "avatar": "./assets/hyperium-avatar.png",
- "links": [
- {
- "name": "Homepage",
- "href": "https://hyperium.cc"
- },
- {
- "name": "GitHub",
- "href": "https://github.com/HyperiumClient/Hyperium",
- "icon": "github"
- }
- ],
- "media": [
- {
- "type": "image",
- "image": "./assets/hyperium-menu.jpg",
- "caption": "The main menu (about the 300th iteration of it)"
- },
- {
- "type": "image",
- "image": "./assets/hyperium-settings.jpeg",
- "caption": "The settings menu (also about the 300th iteration of it)"
- }
- ]
- }
- ]
-}
diff --git a/content/clients/speedsilver/assets/civilization-ign.png b/content/clients/speedsilver/assets/civilization-ign.png
deleted file mode 100644
index ae8ac2e..0000000
Binary files a/content/clients/speedsilver/assets/civilization-ign.png and /dev/null differ
diff --git a/content/clients/speedsilver/assets/civilization-upcoming-test.png b/content/clients/speedsilver/assets/civilization-upcoming-test.png
deleted file mode 100644
index f9a8ae7..0000000
Binary files a/content/clients/speedsilver/assets/civilization-upcoming-test.png and /dev/null differ
diff --git a/content/clients/speedsilver/avatar.jpg b/content/clients/speedsilver/avatar.jpg
deleted file mode 100644
index 551c04e..0000000
Binary files a/content/clients/speedsilver/avatar.jpg and /dev/null differ
diff --git a/content/clients/speedsilver/banner.jpg b/content/clients/speedsilver/banner.jpg
deleted file mode 100644
index fb68bdd..0000000
Binary files a/content/clients/speedsilver/banner.jpg and /dev/null differ
diff --git a/content/clients/speedsilver/meta.json b/content/clients/speedsilver/meta.json
deleted file mode 100644
index b1e6f03..0000000
--- a/content/clients/speedsilver/meta.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "slug": "speedsilver",
- "name": "SpeedSilver",
- "description": "Development of several Discord Bots to ease video production & event management.",
- "href": "https://mcparty.live",
- "avatar": "./avatar.jpg",
- "banner": "./banner.jpg",
- "start": "Mar 2022",
- "end": "Dec 2022",
- "projects": [
- {
- "name": "Civilization Bot",
- "description": "Automated: Civilization event tests, IGN collection, tester messaging, and more.",
- "links": [
- {
- "name": "Discord",
- "href": "https://discord.gg/2Z8Y4Y4",
- "icon": "discord"
- }
- ],
- "media": [
- {
- "type": "image",
- "image": "./assets/civilization-upcoming-test.png",
- "caption": "Upcoming Test"
- },
- {
- "type": "image",
- "image": "./assets/civilization-ign.png",
- "caption": "IGN Collection"
- }
- ]
- }
- ]
-}
diff --git a/content/clients/team-visionary/assets/twitch-rivals-poster.jpeg b/content/clients/team-visionary/assets/twitch-rivals-poster.jpeg
deleted file mode 100644
index 4b805a8..0000000
Binary files a/content/clients/team-visionary/assets/twitch-rivals-poster.jpeg and /dev/null differ
diff --git a/content/clients/team-visionary/assets/twitch-rivals-trailer.mp4 b/content/clients/team-visionary/assets/twitch-rivals-trailer.mp4
deleted file mode 100644
index 8d719d7..0000000
Binary files a/content/clients/team-visionary/assets/twitch-rivals-trailer.mp4 and /dev/null differ
diff --git a/content/clients/team-visionary/avatar.png b/content/clients/team-visionary/avatar.png
deleted file mode 100644
index 5d439d1..0000000
Binary files a/content/clients/team-visionary/avatar.png and /dev/null differ
diff --git a/content/clients/team-visionary/banner.png b/content/clients/team-visionary/banner.png
deleted file mode 100644
index ad3d125..0000000
Binary files a/content/clients/team-visionary/banner.png and /dev/null differ
diff --git a/content/clients/team-visionary/meta.json b/content/clients/team-visionary/meta.json
deleted file mode 100644
index a703724..0000000
--- a/content/clients/team-visionary/meta.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "slug": "team-visionary",
- "name": "Team Visionary",
- "description": "Developed a modular minigame framework, and networked companion mod, for the House of Nightmares Twitch Rivals event.",
- "role": "Game Server Developer",
- "href": "https://teamvisionary.net",
- "avatar": "./avatar.png",
- "banner": "./banner.png",
- "start": "Oct 2023",
- "end": "Feb 2024",
- "projects": [
- {
- "name": "House of Nightmares",
- "description": "A multi-day Twitch Rivals event, where players must escape a haunted house, solving puzzles and avoiding monsters. Each day held two minigames, each of which would eliminate players from the event, with the winner receiving a share of $100,000 USD.",
- "media": [
- {
- "type": "image",
- "image": "./assets/twitch-rivals-poster.jpeg",
- "caption": "Twitch Rivals Poster"
- },
- {
- "type": "video",
- "video": "./assets/twitch-rivals-trailer.mp4",
- "caption": "Twitch Rivals Trailer"
- }
- ],
- "links": [
- {
- "name": "Twitch Rivals Schedule",
- "href": "https://schedule.twitchrivals.com/events/house-of-nightmares-ft-hannahxxrose-sylveey-on-twitch-rivals-7w3d8"
- }
- ]
- }
- ]
-}
diff --git a/content/clients/utiliti/assets/OS_Banner.jpg b/content/clients/utiliti/assets/OS_Banner.jpg
deleted file mode 100644
index a9a61af..0000000
Binary files a/content/clients/utiliti/assets/OS_Banner.jpg and /dev/null differ
diff --git a/content/clients/utiliti/avatar.jpg b/content/clients/utiliti/avatar.jpg
deleted file mode 100644
index ad837b5..0000000
Binary files a/content/clients/utiliti/avatar.jpg and /dev/null differ
diff --git a/content/clients/utiliti/banner.jpg b/content/clients/utiliti/banner.jpg
deleted file mode 100644
index af61499..0000000
Binary files a/content/clients/utiliti/banner.jpg and /dev/null differ
diff --git a/content/clients/utiliti/meta.json b/content/clients/utiliti/meta.json
deleted file mode 100644
index 800df22..0000000
--- a/content/clients/utiliti/meta.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "slug": "utiliti",
- "name": "UTILITI",
- "description": "Designing a scalable, Kubernetes-based, and performant Minecraft network, and integrating in-house \"Play to Earn\" features.",
- "href": "https://utiliti.ai",
- "avatar": "./avatar.jpg",
- "banner": "./banner.jpg",
- "start": "Mar 2022",
- "end": "Oct 2022",
- "projects": [
- {
- "name": "Hero Galaxy - Minecraft",
- "description": "A Minecraft server network, built with containerized 'minigame' instances, and integrated \"Play to Earn\" rewards upon completion of minigames. This was back in the NFT Worlds days, wasn't that fun!"
- }
- ]
-}
diff --git a/content/commissions/ally/images/2.png b/content/commissions/ally/images/2.png
deleted file mode 100644
index 58e5522..0000000
Binary files a/content/commissions/ally/images/2.png and /dev/null differ
diff --git a/content/commissions/ally/meta.json b/content/commissions/ally/meta.json
deleted file mode 100644
index c3e1748..0000000
--- a/content/commissions/ally/meta.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "slug": "ally",
- "name": "Ally",
- "commissions": [
- {
- "slug": "commission-2",
- "title": "Commission 2",
- "description": "A small little goober.",
- "images": ["./images/2.png"]
- }
- ]
-}
diff --git a/content/commissions/alpha/avatar.jpeg b/content/commissions/alpha/avatar.jpeg
deleted file mode 100644
index 2a3c93b..0000000
Binary files a/content/commissions/alpha/avatar.jpeg and /dev/null differ
diff --git a/content/commissions/alpha/images/1-bg.png b/content/commissions/alpha/images/1-bg.png
deleted file mode 100644
index fa7ed4f..0000000
Binary files a/content/commissions/alpha/images/1-bg.png and /dev/null differ
diff --git a/content/commissions/alpha/images/1.png b/content/commissions/alpha/images/1.png
deleted file mode 100644
index fb250e0..0000000
Binary files a/content/commissions/alpha/images/1.png and /dev/null differ
diff --git a/content/commissions/alpha/meta.json b/content/commissions/alpha/meta.json
deleted file mode 100644
index 3f91ed7..0000000
--- a/content/commissions/alpha/meta.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "slug": "alpha",
- "name": "Alpha",
- "link": "https://twitter.com/Alphiixy",
- "avatar": "./avatar.jpeg",
- "commissions": [
- {
- "slug": "commission-1",
- "title": "Commission 1",
- "description": "The first commission that Alpha has made for me! Look how cute she is,,,",
- "images": ["./images/1.png", "./images/1-bg.png"],
- "links": [
- {
- "text": "Finished Tweet",
- "href": "https://twitter.com/Alphiixy/status/1382542828924936193"
- }
- ]
- }
- ]
-}
diff --git a/content/commissions/amber/avatar.jpg b/content/commissions/amber/avatar.jpg
deleted file mode 100644
index 3e2caa9..0000000
Binary files a/content/commissions/amber/avatar.jpg and /dev/null differ
diff --git a/content/commissions/amber/images/1.jpg b/content/commissions/amber/images/1.jpg
deleted file mode 100644
index 7f45dd5..0000000
Binary files a/content/commissions/amber/images/1.jpg and /dev/null differ
diff --git a/content/commissions/amber/images/2.png b/content/commissions/amber/images/2.png
deleted file mode 100644
index 8907c05..0000000
Binary files a/content/commissions/amber/images/2.png and /dev/null differ
diff --git a/content/commissions/amber/images/3.png b/content/commissions/amber/images/3.png
deleted file mode 100644
index f9e8ec0..0000000
Binary files a/content/commissions/amber/images/3.png and /dev/null differ
diff --git a/content/commissions/amber/meta.json b/content/commissions/amber/meta.json
deleted file mode 100644
index 525d996..0000000
--- a/content/commissions/amber/meta.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "slug": "amber",
- "name": "Amber",
- "link": "https://twitter.com/FCLmao",
- "avatar": "./avatar.jpg",
- "commissions": [
- {
- "slug": "commission-1",
- "title": "Commission 1",
- "description": "The first rendition of my character that Amber drew!",
- "images": ["images/1.jpg"]
- },
- {
- "slug": "commission-2",
- "title": "Commission 2",
- "description": "This is my main reference sheet that I use nowadays. They did a great job helping me refine my character & design some of the details.",
- "images": ["images/2.png"]
- },
- {
- "slug": "commission-3",
- "title": "Commission 3",
- "description": "BLEH!!! Based on the silly little cat that we all know and love. <3",
- "images": ["images/3.png"]
- }
- ]
-}
diff --git a/content/commissions/amiee/avatar.jpg b/content/commissions/amiee/avatar.jpg
deleted file mode 100644
index ca81ee2..0000000
Binary files a/content/commissions/amiee/avatar.jpg and /dev/null differ
diff --git a/content/commissions/amiee/images/2.png b/content/commissions/amiee/images/2.png
deleted file mode 100644
index 953e39a..0000000
Binary files a/content/commissions/amiee/images/2.png and /dev/null differ
diff --git a/content/commissions/amiee/meta.json b/content/commissions/amiee/meta.json
deleted file mode 100644
index beb56b1..0000000
--- a/content/commissions/amiee/meta.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "slug": "amiee",
- "name": "Amiee",
- "link": "https://twitter.com/solarcello",
- "avatar": "./avatar.jpg",
- "commissions": [
- {
- "slug": "commission-1",
- "title": "Reference Sheet",
- "description": "The first reference sheet I ever got!",
- "images": ["./images/2.png"]
- }
- ]
-}
diff --git a/content/commissions/andredan/avatar.jpg b/content/commissions/andredan/avatar.jpg
deleted file mode 100644
index 389917b..0000000
Binary files a/content/commissions/andredan/avatar.jpg and /dev/null differ
diff --git a/content/commissions/andredan/images/1-paper.jpg b/content/commissions/andredan/images/1-paper.jpg
deleted file mode 100644
index 8350576..0000000
Binary files a/content/commissions/andredan/images/1-paper.jpg and /dev/null differ
diff --git a/content/commissions/andredan/images/1.png b/content/commissions/andredan/images/1.png
deleted file mode 100644
index a8ce0b9..0000000
Binary files a/content/commissions/andredan/images/1.png and /dev/null differ
diff --git a/content/commissions/andredan/meta.json b/content/commissions/andredan/meta.json
deleted file mode 100644
index 5dbdf75..0000000
--- a/content/commissions/andredan/meta.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "slug": "andredan",
- "name": "Andredan",
- "link": "https://twitter.com/andredan_art",
- "avatar": "./avatar.jpg",
- "commissions": [
- {
- "slug": "commission-1",
- "title": "Commission 1",
- "description": "I initially had this drawn on paper, but I decided to get it digitally colored instead. I love how it turned out!",
- "images": ["./images/1.png", "./images/1-paper.jpg"],
- "links": [
- {
- "text": "Finished Tweet",
- "href": "https://twitter.com/andredan_art/status/1497230139029086208"
- }
- ]
- }
- ]
-}
diff --git a/content/commissions/charwiewie/avatar.jpg b/content/commissions/charwiewie/avatar.jpg
deleted file mode 100644
index eb3a606..0000000
Binary files a/content/commissions/charwiewie/avatar.jpg and /dev/null differ
diff --git a/content/commissions/charwiewie/images/1.png b/content/commissions/charwiewie/images/1.png
deleted file mode 100644
index 3f29709..0000000
Binary files a/content/commissions/charwiewie/images/1.png and /dev/null differ
diff --git a/content/commissions/charwiewie/meta.json b/content/commissions/charwiewie/meta.json
deleted file mode 100644
index 9699484..0000000
--- a/content/commissions/charwiewie/meta.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "slug": "charwiewie",
- "name": "Charwiewie",
- "link": "https://twitter.com/charwiewie",
- "avatar": "./avatar.jpg",
- "commissions": [
- {
- "slug": "commission-1",
- "title": "Commission 1",
- "description": "A BEAUTIFUL rendition of my character, Stella! Charwiewie has such a fantastic style, and I love how she captured the personality in this piece.",
- "images": ["./images/1.png"]
- }
- ]
-}
diff --git a/content/commissions/hanako/avatar.jpg b/content/commissions/hanako/avatar.jpg
deleted file mode 100644
index f34757a..0000000
Binary files a/content/commissions/hanako/avatar.jpg and /dev/null differ
diff --git a/content/commissions/hanako/images/1-bg.png b/content/commissions/hanako/images/1-bg.png
deleted file mode 100644
index aee4caa..0000000
Binary files a/content/commissions/hanako/images/1-bg.png and /dev/null differ
diff --git a/content/commissions/hanako/images/1.png b/content/commissions/hanako/images/1.png
deleted file mode 100644
index b50fa9e..0000000
Binary files a/content/commissions/hanako/images/1.png and /dev/null differ
diff --git a/content/commissions/hanako/meta.json b/content/commissions/hanako/meta.json
deleted file mode 100644
index c9a0ad4..0000000
--- a/content/commissions/hanako/meta.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "slug": "hanako",
- "name": "Hanako",
- "link": "https://twitter.com/hanakosart",
- "avatar": "./avatar.jpg",
- "commissions": [
- {
- "slug": "commission-1",
- "title": "Commission 1",
- "description": "Hanako did such a BEAUTIFUL job with this piece! Stunning shading, composition, everything! Thank you so much!",
- "images": ["./images/1.png", "./images/1-bg.png"]
- }
- ]
-}
diff --git a/content/commissions/hiss/images/1.jpg b/content/commissions/hiss/images/1.jpg
deleted file mode 100644
index 30e7bdb..0000000
Binary files a/content/commissions/hiss/images/1.jpg and /dev/null differ
diff --git a/content/commissions/hiss/meta.json b/content/commissions/hiss/meta.json
deleted file mode 100644
index f6f3fd9..0000000
--- a/content/commissions/hiss/meta.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "slug": "hiss",
- "name": "Hiss",
- "commissions": [
- {
- "slug": "commission-1",
- "title": "Commission 1",
- "description": "I asked hiss to draw my OC in a different outfit, and I love how it turned out!",
- "images": ["./images/1.jpg"]
- }
- ]
-}
diff --git a/content/commissions/kinneticto/avatar.jpeg b/content/commissions/kinneticto/avatar.jpeg
deleted file mode 100644
index 6ec3259..0000000
Binary files a/content/commissions/kinneticto/avatar.jpeg and /dev/null differ
diff --git a/content/commissions/kinneticto/images/1.png b/content/commissions/kinneticto/images/1.png
deleted file mode 100644
index ead8bef..0000000
Binary files a/content/commissions/kinneticto/images/1.png and /dev/null differ
diff --git a/content/commissions/kinneticto/meta.json b/content/commissions/kinneticto/meta.json
deleted file mode 100644
index 359932f..0000000
--- a/content/commissions/kinneticto/meta.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "slug": "kinneticto",
- "name": "Kinneticto",
- "link": "https://twitter.com/kinneticto",
- "avatar": "./avatar.jpeg",
- "commissions": [
- {
- "slug": "commission-1",
- "title": "Commission 1",
- "description": "I found Kinneticto from their INCREDIBLE art of Genshin Impact characters, and immediately jumped at the chance to commission them. They were very friendly and easy to work with, and I'm very happy with the result!",
- "images": ["./images/1.png"]
- }
- ]
-}
diff --git a/content/commissions/livillon/avatar.jpg b/content/commissions/livillon/avatar.jpg
deleted file mode 100644
index ffaeba5..0000000
Binary files a/content/commissions/livillon/avatar.jpg and /dev/null differ
diff --git a/content/commissions/livillon/images/1-set1.png b/content/commissions/livillon/images/1-set1.png
deleted file mode 100644
index ffa9f78..0000000
Binary files a/content/commissions/livillon/images/1-set1.png and /dev/null differ
diff --git a/content/commissions/livillon/images/1-set2.png b/content/commissions/livillon/images/1-set2.png
deleted file mode 100644
index 07949da..0000000
Binary files a/content/commissions/livillon/images/1-set2.png and /dev/null differ
diff --git a/content/commissions/livillon/meta.json b/content/commissions/livillon/meta.json
deleted file mode 100644
index 34dbc4e..0000000
--- a/content/commissions/livillon/meta.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "slug": "livillon",
- "name": "Livillon",
- "link": "https://twitter.com/Livillon",
- "avatar": "./avatar.jpg",
- "commissions": [
- {
- "slug": "emotes",
- "title": "Emotes",
- "description": "My set of emotes that I commissioned Livillon for.",
- "images": ["./images/1-set1.png", "./images/1-set2.png"],
- "links": [
- {
- "text": "Set 1",
- "href": "https://twitter.com/Livillon/status/1534973612695900174"
- },
- {
- "text": "Set 2",
- "href": "https://twitter.com/Livillon/status/1550148606790868992"
- }
- ]
- }
- ]
-}
diff --git a/content/commissions/midge/avatar.jpg b/content/commissions/midge/avatar.jpg
deleted file mode 100644
index fe14724..0000000
Binary files a/content/commissions/midge/avatar.jpg and /dev/null differ
diff --git a/content/commissions/midge/images/1.png b/content/commissions/midge/images/1.png
deleted file mode 100644
index 402a7f9..0000000
Binary files a/content/commissions/midge/images/1.png and /dev/null differ
diff --git a/content/commissions/midge/meta.json b/content/commissions/midge/meta.json
deleted file mode 100644
index 757ee67..0000000
--- a/content/commissions/midge/meta.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "slug": "midge",
- "name": "Midge",
- "link": "https://twitter.com/midgitea",
- "avatar": "./avatar.jpg",
- "commissions": [
- {
- "slug": "commission-1",
- "title": "Commission 1",
- "description": "I commissioned Midge to design my new OC, and they did a fantastic job! I'm super happy with her design!",
- "images": ["./images/1.png"]
- }
- ]
-}
diff --git a/content/commissions/peachy/avatar.jpg b/content/commissions/peachy/avatar.jpg
deleted file mode 100644
index c62cd65..0000000
Binary files a/content/commissions/peachy/avatar.jpg and /dev/null differ
diff --git a/content/commissions/peachy/images/1-banner.png b/content/commissions/peachy/images/1-banner.png
deleted file mode 100644
index 5cc5fe6..0000000
Binary files a/content/commissions/peachy/images/1-banner.png and /dev/null differ
diff --git a/content/commissions/peachy/images/1.png b/content/commissions/peachy/images/1.png
deleted file mode 100644
index 54f6d0a..0000000
Binary files a/content/commissions/peachy/images/1.png and /dev/null differ
diff --git a/content/commissions/peachy/meta.json b/content/commissions/peachy/meta.json
deleted file mode 100644
index af272e4..0000000
--- a/content/commissions/peachy/meta.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "slug": "peachy",
- "name": "Peachy",
- "link": "https://twitter.com/peachy3334",
- "avatar": "./avatar.jpg",
- "commissions": [
- {
- "slug": "commission-1",
- "title": "Commission 1",
- "description": "A more atmospheric piece focusing less on the character and more on the environment.",
- "images": ["./images/1.png", "./images/1-banner.png"]
- }
- ]
-}
diff --git a/content/commissions/siomi/avatar.jpg b/content/commissions/siomi/avatar.jpg
deleted file mode 100644
index 7430f61..0000000
Binary files a/content/commissions/siomi/avatar.jpg and /dev/null differ
diff --git a/content/commissions/siomi/images/1-no-wings.png b/content/commissions/siomi/images/1-no-wings.png
deleted file mode 100644
index b0d2643..0000000
Binary files a/content/commissions/siomi/images/1-no-wings.png and /dev/null differ
diff --git a/content/commissions/siomi/images/1.png b/content/commissions/siomi/images/1.png
deleted file mode 100644
index d9724b4..0000000
Binary files a/content/commissions/siomi/images/1.png and /dev/null differ
diff --git a/content/commissions/siomi/images/2.png b/content/commissions/siomi/images/2.png
deleted file mode 100644
index 8307f81..0000000
Binary files a/content/commissions/siomi/images/2.png and /dev/null differ
diff --git a/content/commissions/siomi/meta.json b/content/commissions/siomi/meta.json
deleted file mode 100644
index 3414c67..0000000
--- a/content/commissions/siomi/meta.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "slug": "siomi",
- "name": "Siomi",
- "link": "https://twitter.com/Siomi995",
- "avatar": "./avatar.jpg",
- "commissions": [
- {
- "slug": "commission-1",
- "title": "Commission 1",
- "description": "This time, I asked Siomi to draw my character with wings & devil horns.",
- "images": ["./images/1.png", "./images/1-no-wings.png"],
- "links": [
- {
- "text": "Finished Tweet",
- "href": "https://twitter.com/Siomi995/status/1413732087144673284"
- }
- ]
- },
- {
- "slug": "commission-2",
- "title": "Commission 2",
- "description": "Goober.",
- "images": ["./images/2.png"],
- "links": [
- {
- "text": "Finished Tweet",
- "href": "https://twitter.com/Siomi995/status/1444960165158014979"
- }
- ]
- }
- ]
-}
diff --git a/content/commissions/sophie/avatar.jpg b/content/commissions/sophie/avatar.jpg
deleted file mode 100644
index 005fdbc..0000000
Binary files a/content/commissions/sophie/avatar.jpg and /dev/null differ
diff --git a/content/commissions/sophie/images/1.png b/content/commissions/sophie/images/1.png
deleted file mode 100644
index 3814b19..0000000
Binary files a/content/commissions/sophie/images/1.png and /dev/null differ
diff --git a/content/commissions/sophie/meta.json b/content/commissions/sophie/meta.json
deleted file mode 100644
index 4781e6c..0000000
--- a/content/commissions/sophie/meta.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "slug": "sophie",
- "name": "Sophie",
- "link": "https://twitter.com/groggiie",
- "avatar": "./avatar.jpg",
- "commissions": [
- {
- "slug": "commission-1",
- "title": "Commission 1",
- "description": "My OC with a lil' cat friend :3",
- "images": ["./images/1.png"]
- }
- ]
-}
diff --git a/content/commissions/tof/avatar.jpg b/content/commissions/tof/avatar.jpg
deleted file mode 100644
index 76ff099..0000000
Binary files a/content/commissions/tof/avatar.jpg and /dev/null differ
diff --git a/content/commissions/tof/images/3-banner.png b/content/commissions/tof/images/3-banner.png
deleted file mode 100644
index 18c807b..0000000
Binary files a/content/commissions/tof/images/3-banner.png and /dev/null differ
diff --git a/content/commissions/tof/images/3.png b/content/commissions/tof/images/3.png
deleted file mode 100644
index 4983a22..0000000
Binary files a/content/commissions/tof/images/3.png and /dev/null differ
diff --git a/content/commissions/tof/meta.json b/content/commissions/tof/meta.json
deleted file mode 100644
index 23d6a2f..0000000
--- a/content/commissions/tof/meta.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "slug": "tof",
- "name": "Tof",
- "link": "https://twitter.com/tofffxx_",
- "avatar": "./avatar.jpg",
- "commissions": [
- {
- "slug": "commission-3",
- "title": "Commission 3",
- "images": ["./images/3.png", "./images/3-banner.png"]
- }
- ]
-}
diff --git a/content/commissions/tutta/avatar.jpg b/content/commissions/tutta/avatar.jpg
deleted file mode 100644
index 4a07caa..0000000
Binary files a/content/commissions/tutta/avatar.jpg and /dev/null differ
diff --git a/content/commissions/tutta/images/1.png b/content/commissions/tutta/images/1.png
deleted file mode 100644
index 6a0306e..0000000
Binary files a/content/commissions/tutta/images/1.png and /dev/null differ
diff --git a/content/commissions/tutta/meta.json b/content/commissions/tutta/meta.json
deleted file mode 100644
index 6aa5bb0..0000000
--- a/content/commissions/tutta/meta.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "slug": "tutta",
- "name": "Tutta",
- "link": "https://twitter.com/MrsTDraw",
- "avatar": "./avatar.jpg",
- "commissions": [
- {
- "slug": "commission-1",
- "title": "Commission 1",
- "description": "A pixel-art of my character, Stella!",
- "images": ["./images/1.png"]
- }
- ]
-}
diff --git a/next-env.d.ts b/next-env.d.ts
new file mode 100644
index 0000000..4f11a03
--- /dev/null
+++ b/next-env.d.ts
@@ -0,0 +1,5 @@
+///
+///
+
+// NOTE: This file should not be edited
+// see https://nextjs.org/docs/basic-features/typescript for more information.
diff --git a/next.config.js b/next.config.js
new file mode 100644
index 0000000..c79b2d5
--- /dev/null
+++ b/next.config.js
@@ -0,0 +1,16 @@
+// noinspection JSLastCommaInObjectLiteral
+
+/** @type {import("next").NextConfig} */
+const nextConfig = {
+ webpack(config) {
+ config.module.rules.push({
+ test: /\.svg$/,
+ use: ["@svgr/webpack"],
+ });
+
+ return config;
+ },
+ reactStrictMode: true,
+};
+
+module.exports = nextConfig;
diff --git a/next.config.ts b/next.config.ts
deleted file mode 100644
index 2e6841c..0000000
--- a/next.config.ts
+++ /dev/null
@@ -1,73 +0,0 @@
-import { withPostHogConfig } from "@posthog/nextjs-config";
-import type { NextConfig } from "next";
-import { PHASE_DEVELOPMENT_SERVER, PHASE_PRODUCTION_BUILD } from "next/constants.js";
-
-/**
- * Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation. This is especially useful
- * for Docker builds.
- */
-import { env } from "@/env.config";
-
-let nextConfig: NextConfig = {
- typedRoutes: true,
- reactCompiler: true,
- experimental: {
- turbopackFileSystemCacheForDev: true,
- },
- images: {
- deviceSizes: [384, 640, 768, 1024, 1280, 1536, 1920],
- formats: ["image/webp"],
- // One month
- minimumCacheTTL: 60 * 60 * 24 * 30,
- },
- logging: {
- fetches: {
- fullUrl: true,
- },
- },
- pageExtensions: ["js", "jsx", "ts", "tsx"],
- reactStrictMode: true,
- rewrites() {
- return [
- {
- destination: "https://us-assets.i.posthog.com/static/:path*",
- source: "/ingest/static/:path*",
- },
- {
- destination: "https://us.i.posthog.com/:path*",
- source: "/ingest/:path*",
- },
- {
- destination: "https://us.i.posthog.com/decide",
- source: "/ingest/decide",
- },
- ];
- },
- // This is required to support PostHog trailing slash API requests
- skipTrailingSlashRedirect: true,
- staticPageGenerationTimeout: 300,
-};
-
-if (env.POSTHOG_API_KEY && env.POSTHOG_ENV_ID) {
- nextConfig = withPostHogConfig(nextConfig, {
- personalApiKey: env.POSTHOG_API_KEY, // Personal API Key
- envId: env.POSTHOG_ENV_ID, // Environment ID
- host: env.NEXT_PUBLIC_POSTHOG_HOST, // (optional), defaults to https://us.posthog.com
- sourcemaps: {
- enabled: true, // Enable sourcemaps generation and upload, default to true on production builds
- deleteAfterUpload: false, // Delete sourcemaps after upload, defaults to true
- },
- });
-}
-
-// biome-ignore lint/style/noDefaultExport: Config file
-export default (phase: string) => {
- const isDev = phase === PHASE_DEVELOPMENT_SERVER;
- const isBuild = phase === PHASE_PRODUCTION_BUILD;
- if (!process.env.VELITE_STARTED && (isDev || isBuild)) {
- process.env.VELITE_STARTED = "1";
- import("velite").then((m) => m.build({ watch: isDev, clean: !isDev }));
- }
-
- return nextConfig;
-};
diff --git a/package.json b/package.json
index fb98578..194aa5c 100644
--- a/package.json
+++ b/package.json
@@ -1,64 +1,47 @@
{
- "name": "koding.dev-next",
+ "name": "koding.dev",
"version": "0.1.0",
"private": true,
- "type": "module",
"scripts": {
- "start": "cross-env NODE_ENV=production next start",
- "build": "cross-env NODE_ENV=production next build",
- "analyze": "cross-env NODE_ENV=production next experimental-analyze --serve",
- "dev": "next dev -H 0.0.0.0",
- "oxlint": "oxlint",
- "oxlint:fix": "oxlint --fix --fix-suggestions",
- "oxfmt": "oxfmt --check",
- "oxfmt:fix": "oxfmt",
- "lint": "npm-run-all -p oxlint oxfmt",
- "lint:fix": "npm-run-all -p oxlint:fix oxfmt:fix",
- "typecheck": "tsc --noEmit"
+ "dev": "next dev",
+ "build": "next build",
+ "start": "next start",
+ "lint": "npm run lint:prettier && npm run lint:next",
+ "lint:next": "next lint",
+ "lint:prettier": "prettier -w \"{pages,src}/**/*.{js,jsx,ts,tsx}\" -u",
+ "prepare": "husky install"
},
"dependencies": {
- "@posthog/nextjs-config": "^1.8.23",
- "class-variance-authority": "^0.7.1",
- "client-only": "^0.0.1",
- "clsx": "^2.1.1",
- "envin": "^1.2.0",
- "media-chrome": "^4.18.2",
- "next": "16.2.1",
- "next-themes": "^0.4.6",
- "nextjs-toploader": "^3.9.17",
- "posthog-js": "^1.363.1",
- "posthog-node": "^5.28.5",
- "react": "19.2.4",
- "react-dom": "19.2.4",
- "react-icons": "^5.6.0",
- "remeda": "^2.33.6",
- "server-only": "^0.0.1",
- "sharp": "^0.34.5",
- "tailwind-merge": "^3.5.0",
- "zod": "^4.3.6"
+ "@fontsource/poppins": "^4.5.8",
+ "@fontsource/roboto": "^4.5.7",
+ "clsx": "^1.1.1",
+ "next": "12.1.6",
+ "next-seo": "^5.4.0",
+ "react": "18.1.0",
+ "react-dom": "18.1.0"
},
"devDependencies": {
- "@tailwindcss/postcss": "^4.2.2",
- "@tailwindcss/typography": "^0.5.19",
- "@types/node": "^24.12.0",
- "@types/react": "19.2.14",
- "@types/react-dom": "19.2.3",
- "babel-plugin-react-compiler": "^1.0.0",
- "cross-env": "^10.1.0",
- "npm-run-all": "^4.1.5",
- "oxfmt": "^0.41.0",
- "oxlint": "^1.56.0",
- "postcss": "^8.5.8",
- "tailwindcss": "^4.2.2",
- "tw-animate-css": "^1.4.0",
- "typescript": "^5.9.3",
- "velite": "^0.3.1"
+ "@svgr/webpack": "^6.2.1",
+ "@types/node": "17.0.35",
+ "@types/react": "18.0.9",
+ "@types/react-dom": "18.0.5",
+ "autoprefixer": "^10.4.7",
+ "eslint": "8.16.0",
+ "eslint-config-airbnb": "^19.0.4",
+ "eslint-config-next": "12.1.6",
+ "eslint-config-prettier": "^8.5.0",
+ "eslint-plugin-import": "^2.26.0",
+ "eslint-plugin-jsx-a11y": "^6.5.1",
+ "eslint-plugin-prettier": "^4.0.0",
+ "eslint-plugin-react": "^7.30.0",
+ "eslint-plugin-react-hooks": "^4.5.0",
+ "husky": "^8.0.1",
+ "postcss": "^8.4.14",
+ "prettier": "^2.6.2",
+ "tailwindcss": "^3.0.24",
+ "typescript": "4.7.2"
},
- "packageManager": "pnpm@10.25.0+sha512.5e82639027af37cf832061bcc6d639c219634488e0f2baebe785028a793de7b525ffcd3f7ff574f5e9860654e098fe852ba8ac5dd5cefe1767d23a020a92f501",
- "pnpm": {
- "overrides": {
- "@types/react": "19.2.14",
- "@types/react-dom": "19.2.3"
- }
+ "lint-staged": {
+ "**/*.{js,ts,jsx,tsx}": "npm run lint"
}
}
diff --git a/pages/_app.tsx b/pages/_app.tsx
new file mode 100644
index 0000000..c0e05f9
--- /dev/null
+++ b/pages/_app.tsx
@@ -0,0 +1,17 @@
+import "../styles/globals.css";
+import "@fontsource/poppins";
+import "@fontsource/roboto";
+import type { AppProps } from "next/app";
+import { NextSeo } from "next-seo";
+
+function App({ Component, pageProps }: AppProps) {
+ return (
+ <>
+
+
+ >
+ );
+}
+
+// noinspection JSUnusedGlobalSymbols
+export default App;
diff --git a/pages/index.tsx b/pages/index.tsx
new file mode 100644
index 0000000..fd73062
--- /dev/null
+++ b/pages/index.tsx
@@ -0,0 +1,124 @@
+import type { NextPage } from "next";
+import HomeHeaderImage from "../assets/img/home-header.png";
+import AvatarImage from "../assets/img/avatar.png";
+
+import TwitterIcon from "../assets/img/icons/twitter.svg";
+import GitHubIcon from "../assets/img/icons/github.svg";
+import EmailIcon from "../assets/img/icons/email.svg";
+import ChevronDownIcon from "../assets/img/icons/chevron-down.svg";
+import MenuIcon from "../assets/img/icons/menu.svg";
+import IconButton from "../components/interaction/IconButton";
+import LinkButton from "../components/interaction/LinkButton";
+import { NextSeo } from "next-seo";
+
+const KodingSVG = () => (
+
+);
+
+const Home: NextPage = () => {
+ return (
+ <>
+
+
+
+
+
+
+
+
+ Home
+ Projects
+ About
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Hey, I'm Koding.
+ Crafting rich experiences for over 8 years.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Projects
+ Check out some of my recent projects.
+
+
+ {[...Array(6)].map((_, i) => (
+
+
+
Koding.dev
+
+
+
+
+ My personal website. Built with Next.js, TypeScript, and TailwindCSS. Lorem ipsum dolor sit amet among us swag drip 22
+ epic games amazon prime
+
+
+