docs: migrate wiki content to wiki/ folder#44
Conversation
📝 WalkthroughWalkthroughThis PR adds comprehensive wiki documentation covering the portfolio site's architecture, deployment process, project structure, dynamic project fetching, easter egg feature, setup instructions, resume page, and SEO/analytics configuration. Nine markdown documents totaling 438 lines provide a complete reference guide for developers and users. ChangesWiki Documentation
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Review rate limit: 1/10 review remaining, refill in 53 minutes and 18 seconds. Comment |
There was a problem hiding this comment.
Actionable comments posted: 9
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@wiki/architecture.md`:
- Line 9: The two unlabeled fenced code blocks containing the "app/ ..." snippet
and the "Build Time:" snippet should be labeled to satisfy markdownlint MD040;
update each opening fence from ``` to ```text (or ```plaintext) so the blocks
that include "app/" and "Build Time:" are changed to use ```text.
- Around line 16-21: The directory tree in the architecture doc is outdated:
update the entries that list lib/ and components/ under app/ to reflect the
actual repo layout (use src/lib and src/components) so paths match the code
(e.g., src/lib/github.ts, src/lib/data.ts, and components files like
analytics.tsx and json-ld.tsx); ensure the README/wiki references the current
file locations and examples so contributors are not misdirected.
In `@wiki/deployment.md`:
- Line 5: Replace the outdated sentence "The site deploys automatically via
`.github/workflows/deploy.yml` on every push to `master`." with the corrected
text "The site deploys automatically via `.github/workflows/main-release.yml` on
every push to `main`." to reflect the actual workflow filename and branch name.
In `@wiki/dynamic_projects.md`:
- Around line 5-6: The doc incorrectly states we fetch GitHub pinned repos via
pinnedItems; update the wording to say the build queries repositories(first:
100, orderBy: {field: UPDATED_AT, direction: DESC}) so projects are the
most-recently-updated repos, not pinned items, and adjust the pin/unpin guidance
to explain that pinning on GitHub does not affect this build query; mention the
exact GraphQL selector used (repositories(first: 100, orderBy: {field:
UPDATED_AT, direction: DESC})) and replace any references to pinnedItems with
the correct behavior and guidance.
In `@wiki/easter_egg.md`:
- Around line 11-13: The two unlabeled fenced code blocks containing the key
sequence ("↑ ↑ ↓ ↓ ← → ← → B A") should be labeled with a language identifier
(e.g., add ```text after the opening backticks) to satisfy the MD040 lint rule;
update both occurrences (the block shown and the other block referenced at lines
49-51) so each fenced code block uses a language tag like "text".
- Line 58: The doc references a non-existent function name
handleTerminalCommand(); update the documentation to match the actual dispatcher
or change the implementation to match the doc. Either rename the dispatcher
function runCmd(cmd: string) to handleTerminalCommand (and update all call
sites), or edit the documentation line to reference runCmd(cmd: string) (and
optionally note its parameter signature). Ensure the function name in the docs
and the actual symbol runCmd(cmd: string) are consistent.
In `@wiki/project_structure.md`:
- Around line 13-18: The documentation tree lists files under lib/ and
components/ (e.g., lib/github.ts and components/portfolio.tsx) but the codebase
uses src/lib/github.ts and src/components/Portfolio.tsx; update the
project_structure.md entries to reflect the actual paths (replace lib/github.ts
→ src/lib/github.ts and portfolio.tsx → src/components/Portfolio.tsx) and scan
the rest of the file for other path mismatches (e.g., lib/data.ts →
src/lib/data.ts, components/json-ld.tsx → src/components/json-ld.tsx) so the doc
consistently matches the repository layout.
- Around line 3-30: The fenced code block showing the repository tree (starting
with the line "jonathanperis.github.io/") in wiki/project_structure.md is
unlabeled, triggering MD040; fix it by adding a language identifier (e.g.,
`text`) after the opening triple backticks so the block becomes ```text — update
the existing tree block rather than adding a new block or changing its content.
In `@wiki/seo_and_analytics.md`:
- Around line 39-43: The fenced code block containing the robots.txt contents is
unlabeled and triggers MD040; update the opening fence from ``` to ```txt so the
block is labeled (e.g., change the block that currently starts with ``` and
contains "User-agent: *", "Allow: /", "Sitemap:
https://jonathanperis.github.io/sitemap.xml" to start with ```txt) to satisfy
the markdown linter.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: c4ed1127-cbf8-4a1b-915d-02afa134ce5f
📒 Files selected for processing (9)
wiki/architecture.mdwiki/deployment.mdwiki/dynamic_projects.mdwiki/easter_egg.mdwiki/getting_started.mdwiki/index.mdwiki/project_structure.mdwiki/resume_page.mdwiki/seo_and_analytics.md
|
|
||
| ## Component Architecture | ||
|
|
||
| ``` |
There was a problem hiding this comment.
Add a language to fenced code blocks to satisfy markdownlint (MD040).
Line 9 and Line 28 use unlabeled fences; markdownlint flags this. Use text (or plaintext) for both blocks.
Suggested doc fix
-```
+```text
app/
...
-```
+```
-```
+```text
Build Time:
...
-```
+```Also applies to: 28-28
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 9-9: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@wiki/architecture.md` at line 9, The two unlabeled fenced code blocks
containing the "app/ ..." snippet and the "Build Time:" snippet should be
labeled to satisfy markdownlint MD040; update each opening fence from ``` to
```text (or ```plaintext) so the blocks that include "app/" and "Build Time:"
are changed to use ```text.
| ├── lib/ | ||
| │ ├── data.ts # Shared data (single source of truth) | ||
| │ └── github.ts # GitHub GraphQL API client | ||
| ├── components/ | ||
| │ ├── analytics.tsx # Google Analytics 4 | ||
| │ └── json-ld.tsx # Schema.org structured data |
There was a problem hiding this comment.
Directory tree paths are inconsistent with the current codebase.
Line 16 and Line 19 show lib/ and components/ nested under app/, but the repository snippets place these under src/lib (see src/lib/github.ts:46-91 and src/lib/data.ts:1-20). This can mislead contributors navigating the project.
Suggested doc fix
-app/
-├── page.tsx # Server Component — fetches pinned repos
-├── portfolio.tsx # Client Component — full interactive UI
-├── resume/
-│ ├── page.tsx # Client Component — print-optimized resume
-│ └── layout.tsx # Server Component — resume metadata
-├── lib/
-│ ├── data.ts # Shared data (single source of truth)
-│ └── github.ts # GitHub GraphQL API client
-├── components/
-│ ├── analytics.tsx # Google Analytics 4
-│ └── json-ld.tsx # Schema.org structured data
-├── layout.tsx # Root layout, metadata, fonts, SEO
-└── globals.css # Theme, animations, styles
+src/
+├── app/
+│ ├── page.tsx # Server Component — fetches pinned repos
+│ ├── portfolio.tsx # Client Component — full interactive UI
+│ ├── resume/
+│ │ ├── page.tsx # Client Component — print-optimized resume
+│ │ └── layout.tsx # Server Component — resume metadata
+│ ├── layout.tsx # Root layout, metadata, fonts, SEO
+│ └── globals.css # Theme, animations, styles
+├── lib/
+│ ├── data.ts # Shared data (single source of truth)
+│ └── github.ts # GitHub GraphQL API client
+└── components/
+ ├── analytics.tsx # Google Analytics 4
+ └── json-ld.tsx # Schema.org structured data🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@wiki/architecture.md` around lines 16 - 21, The directory tree in the
architecture doc is outdated: update the entries that list lib/ and components/
under app/ to reflect the actual repo layout (use src/lib and src/components) so
paths match the code (e.g., src/lib/github.ts, src/lib/data.ts, and components
files like analytics.tsx and json-ld.tsx); ensure the README/wiki references the
current file locations and examples so contributors are not misdirected.
|
|
||
| ## GitHub Actions | ||
|
|
||
| The site deploys automatically via `.github/workflows/deploy.yml` on every push to `master`. |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== workflow file =="
fd -i 'deploy.yml' .github/workflows
echo
echo "== trigger section (with context) =="
rg -n -C3 '^\s*on:|^\s*push:|^\s*branches:' .github/workflows/deploy.yml
echo
echo "== origin default branch (if available) =="
git symbolic-ref --short refs/remotes/origin/HEAD || trueRepository: jonathanperis/jonathanperis.github.io
Length of output: 226
🏁 Script executed:
# List all workflow files
echo "== Available workflows =="
fd '.' .github/workflows --type f
echo
echo "== Check wiki/deployment.md content =="
cat -n wiki/deployment.md
echo
echo "== Search for deploy references in any workflows =="
rg -i 'deploy|branches' .github/workflows/ -t yaml --context 2Repository: jonathanperis/jonathanperis.github.io
Length of output: 3769
Update workflow filename and branch name in deployment documentation.
Line 5 references a non-existent workflow file and incorrect branch. The actual deployment workflow is .github/workflows/main-release.yml (not deploy.yml) and it triggers on push to main (not master). Update the sentence to: "The site deploys automatically via .github/workflows/main-release.yml on every push to main."
🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: The official name of this software platform is spelled with a capital “H”.
Context: ...ons The site deploys automatically via .github/workflows/deploy.yml on every push to ...
(GITHUB)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@wiki/deployment.md` at line 5, Replace the outdated sentence "The site
deploys automatically via `.github/workflows/deploy.yml` on every push to
`master`." with the corrected text "The site deploys automatically via
`.github/workflows/main-release.yml` on every push to `main`." to reflect the
actual workflow filename and branch name.
| The projects section is **not hardcoded** — it fetches your **pinned repositories** from GitHub at build time using the GraphQL API. | ||
|
|
There was a problem hiding this comment.
Core data-source behavior is documented incorrectly.
The doc says pinned repos are fetched via pinnedItems, but src/lib/github.ts (Lines 22–35) queries repositories(first: 100, ...) sorted by update time. That also makes the pin/unpin guidance inaccurate.
Proposed doc correction (outline)
- The projects section is **not hardcoded** — it fetches your **pinned repositories**
+ The projects section is **not hardcoded** — it fetches your **public repositories**
...
- pinnedItems(first: 6, types: REPOSITORY)
+ repositories(first: 100, privacy: PUBLIC, orderBy: { field: UPDATED_AT, direction: DESC }, isFork: false)
...
- Only pinned repos are shown — pin/unpin repos on GitHub to control what appears
+ Repositories are selected from recent public repos (with filtering/mapping in `src/lib/github.ts`)
...
- Pin/unpin repos on your GitHub profile
+ Update repository metadata/content and push changes; deploy pulls fresh GitHub data at build timeAlso applies to: 12-16, 36-37, 55-57
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@wiki/dynamic_projects.md` around lines 5 - 6, The doc incorrectly states we
fetch GitHub pinned repos via pinnedItems; update the wording to say the build
queries repositories(first: 100, orderBy: {field: UPDATED_AT, direction: DESC})
so projects are the most-recently-updated repos, not pinned items, and adjust
the pin/unpin guidance to explain that pinning on GitHub does not affect this
build query; mention the exact GraphQL selector used (repositories(first: 100,
orderBy: {field: UPDATED_AT, direction: DESC})) and replace any references to
pinnedItems with the correct behavior and guidance.
| ``` | ||
| ↑ ↑ ↓ ↓ ← → ← → B A | ||
| ``` |
There was a problem hiding this comment.
Label both fenced code blocks with a language.
Both fences are unlabeled (MD040). Add language tags such as text for the key sequence/hint snippets.
Also applies to: 49-51
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 11-11: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@wiki/easter_egg.md` around lines 11 - 13, The two unlabeled fenced code
blocks containing the key sequence ("↑ ↑ ↓ ↓ ← → ← → B A") should be labeled
with a language identifier (e.g., add ```text after the opening backticks) to
satisfy the MD040 lint rule; update both occurrences (the block shown and the
other block referenced at lines 49-51) so each fenced code block uses a language
tag like "text".
| - Konami code listener in a `useEffect` hook | ||
| - Tracks last 10 keystrokes and matches against the sequence | ||
| - Terminal state managed with `useState` (history, input, command history) | ||
| - `handleTerminalCommand()` function maps commands to responses |
There was a problem hiding this comment.
Implementation function name doesn’t match the code.
Line 58 mentions handleTerminalCommand(), but the dispatcher is runCmd(cmd: string) in src/components/Portfolio.tsx (Lines 81–122). Please align the doc name.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@wiki/easter_egg.md` at line 58, The doc references a non-existent function
name handleTerminalCommand(); update the documentation to match the actual
dispatcher or change the implementation to match the doc. Either rename the
dispatcher function runCmd(cmd: string) to handleTerminalCommand (and update all
call sites), or edit the documentation line to reference runCmd(cmd: string)
(and optionally note its parameter signature). Ensure the function name in the
docs and the actual symbol runCmd(cmd: string) are consistent.
| ``` | ||
| jonathanperis.github.io/ | ||
| ├── app/ | ||
| │ ├── page.tsx # Server Component — fetches pinned repos, renders Portfolio | ||
| │ ├── portfolio.tsx # Client Component — main UI (hero, about, experience, projects) | ||
| │ ├── layout.tsx # Root layout: metadata, fonts, SEO, analytics, JSON-LD | ||
| │ ├── globals.css # Theme colors, animations, card/tag/timeline styles | ||
| │ ├── resume/ | ||
| │ │ ├── page.tsx # Print-optimized resume (shared data from lib/data.ts) | ||
| │ │ └── layout.tsx # Resume page metadata | ||
| │ ├── lib/ | ||
| │ │ ├── data.ts # Single source of truth: profile, experiences, skills, education | ||
| │ │ └── github.ts # GitHub GraphQL client: fetches pinned repos at build time | ||
| │ └── components/ | ||
| │ ├── analytics.tsx # GA4 conditional loader (reads NEXT_PUBLIC_GA_ID) | ||
| │ └── json-ld.tsx # Schema.org Person structured data | ||
| ├── public/ | ||
| │ ├── sitemap.xml # Sitemap for search engines | ||
| │ ├── robots.txt # Crawler directives | ||
| │ ├── manifest.json # PWA manifest | ||
| │ ├── favicon.svg # SVG favicon (JP monogram) | ||
| │ └── apple-touch-icon.png # iOS icon | ||
| ├── .github/workflows/ | ||
| │ └── deploy.yml # GitHub Actions: build → GitHub Pages | ||
| ├── next.config.ts # Static export, cache headers | ||
| ├── tsconfig.json | ||
| └── package.json | ||
| ``` |
There was a problem hiding this comment.
Add a language identifier to the tree fenced block.
Line 3 starts an unlabeled fenced block (MD040). Label it (for example, text) to satisfy linting.
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 3-3: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@wiki/project_structure.md` around lines 3 - 30, The fenced code block showing
the repository tree (starting with the line "jonathanperis.github.io/") in
wiki/project_structure.md is unlabeled, triggering MD040; fix it by adding a
language identifier (e.g., `text`) after the opening triple backticks so the
block becomes ```text — update the existing tree block rather than adding a new
block or changing its content.
| │ ├── lib/ | ||
| │ │ ├── data.ts # Single source of truth: profile, experiences, skills, education | ||
| │ │ └── github.ts # GitHub GraphQL client: fetches pinned repos at build time | ||
| │ └── components/ | ||
| │ ├── analytics.tsx # GA4 conditional loader (reads NEXT_PUBLIC_GA_ID) | ||
| │ └── json-ld.tsx # Schema.org Person structured data |
There was a problem hiding this comment.
File paths appear inconsistent with the current code layout.
Lines 36–39 and the tree section document lib/github.ts / portfolio.tsx, but related code references are under src/lib/github.ts and src/components/Portfolio.tsx. This can mislead contributors navigating the repo.
Proposed fix (example)
-│ ├── lib/
+│ ├── src/lib/
│ │ ├── data.ts
│ │ └── github.ts
-│ └── components/
+│ └── src/components/
│ ├── analytics.tsx
│ └── json-ld.tsx
...
-| `lib/github.ts` | Fetches pinned repos via GitHub GraphQL API. Falls back to hardcoded data if no token. |
-| `portfolio.tsx` | The entire interactive UI — hero, typing animation, about, experience timeline, project cards, terminal easter egg. |
+| `src/lib/github.ts` | Fetches project data via GitHub GraphQL API. Falls back to hardcoded data if no token. |
+| `src/components/Portfolio.tsx` | The entire interactive UI — hero, typing animation, about, experience timeline, project cards, terminal easter egg. |Also applies to: 36-39
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@wiki/project_structure.md` around lines 13 - 18, The documentation tree lists
files under lib/ and components/ (e.g., lib/github.ts and
components/portfolio.tsx) but the codebase uses src/lib/github.ts and
src/components/Portfolio.tsx; update the project_structure.md entries to reflect
the actual paths (replace lib/github.ts → src/lib/github.ts and portfolio.tsx →
src/components/Portfolio.tsx) and scan the rest of the file for other path
mismatches (e.g., lib/data.ts → src/lib/data.ts, components/json-ld.tsx →
src/components/json-ld.tsx) so the doc consistently matches the repository
layout.
| ``` | ||
| User-agent: * | ||
| Allow: / | ||
| Sitemap: https://jonathanperis.github.io/sitemap.xml | ||
| ``` |
There was a problem hiding this comment.
Specify a language for the robots.txt fenced block.
Line 39 opens an unlabeled fence, which triggers MD040. Use a language label (e.g., txt) to keep markdown lint clean.
Proposed fix
-```
+```txt
User-agent: *
Allow: /
Sitemap: https://jonathanperis.github.io/sitemap.xml</details>
<!-- suggestion_start -->
<details>
<summary>📝 Committable suggestion</summary>
> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
```suggestion
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 39-39: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@wiki/seo_and_analytics.md` around lines 39 - 43, The fenced code block
containing the robots.txt contents is unlabeled and triggers MD040; update the
opening fence from ``` to ```txt so the block is labeled (e.g., change the block
that currently starts with ``` and contains "User-agent: *", "Allow: /",
"Sitemap: https://jonathanperis.github.io/sitemap.xml" to start with ```txt) to
satisfy the markdown linter.
Migrate GitHub wiki markdown files to
wiki/folder in main repo. Wiki will be disabled after merge.Summary by CodeRabbit