Skip to content

Commit dac91ed

Browse files
authored
feat: complete website redesign (#3)
1 parent 6866810 commit dac91ed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+3811
-1946
lines changed

.github/workflows/linting.yml

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,16 @@ jobs:
99
steps:
1010
- name: Checkout
1111
uses: actions/checkout@v4
12-
- name: Setup Biome
13-
uses: biomejs/setup-biome@v2
14-
- name: Run Biome
15-
run: biome ci .
12+
- name: Setup pnpm
13+
uses: pnpm/action-setup@v4
14+
- name: Setup Node.js
15+
uses: actions/setup-node@v4
16+
with:
17+
node-version: 22
18+
cache: pnpm
19+
- name: Install dependencies
20+
run: pnpm install --frozen-lockfile
21+
- name: Run oxlint
22+
run: pnpm oxlint
23+
- name: Run oxfmt
24+
run: pnpm oxfmt

.impeccable.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
## Design Context
2+
3+
### Users
4+
5+
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.
6+
7+
### Brand Personality
8+
9+
**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.
10+
11+
### Aesthetic Direction
12+
13+
- **Visual tone:** Portfolio showcase — image-heavy, visual storytelling, project cards that invite exploration
14+
- **Typography:** Instrument Serif for headings (editorial warmth), Switzer for body (clean readability)
15+
- **Color:** Purple primary (#9145FF) is the brand identity. Blue (#0085FF) and yellow (#FAC230) as playful accents. Both light and dark themes supported.
16+
- **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
17+
- **Anti-patterns:** Generic SaaS/template looks, overly minimal "developer portfolio" energy, cookie-cutter card grids without personality
18+
19+
### Design Principles
20+
21+
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.
22+
23+
2. **Personality in the details** — Small touches (twinkling stars, cat photos, playful copy) make the site memorable. Don't sand these away for "professionalism."
24+
25+
3. **Warmth over polish** — Prefer designs that feel human and inviting over those that feel cold and perfect. Rounded edges, warm tones, approachable typography.
26+
27+
4. **Curated, not comprehensive** — Show the best work prominently rather than listing everything equally. Quality of presentation over quantity of content.
28+
29+
5. **Accessible by default** — WCAG AA minimum. Good contrast ratios, keyboard navigation, screen reader support. Accessibility is not optional.

.oxfmtrc.json

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"$schema": "./node_modules/oxfmt/configuration_schema.json",
3+
"useTabs": false,
4+
"tabWidth": 2,
5+
"printWidth": 120,
6+
"singleQuote": false,
7+
"jsxSingleQuote": false,
8+
"quoteProps": "as-needed",
9+
"trailingComma": "es5",
10+
"semi": true,
11+
"arrowParens": "always",
12+
"bracketSameLine": false,
13+
"bracketSpacing": true,
14+
"endOfLine": "lf",
15+
"insertFinalNewline": true,
16+
"sortTailwindcss": {
17+
"stylesheet": "src/app/globals.css",
18+
"functions": ["clsx", "cva", "cn"]
19+
},
20+
"ignorePatterns": [".claude", "**/.next", "**/.velite"]
21+
}

.oxlintrc.json

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
{
2+
"$schema": "./node_modules/oxlint/configuration_schema.json",
3+
"plugins": ["nextjs", "typescript", "react", "jsx-a11y", "import", "unicorn", "oxc", "promise", "node"],
4+
"categories": {
5+
"correctness": "warn",
6+
"suspicious": "warn",
7+
"perf": "warn"
8+
},
9+
"env": {
10+
"browser": true,
11+
"node": true,
12+
"builtin": true
13+
},
14+
"options": {
15+
"reportUnusedDisableDirectives": "warn"
16+
},
17+
"ignorePatterns": [".claude", ".next/**", ".velite/**", "out/**", "build/**", "dist/**"],
18+
"rules": {
19+
// TypeScript
20+
"typescript/consistent-type-definitions": ["error", "type"],
21+
"typescript/no-explicit-any": "error",
22+
"typescript/no-inferrable-types": "error",
23+
"typescript/no-duplicate-enum-values": "error",
24+
"typescript/no-import-type-side-effects": "error",
25+
"typescript/prefer-includes": "error",
26+
"typescript/only-throw-error": "error",
27+
"typescript/return-await": "error",
28+
"typescript/no-deprecated": "warn",
29+
30+
// Correctness
31+
"no-unused-vars": "warn",
32+
"react-hooks/exhaustive-deps": "warn",
33+
"array-callback-return": "error",
34+
"no-self-compare": "error",
35+
"no-constructor-return": "error",
36+
"no-promise-executor-return": "error",
37+
"eqeqeq": "error",
38+
"react/rules-of-hooks": "error",
39+
40+
// Suspicious
41+
"no-alert": "error",
42+
"no-template-curly-in-string": "error",
43+
"no-shadow-restricted-names": "error",
44+
"no-unused-expressions": "error",
45+
"no-empty": "error",
46+
"no-proto": "error",
47+
"no-return-assign": "error",
48+
"no-multi-assign": "error",
49+
"unicorn/no-document-cookie": "error",
50+
51+
// Unicorn
52+
"unicorn/prefer-set-has": "error",
53+
"unicorn/no-new-array": "warn",
54+
"unicorn/no-useless-spread": "warn",
55+
"unicorn/no-single-promise-in-promise-methods": "warn",
56+
"unicorn/prefer-node-protocol": "error",
57+
"unicorn/no-typeof-undefined": "error",
58+
"unicorn/no-useless-promise-resolve-reject": "error",
59+
"unicorn/prefer-array-some": "error",
60+
"unicorn/no-object-as-default-parameter": "warn",
61+
62+
// Noisy rules - disable
63+
"no-shadow": "off",
64+
"no-await-in-loop": "off",
65+
"unicorn/no-array-sort": "off",
66+
"unicorn/prefer-add-event-listener": "off",
67+
"unicorn/require-post-message-target-origin": "off",
68+
"import/no-unassigned-import": "off",
69+
"import/no-named-as-default": "off",
70+
"import/no-named-as-default-member": "off",
71+
"typescript/no-unsafe-type-assertion": "off",
72+
73+
// File size
74+
"max-lines": ["warn", { "max": 300, "skipBlankLines": true, "skipComments": true }],
75+
76+
// Performance
77+
"oxc/no-barrel-file": "error",
78+
"import/no-cycle": "off",
79+
80+
// Next.js
81+
"@next/next/no-html-link-for-pages": "error",
82+
"@next/next/no-sync-scripts": "error",
83+
"@next/next/inline-script-id": "error",
84+
"@next/next/no-assign-module-variable": "error",
85+
"@next/next/no-document-import-in-page": "error",
86+
"@next/next/no-duplicate-head": "error",
87+
"@next/next/no-head-import-in-document": "error",
88+
"@next/next/no-script-component-in-head": "error",
89+
"@next/next/no-img-element": "off",
90+
91+
// React
92+
"react/jsx-no-target-blank": "off",
93+
"react/no-unknown-property": "off",
94+
"react/no-unsafe": "off",
95+
"react/react-in-jsx-scope": "off",
96+
97+
// jsx-a11y
98+
"jsx-a11y/alt-text": "warn",
99+
"jsx-a11y/aria-props": "warn",
100+
"jsx-a11y/aria-proptypes": "warn",
101+
"jsx-a11y/aria-unsupported-elements": "warn",
102+
"jsx-a11y/role-has-required-aria-props": "warn",
103+
"jsx-a11y/role-supports-aria-props": "warn"
104+
}
105+
}

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
# koding.dev
22

33
Hello, world!
4-

biome.jsonc

Lines changed: 0 additions & 164 deletions
This file was deleted.

content/clients/lilypad/meta.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
"slug": "lilypad",
33
"name": "Lilypad.gg",
44
"description": "Development of the Lilypad.gg website, billing panel & dashboard. Built with NextJS, Prisma, NextAuth, and TailwindCSS.",
5+
"role": "Web Developer",
56
"href": "https://lilypad.gg",
7+
"wordmark": "./wordmark.svg",
68
"avatar": "./avatar.png",
79
"banner": "./banner.png",
810
"start": "Jul 2024",
Lines changed: 11 additions & 0 deletions
Loading

content/clients/netherite/meta.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"slug": "netherite",
33
"name": "Netherite",
44
"description": "Highly-scalable, high-throughput Minecraft development, built with Kubernetes & a microservice architecture.",
5+
"role": "Full Stack Developer",
56
"href": "https://netherite.gg",
67
"avatar": "./avatar.png",
78
"banner": "./banner.png",
-528 KB
Loading

0 commit comments

Comments
 (0)