diff --git a/.github/ISSUE_TEMPLATE/2-feature-request.yml b/.github/ISSUE_TEMPLATE/2-feature-request.yml index 6f9aec820..7b2839953 100644 --- a/.github/ISSUE_TEMPLATE/2-feature-request.yml +++ b/.github/ISSUE_TEMPLATE/2-feature-request.yml @@ -3,7 +3,7 @@ name: ✨ Feature Request description: Suggest an feature or idea that you would like to see in Reactive Resume title: "[Feature]
+
## What is Reactive Resume?
@@ -28,6 +28,10 @@ description: "Welcome to the documentation for Reactive Resume, a free and open-
## Key Features
+
+
+
+
+
+
-
+
+
+
+
+
+
+
-
+
-
+
-
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+ You should see a link that says
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
## Where to find it
In the resume builder, open the **right sidebar** and select **Custom CSS** (the `CSS` section).
@@ -54,19 +58,19 @@ Example:
### Formatting tip (to avoid scoping edge-cases)
-Keep each rule’s selector on **one line**, for example:
+Keep each rule's selector on **one line**, for example:
```css
.page-section-experience .section-item-title { font-weight: 700; }
```
-Avoid splitting a selector across multiple lines unless you’ve confirmed it behaves as expected.
+Avoid splitting a selector across multiple lines unless you've confirmed it behaves as expected.
## Finding the right selectors
### Use autocomplete in the editor
-In the Custom CSS editor, type a `.` (dot). You’ll get suggestions for commonly-used class selectors, including:
+In the Custom CSS editor, type a `.` (dot). You'll get suggestions for commonly-used class selectors, including:
- **Page-level**: `.page`, `.page-content`, `.page-header`, `.page-basics`, `.page-main`, `.page-sidebar`, `.page-picture`
- **Section-level**: `.page-section`, `.section-content`
@@ -77,7 +81,7 @@ In the Custom CSS editor, type a `.` (dot). You’ll get suggestions for commonl
### Stable “starter selectors”
-If you’re not sure where to start, these are usually safe:
+If you're not sure where to start, these are usually safe:
- `.page` (the resume page container)
- `.page-section` (each resume section)
@@ -196,9 +200,9 @@ Example (tighten spacing without changing your layout settings):
```css
.section-item-link a {
display: inline-block;
- padding: 2pt 6pt;
+ padding: 3pt 9pt;
border-radius: 999pt;
- border: 1pt solid color-mix(in srgb, var(--page-primary-color) 45%, transparent);
+ border: 2pt solid color-mix(in srgb, var(--page-primary-color) 45%, transparent);
text-decoration: none;
}
```
@@ -241,40 +245,25 @@ Example (tighten spacing without changing your layout settings):
}
```
-### 9) Highlight a specific section (example: Experience)
+### 9) Highlight a specific section (example: Profiles)
```css
-.page-section-experience {
- background: color-mix(in srgb, var(--page-primary-color) 6%, transparent);
+.page-section-profiles {
+ background: color-mix(in srgb, var(--page-primary-color) 10%, transparent);
border-radius: 8pt;
- padding: 8pt;
-}
-```
-
-### 10) Print-only adjustments (manually scoped)
-
-```css
-@media print {
- .resume-preview-container .page {
- -webkit-print-color-adjust: exact;
- print-color-adjust: exact;
- }
-
- .resume-preview-container a {
- text-decoration: none;
- }
+ padding: 8pt 12pt;
}
```
## Troubleshooting
-### My CSS doesn’t do anything
+### My CSS doesn't do anything
- Make sure **Enable** is turned on.
- Prefer targeting `.page`, `.page-section`, and `.section-item` instead of `body`.
- Use your browser devtools to **inspect** the preview and confirm the element/class names.
-### My `@media` rules affect the whole app / don’t apply
+### My `@media` rules affect the whole app / don't apply
-At-rules aren’t auto-scoped. Prefix selectors inside them with `.resume-preview-container` as shown above.
+At-rules aren't auto-scoped. Prefix selectors inside them with `.resume-preview-container` as shown above.
diff --git a/docs/guides/using-private-notes.mdx b/docs/guides/using-private-notes.mdx
index 915e4d55d..f2074c6e7 100644
--- a/docs/guides/using-private-notes.mdx
+++ b/docs/guides/using-private-notes.mdx
@@ -17,6 +17,10 @@ Think of it as a built-in notebook attached to each resume where you can jot dow
In the resume builder, open the **right sidebar** and select **Notes** from the available sections.
+
+
+
+
## Use cases
Private Notes are designed to help you stay organized during your job search. Here are some practical ways to use them:
diff --git a/docs/images/banner.jpg b/docs/images/banner.jpg
deleted file mode 100644
index 7dfb6d8ec..000000000
Binary files a/docs/images/banner.jpg and /dev/null differ
diff --git a/docs/images/getting-started/banner.webp b/docs/images/getting-started/banner.webp
new file mode 100644
index 000000000..3eb7506f7
Binary files /dev/null and b/docs/images/getting-started/banner.webp differ
diff --git a/docs/images/getting-started/infographic.webp b/docs/images/getting-started/infographic.webp
new file mode 100644
index 000000000..40cf10009
Binary files /dev/null and b/docs/images/getting-started/infographic.webp differ
diff --git a/docs/images/guides/choosing-a-template/screenshot-1.webp b/docs/images/guides/choosing-a-template/screenshot-1.webp
new file mode 100644
index 000000000..061fabebe
Binary files /dev/null and b/docs/images/guides/choosing-a-template/screenshot-1.webp differ
diff --git a/docs/images/guides/choosing-a-template/screenshot-2.webp b/docs/images/guides/choosing-a-template/screenshot-2.webp
new file mode 100644
index 000000000..a8cddedde
Binary files /dev/null and b/docs/images/guides/choosing-a-template/screenshot-2.webp differ
diff --git a/docs/images/guides/choosing-a-template/screenshot-3.webp b/docs/images/guides/choosing-a-template/screenshot-3.webp
new file mode 100644
index 000000000..289ebf08a
Binary files /dev/null and b/docs/images/guides/choosing-a-template/screenshot-3.webp differ
diff --git a/docs/images/guides/choosing-a-template/screenshot-4.webp b/docs/images/guides/choosing-a-template/screenshot-4.webp
new file mode 100644
index 000000000..0c50b428c
Binary files /dev/null and b/docs/images/guides/choosing-a-template/screenshot-4.webp differ
diff --git a/docs/images/guides/moving-items-between-sections/screenshot-1.webp b/docs/images/guides/moving-items-between-sections/screenshot-1.webp
new file mode 100644
index 000000000..a244631aa
Binary files /dev/null and b/docs/images/guides/moving-items-between-sections/screenshot-1.webp differ
diff --git a/docs/images/guides/moving-items-between-sections/screenshot-2.webp b/docs/images/guides/moving-items-between-sections/screenshot-2.webp
new file mode 100644
index 000000000..89a7f15d8
Binary files /dev/null and b/docs/images/guides/moving-items-between-sections/screenshot-2.webp differ
diff --git a/docs/images/guides/moving-items-between-sections/screenshot-3.webp b/docs/images/guides/moving-items-between-sections/screenshot-3.webp
new file mode 100644
index 000000000..91551d729
Binary files /dev/null and b/docs/images/guides/moving-items-between-sections/screenshot-3.webp differ
diff --git a/docs/images/guides/moving-items-between-sections/screenshot-4.webp b/docs/images/guides/moving-items-between-sections/screenshot-4.webp
new file mode 100644
index 000000000..8b33fb9fd
Binary files /dev/null and b/docs/images/guides/moving-items-between-sections/screenshot-4.webp differ
diff --git a/docs/images/guides/using-custom-css/screenshot-1.webp b/docs/images/guides/using-custom-css/screenshot-1.webp
new file mode 100644
index 000000000..9034c2939
Binary files /dev/null and b/docs/images/guides/using-custom-css/screenshot-1.webp differ
diff --git a/docs/images/guides/using-private-notes/screenshot-1.webp b/docs/images/guides/using-private-notes/screenshot-1.webp
new file mode 100644
index 000000000..08b358fbf
Binary files /dev/null and b/docs/images/guides/using-private-notes/screenshot-1.webp differ
diff --git a/docs/images/templates/azurill.jpg b/docs/images/templates/azurill.jpg
deleted file mode 100644
index 953c4ef96..000000000
Binary files a/docs/images/templates/azurill.jpg and /dev/null differ
diff --git a/docs/images/templates/azurill.webp b/docs/images/templates/azurill.webp
new file mode 100644
index 000000000..d6f430075
Binary files /dev/null and b/docs/images/templates/azurill.webp differ
diff --git a/docs/images/templates/bronzor.jpg b/docs/images/templates/bronzor.jpg
deleted file mode 100644
index f10e75bef..000000000
Binary files a/docs/images/templates/bronzor.jpg and /dev/null differ
diff --git a/docs/images/templates/bronzor.webp b/docs/images/templates/bronzor.webp
new file mode 100644
index 000000000..f1b0e0117
Binary files /dev/null and b/docs/images/templates/bronzor.webp differ
diff --git a/docs/images/templates/chikorita.jpg b/docs/images/templates/chikorita.jpg
deleted file mode 100644
index 3c5854805..000000000
Binary files a/docs/images/templates/chikorita.jpg and /dev/null differ
diff --git a/docs/images/templates/chikorita.webp b/docs/images/templates/chikorita.webp
new file mode 100644
index 000000000..5bbd5d37b
Binary files /dev/null and b/docs/images/templates/chikorita.webp differ
diff --git a/docs/images/templates/ditgar.webp b/docs/images/templates/ditgar.webp
new file mode 100644
index 000000000..3ebe327ca
Binary files /dev/null and b/docs/images/templates/ditgar.webp differ
diff --git a/docs/images/templates/ditto.jpg b/docs/images/templates/ditto.jpg
deleted file mode 100644
index aa22a184b..000000000
Binary files a/docs/images/templates/ditto.jpg and /dev/null differ
diff --git a/docs/images/templates/ditto.webp b/docs/images/templates/ditto.webp
new file mode 100644
index 000000000..4b933b7d0
Binary files /dev/null and b/docs/images/templates/ditto.webp differ
diff --git a/docs/images/templates/gengar.jpg b/docs/images/templates/gengar.jpg
deleted file mode 100644
index be297789a..000000000
Binary files a/docs/images/templates/gengar.jpg and /dev/null differ
diff --git a/docs/images/templates/gengar.webp b/docs/images/templates/gengar.webp
new file mode 100644
index 000000000..6a183d0d3
Binary files /dev/null and b/docs/images/templates/gengar.webp differ
diff --git a/docs/images/templates/glalie.jpg b/docs/images/templates/glalie.jpg
deleted file mode 100644
index e594e9279..000000000
Binary files a/docs/images/templates/glalie.jpg and /dev/null differ
diff --git a/docs/images/templates/glalie.webp b/docs/images/templates/glalie.webp
new file mode 100644
index 000000000..e3ec1062a
Binary files /dev/null and b/docs/images/templates/glalie.webp differ
diff --git a/docs/images/templates/kakuna.jpg b/docs/images/templates/kakuna.jpg
deleted file mode 100644
index ec426256f..000000000
Binary files a/docs/images/templates/kakuna.jpg and /dev/null differ
diff --git a/docs/images/templates/kakuna.webp b/docs/images/templates/kakuna.webp
new file mode 100644
index 000000000..96c49d10b
Binary files /dev/null and b/docs/images/templates/kakuna.webp differ
diff --git a/docs/images/templates/lapras.jpg b/docs/images/templates/lapras.jpg
deleted file mode 100644
index da9fbc8e1..000000000
Binary files a/docs/images/templates/lapras.jpg and /dev/null differ
diff --git a/docs/images/templates/lapras.webp b/docs/images/templates/lapras.webp
new file mode 100644
index 000000000..7711197ff
Binary files /dev/null and b/docs/images/templates/lapras.webp differ
diff --git a/docs/images/templates/leafish.jpg b/docs/images/templates/leafish.jpg
deleted file mode 100644
index 49ae7f407..000000000
Binary files a/docs/images/templates/leafish.jpg and /dev/null differ
diff --git a/docs/images/templates/leafish.webp b/docs/images/templates/leafish.webp
new file mode 100644
index 000000000..f35b96af5
Binary files /dev/null and b/docs/images/templates/leafish.webp differ
diff --git a/docs/images/templates/onyx.jpg b/docs/images/templates/onyx.jpg
deleted file mode 100644
index 01c59ae72..000000000
Binary files a/docs/images/templates/onyx.jpg and /dev/null differ
diff --git a/docs/images/templates/onyx.webp b/docs/images/templates/onyx.webp
new file mode 100644
index 000000000..9f10946d0
Binary files /dev/null and b/docs/images/templates/onyx.webp differ
diff --git a/docs/images/templates/pikachu.jpg b/docs/images/templates/pikachu.jpg
deleted file mode 100644
index 94251e5e9..000000000
Binary files a/docs/images/templates/pikachu.jpg and /dev/null differ
diff --git a/docs/images/templates/pikachu.webp b/docs/images/templates/pikachu.webp
new file mode 100644
index 000000000..31bdf4e9a
Binary files /dev/null and b/docs/images/templates/pikachu.webp differ
diff --git a/docs/images/templates/rhyhorn.jpg b/docs/images/templates/rhyhorn.jpg
deleted file mode 100644
index bcad76cfa..000000000
Binary files a/docs/images/templates/rhyhorn.jpg and /dev/null differ
diff --git a/docs/images/templates/rhyhorn.webp b/docs/images/templates/rhyhorn.webp
new file mode 100644
index 000000000..7d444fde8
Binary files /dev/null and b/docs/images/templates/rhyhorn.webp differ
diff --git a/docs/self-hosting/docker.mdx b/docs/self-hosting/docker.mdx
index f5fe2ed16..b4dad54f3 100644
--- a/docs/self-hosting/docker.mdx
+++ b/docs/self-hosting/docker.mdx
@@ -172,8 +172,6 @@ services:
restart: unless-stopped
ports:
- "4000:3000"
- extra_hosts:
- - "host.docker.internal:host-gateway"
environment:
- HEALTH=true
- CONCURRENT=20
@@ -181,7 +179,7 @@ services:
# Optional: Set a token for authentication
# - TOKEN=your-secret-token
healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:3000/"]
+ test: ["CMD", "curl", "-f", "http://localhost:3000/pressure?token=your-secret-token"]
interval: 10s
timeout: 5s
retries: 10
@@ -203,7 +201,7 @@ services:
printer:
condition: service_healthy
healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:3000/api/health", "||", "exit", "1"]
+ test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"]
interval: 30s
timeout: 10s
retries: 3
@@ -413,7 +411,7 @@ The Docker Compose configuration includes a health check that periodically calls
```yaml
healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:3000/api/health", "||", "exit", "1"]
+ test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"]
interval: 30s
timeout: 10s
retries: 3
diff --git a/docs/self-hosting/examples.mdx b/docs/self-hosting/examples.mdx
index 920c1163b..54071b99e 100644
--- a/docs/self-hosting/examples.mdx
+++ b/docs/self-hosting/examples.mdx
@@ -82,12 +82,11 @@ services:
- TIMEOUT=120000
- CONCURRENT=10
- HEALTH=true
+ - TOKEN=your-secret-token
networks:
- reactive_resume_network
- extra_hosts:
- - "host.docker.internal:host-gateway"
healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:3000/"]
+ test: ["CMD", "curl", "-f", "http://localhost:3000/pressure?token=your-secret-token"]
interval: 30s
timeout: 10s
retries: 3
@@ -118,7 +117,7 @@ services:
- "traefik.http.routers.reactive-resume.tls.certresolver=letsencrypt"
- "traefik.http.services.reactive-resume.loadbalancer.server.port=3000"
healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:3000/api/health", "||", "exit", "1"]
+ test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"]
interval: 30s
timeout: 10s
retries: 3
@@ -190,12 +189,11 @@ services:
- TIMEOUT=120000
- CONCURRENT=10
- HEALTH=true
+ - TOKEN=your-secret-token
networks:
- reactive_resume_network
- extra_hosts:
- - "host.docker.internal:host-gateway"
healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:3000/"]
+ test: ["CMD", "curl", "-f", "http://localhost:3000/pressure?token=your-secret-token"]
interval: 30s
timeout: 10s
retries: 3
@@ -220,7 +218,7 @@ services:
printer:
condition: service_healthy
healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:3000/api/health", "||", "exit", "1"]
+ test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"]
interval: 30s
timeout: 10s
retries: 3
@@ -358,7 +356,7 @@ services:
# Optional: Set a token for authentication
# - TOKEN=your-secret-token
healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:3000/"]
+ test: ["CMD", "curl", "-f", "http://localhost:3000/pressure?token=your-secret-token"]
interval: 30s
timeout: 10s
retries: 3
@@ -458,7 +456,7 @@ services:
- S3_ENDPOINT=$S3_ENDPOINT
- S3_BUCKET=$S3_BUCKET
healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:3000/api/health", "||", "exit", "1"]
+ test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"]
interval: 30s
timeout: 10s
retries: 3
diff --git a/package.json b/package.json
index 60f3ba9f7..c61189fee 100644
--- a/package.json
+++ b/package.json
@@ -56,10 +56,10 @@
"@sindresorhus/slugify": "^3.0.0",
"@t3-oss/env-core": "^0.13.10",
"@tanstack/react-query": "5.90.19",
- "@tanstack/react-router": "^1.154.12",
- "@tanstack/react-router-ssr-query": "^1.154.12",
+ "@tanstack/react-router": "^1.154.13",
+ "@tanstack/react-router-ssr-query": "^1.154.13",
"@tanstack/react-start": "^1.154.12",
- "@tanstack/zod-adapter": "^1.154.12",
+ "@tanstack/zod-adapter": "^1.154.13",
"@tiptap/extension-highlight": "^3.16.0",
"@tiptap/extension-table": "^3.16.0",
"@tiptap/extension-text-align": "^3.16.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d8ba0e069..2d5a33a91 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -87,17 +87,17 @@ importers:
specifier: 5.90.19
version: 5.90.19(react@19.2.3)
'@tanstack/react-router':
- specifier: ^1.154.12
- version: 1.154.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ specifier: ^1.154.13
+ version: 1.154.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tanstack/react-router-ssr-query':
- specifier: ^1.154.12
- version: 1.154.12(@tanstack/query-core@5.90.19)(@tanstack/react-query@5.90.19(react@19.2.3))(@tanstack/react-router@1.154.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@tanstack/router-core@1.154.12)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ specifier: ^1.154.13
+ version: 1.154.13(@tanstack/query-core@5.90.19)(@tanstack/react-query@5.90.19(react@19.2.3))(@tanstack/react-router@1.154.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@tanstack/router-core@1.154.13)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tanstack/react-start':
specifier: ^1.154.12
version: 1.154.12(crossws@0.4.3(srvx@0.10.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rolldown-vite@7.3.1(@types/node@25.0.10)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0))
'@tanstack/zod-adapter':
- specifier: ^1.154.12
- version: 1.154.12(@tanstack/react-router@1.154.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(zod@4.3.6)
+ specifier: ^1.154.13
+ version: 1.154.13(@tanstack/react-router@1.154.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(zod@4.3.6)
'@tiptap/extension-highlight':
specifier: ^3.16.0
version: 3.16.0(@tiptap/core@3.16.0(@tiptap/pm@3.16.0))
@@ -3897,8 +3897,8 @@ packages:
peerDependencies:
react: ^18 || ^19
- '@tanstack/react-router-ssr-query@1.154.12':
- resolution: {integrity: sha512-STzIAfnNcSf1SNi5r27AwynhIIvVvsvzdOOomP4tFn2QLkEwXGZkmbppS98OB3rXKsyVnOMlX37rhA+a1jQaQA==}
+ '@tanstack/react-router-ssr-query@1.154.13':
+ resolution: {integrity: sha512-Sp5uxYEhhdvQZpcf+NV30/ByL2zLypizefzNeXxmPsvvV8NE8NT/tiOkk+kS+cwsmEoiKf0SqwvG9H+NcwQFfw==}
engines: {node: '>=12'}
peerDependencies:
'@tanstack/query-core': '>=5.90.0'
@@ -3914,6 +3914,13 @@ packages:
react: '>=18.0.0 || >=19.0.0'
react-dom: '>=18.0.0 || >=19.0.0'
+ '@tanstack/react-router@1.154.13':
+ resolution: {integrity: sha512-/Vdqt7w4dmW2ARf85Qav6TBytn8iJiqle4BGJKDYsVuPtMuQKJnxNpKPaCN+H0DiV4KHoFoQrcPVyr9hqy/ltg==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ react: '>=18.0.0 || >=19.0.0'
+ react-dom: '>=18.0.0 || >=19.0.0'
+
'@tanstack/react-start-client@1.154.12':
resolution: {integrity: sha512-BQuWw8B0kwsrZCKTyKCtWAnnoHvFMXMQvl/y8ZT0tue2ArxsHwxm0tUe794P/EdIO4x1iHjl1R/OW9YgQChrsw==}
engines: {node: '>=22.12.0'}
@@ -3946,6 +3953,10 @@ packages:
resolution: {integrity: sha512-p+TKxkXcLGtCwwW237D8pV4f6ea2K1pzc/e65ljugoTawsA/YR2/gmTSBDTUsSYy6Tmu4mMJmZ0Q4zNkcfCS3g==}
engines: {node: '>=12'}
+ '@tanstack/router-core@1.154.13':
+ resolution: {integrity: sha512-ZtSM/qcytCDI6Pt5eZLwYhDbVheXI54HN29J+PpC6Lp6xUq/Q2ZOMwb/wJF942EDeqTjxRtl7W9Bpvz7DBwq8g==}
+ engines: {node: '>=12'}
+
'@tanstack/router-generator@1.154.12':
resolution: {integrity: sha512-cjr3KS3Esnyh05CWl78KgK2Z9kTjeFasZXcSUrh//TzzU72eXQ+dzKppD3kMsjuyRfUxAfdufsR9GDNMMuLk9w==}
engines: {node: '>=12'}
@@ -3971,8 +3982,8 @@ packages:
webpack:
optional: true
- '@tanstack/router-ssr-query-core@1.154.12':
- resolution: {integrity: sha512-p3mUZRGlXKRaHxglDCGvuJd55jIGr7qdrHvwiKQkPP1fksfafMsuS5vhjzu6anV2TtmfUEKRJbbQs/s8PJfuxw==}
+ '@tanstack/router-ssr-query-core@1.154.13':
+ resolution: {integrity: sha512-QfyrUJA7klsM+erqpJTtFAMI0k6UrvEzh4wNPq8dIVM8rP43wbWBZhX3oC9O13lY9KC+wm9k4R98VwIv2TBClQ==}
engines: {node: '>=12'}
peerDependencies:
'@tanstack/query-core': '>=5.90.0'
@@ -4011,8 +4022,8 @@ packages:
resolution: {integrity: sha512-cHHDnewHozgjpI+MIVp9tcib6lYEQK5MyUr0ChHpHFGBl8Xei55rohFK0I0ve/GKoHeioaK42Smd8OixPp6CTg==}
engines: {node: '>=12'}
- '@tanstack/zod-adapter@1.154.12':
- resolution: {integrity: sha512-QdlI1wJQTNsy1mKdhHkO+Z9J3OfoJSJN4NGeuFsNC2M129gX5bmMxfEGaK475GN7/9OgeF5cizJ4IZTc1ckZsQ==}
+ '@tanstack/zod-adapter@1.154.13':
+ resolution: {integrity: sha512-FlDY8+qEf4Cuyq7YuSi3uVYDYFmf3ZNsublRaNQq73S2ZIn4Lg/rxtDZWIEopHPTBA0x2/lIMn1TfVDrK3LZMA==}
engines: {node: '>=12'}
peerDependencies:
'@tanstack/react-router': '>=1.43.2'
@@ -12560,12 +12571,12 @@ snapshots:
'@tanstack/query-core': 5.90.19
react: 19.2.3
- '@tanstack/react-router-ssr-query@1.154.12(@tanstack/query-core@5.90.19)(@tanstack/react-query@5.90.19(react@19.2.3))(@tanstack/react-router@1.154.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@tanstack/router-core@1.154.12)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@tanstack/react-router-ssr-query@1.154.13(@tanstack/query-core@5.90.19)(@tanstack/react-query@5.90.19(react@19.2.3))(@tanstack/react-router@1.154.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@tanstack/router-core@1.154.13)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@tanstack/query-core': 5.90.19
'@tanstack/react-query': 5.90.19(react@19.2.3)
- '@tanstack/react-router': 1.154.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@tanstack/router-ssr-query-core': 1.154.12(@tanstack/query-core@5.90.19)(@tanstack/router-core@1.154.12)
+ '@tanstack/react-router': 1.154.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@tanstack/router-ssr-query-core': 1.154.13(@tanstack/query-core@5.90.19)(@tanstack/router-core@1.154.13)
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
transitivePeerDependencies:
@@ -12582,6 +12593,17 @@ snapshots:
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
+ '@tanstack/react-router@1.154.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ dependencies:
+ '@tanstack/history': 1.154.7
+ '@tanstack/react-store': 0.8.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@tanstack/router-core': 1.154.13
+ isbot: 5.1.33
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ tiny-invariant: 1.3.3
+ tiny-warning: 1.0.3
+
'@tanstack/react-start-client@1.154.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@tanstack/react-router': 1.154.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
@@ -12641,6 +12663,16 @@ snapshots:
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
+ '@tanstack/router-core@1.154.13':
+ dependencies:
+ '@tanstack/history': 1.154.7
+ '@tanstack/store': 0.8.0
+ cookie-es: 2.0.0
+ seroval: 1.4.2
+ seroval-plugins: 1.4.2(seroval@1.4.2)
+ tiny-invariant: 1.3.3
+ tiny-warning: 1.0.3
+
'@tanstack/router-generator@1.154.12':
dependencies:
'@tanstack/router-core': 1.154.12
@@ -12676,10 +12708,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@tanstack/router-ssr-query-core@1.154.12(@tanstack/query-core@5.90.19)(@tanstack/router-core@1.154.12)':
+ '@tanstack/router-ssr-query-core@1.154.13(@tanstack/query-core@5.90.19)(@tanstack/router-core@1.154.13)':
dependencies:
'@tanstack/query-core': 5.90.19
- '@tanstack/router-core': 1.154.12
+ '@tanstack/router-core': 1.154.13
'@tanstack/router-utils@1.154.7':
dependencies:
@@ -12755,9 +12787,9 @@ snapshots:
'@tanstack/virtual-file-routes@1.154.7': {}
- '@tanstack/zod-adapter@1.154.12(@tanstack/react-router@1.154.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(zod@4.3.6)':
+ '@tanstack/zod-adapter@1.154.13(@tanstack/react-router@1.154.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(zod@4.3.6)':
dependencies:
- '@tanstack/react-router': 1.154.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@tanstack/react-router': 1.154.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
zod: 4.3.6
'@tediousjs/connection-string@0.5.0': {}
diff --git a/public/photos/andrew-power.jpg b/public/photos/andrew-power.jpg
deleted file mode 100644
index 4cedc5bb9..000000000
Binary files a/public/photos/andrew-power.jpg and /dev/null differ
diff --git a/public/photos/sample-picture.jpg b/public/photos/sample-picture.jpg
new file mode 100644
index 000000000..9f9747a4a
Binary files /dev/null and b/public/photos/sample-picture.jpg differ
diff --git a/scripts/database/reset.ts b/scripts/database/reset.ts
index 581c09082..f4ca6e0e5 100644
--- a/scripts/database/reset.ts
+++ b/scripts/database/reset.ts
@@ -9,27 +9,15 @@ export async function resetDatabase() {
const pool = new Pool({ connectionString: env.DATABASE_URL });
const db = drizzle({ client: pool });
- // Extract the username from a PostgreSQL connection string like: postgresql://postgres:password@localhost:5432/db
- const username = (() => {
- try {
- const match = env.DATABASE_URL.match(/^postgres(?:ql)?:\/\/([^:]+):[^@]+@/);
- return match ? match[1] : undefined;
- } catch {
- return undefined;
- }
- })();
-
- console.log("🔑 Username:", username);
-
try {
await db.transaction(async (tx) => {
await tx.execute(sql`DROP SCHEMA drizzle CASCADE`);
await tx.execute(sql`CREATE SCHEMA drizzle`);
- await tx.execute(sql.raw(`GRANT ALL ON SCHEMA drizzle TO ${username}`));
+ await tx.execute(sql`GRANT ALL ON SCHEMA drizzle TO postgres`);
await tx.execute(sql`DROP SCHEMA public CASCADE`);
await tx.execute(sql`CREATE SCHEMA public`);
- await tx.execute(sql.raw(`GRANT ALL ON SCHEMA public TO ${username}`));
+ await tx.execute(sql`GRANT ALL ON SCHEMA public TO postgres`);
});
console.log("✅ Database reset completed");
diff --git a/src/components/resume/hooks/use-webfonts.tsx b/src/components/resume/hooks/use-webfonts.tsx
index 10a06e749..aa84e6bb8 100644
--- a/src/components/resume/hooks/use-webfonts.tsx
+++ b/src/components/resume/hooks/use-webfonts.tsx
@@ -1,10 +1,18 @@
import { useEffect } from "react";
+import { useIsMounted } from "usehooks-ts";
import type z from "zod";
import webfontlist from "@/components/typography/webfontlist.json";
import type { typographySchema } from "@/schema/resume/data";
export function useWebfonts(typography: z.infer