Repository files navigation

Shaik Sohel — Portfolio

Live → shaiksohelll.github.io

Personal portfolio of Shaik Sohel — full-stack developer, Hyderabad. The site is a typography-led editorial portfolio with four source-backed project case studies and static GitHub Pages delivery.

Architecture

This is a build-free static site. There is no framework, bundler, npm install, or runtime server in production. GitHub Pages serves the HTML, stylesheet, local assets, and pinned CDN enhancements directly. .nojekyll remains in the repository root to preserve passthrough behavior.

The homepage and four project routes are real static documents:

index.html
404.html
styles.css
site-core.js
barba-layer.js
gsap-layer.js
motion-layer.js
anime-layer.js
work/klar/index.html
work/pakka/index.html
work/hyderabad-metro-go/index.html
work/bhasha-seva/index.html
avatar.png
shaik-sohel-resume.pdf
yukti-certificate.pdf
.nojekyll

The persistent global shell contains only the header/navigation, skip link, transition overlay, and live region. The homepage-only scroll rule is inside the homepage container. Every page-specific title, content, footer, case-study navigation, and project evidence lives inside one replaceable data-barba="container" with a namespace.

Barba namespaces

RouteNamespacePurpose
/homePortfolio homepage and complete work/experience/education story
/work/klar/project-klarKlar case study
/work/pakka/project-pakkaPakka case study
/work/hyderabad-metro-go/project-metroHyderabad Metro Go case study
/work/bhasha-seva/project-bhashaBhasha Seva case study

Each project route is directly refreshable, uses root-safe asset paths, provides previous/next project links, and retains its separate live-system or certificate action. External links, mail links, telephone links, downloads, new-tab links, and same-document hash links are intentionally left to native browser behavior.

Lifecycle and motion ownership

barba-layer.js owns route replacement, namespace-aware transitions, metadata updates, announcements, focus handoff, hash scrolling, and scroll restoration. site-core.js owns the singleton global shell, one optional Lenis instance, page reveal setup, and explicit cleanup registration.

GSAP owns glyph-safe SplitText line reveals, ScrollTrigger, and restrained project-index movement. Barba owns the direction-aware signal-red paper wipe and temporary title/index handoff clones; each clone exists only while its source route is present and is removed on normal completion, cleanup, or fail-open release. Anime.js owns page-scoped SVG rule drawing, evidence counts, and the homepage intro dash. Motion owns page-scoped hover springs and the homepage-only scroll rule. Every page module returns cleanup handles; generated SVG nodes, observers, timers, split instances, hover subscriptions, handoff clones, tweens, and ScrollTriggers are released before the next container is initialized.

The transition overlay has a fail-open timeout. If Barba, a CDN module, or a transition callback fails, native browser navigation remains available and content is not hidden behind JavaScript. Content is visible by default; .js only opts into enhancement styles. A document-level watchdog and page-level watchdog reveal content after 1.5 seconds. prefers-reduced-motion: reduce disables smooth scrolling, transition travel, counters, parallax, title travel, and reveal hiding. Title line wrappers remain overflow-visible with padded line boxes; no SplitText mask is used for glyph cropping.

Content truth

Project copy is limited to evidence present in the verified portfolio record and source repositories. Klar claims are grounded in its React/Vite client, Express/MongoDB server, Adzuna/JSearch ingestion, rate-aware requests, normalized shared job shape, count-time company/title/city dedupe, curated 46-entry taxonomy, day-bucketed skill history, bounded in-process aggregate caches, and timestamped public dataset status. Its detailed case study may show only the dated public API snapshot of 270 deduplicated 12-month postings and 43 observed skills versus 46 canonical taxonomy entries. It does not publish Mongo deployment counts, cluster schema parity, salary-disclosure counters, Watchlist/user data, or private analytics. Pakka claims are grounded in its Next.js/React/Supabase/PostgreSQL stack, authenticated transition RPCs, explicit authorization and state checks, ordered row locking, numeric monetary fields, partial unique indexes, operation-specific duplicate protection, and paired transfer paths. The detailed Pakka case study labels its approved aggregate counts as “Deployed schema audit snapshot — 27 August 2026”: 4 transition RPCs, 38 deployed migration records, and 45 deployed public RLS policies. It makes no product-traction or verified lifecycle-instrumentation claim and uses a concise measurement boundary instead. Hyderabad Metro Go claims are grounded in the actual vanilla JavaScript route engine, deque-based 0-1 BFS, three line maps, 59 stations, three interchange nodes, ten fare slabs, facilities, parking, and five-item recent-trip localStorage. Bhasha Seva uses only resume/certificate-backed facts and has no deployed launch link.

Local preview

Barba needs an HTTP origin to exercise route interception. Run any static server from the repository root, for example:

npx serve -l 4173 .

Opening index.html directly still provides fully readable content and native links, but file:// is not a valid test of Barba transitions.

Deployment

Push the feature branch and open a pull request against main. After review, merging to main allows GitHub Pages to deploy automatically. Do not add a build step or convert the project to a framework without revisiting the static fallback and direct-route assumptions.

Accessibility and performance

The site uses semantic landmarks, one heading hierarchy per route, real anchors, visible focus states, a skip link, an aria-live page announcement, an aria-hidden transition layer, mobile navigation, reduced-motion behavior, and no-JavaScript readability. It uses root-safe local assets, waits for critical layout images before page-specific motion, avoids aggressive prefetching on save-data connections, and keeps motion on transform/opacity/clip-path rather than layout properties.

© 2026 Shaik Sohel

About

Shaik Sohel — Software Engineer (Full-Stack). Portfolio: Klar, Pakka, Hyderabad Metro Go.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Shaik Sohel — Portfolio

Live → shaiksohelll.github.io

Personal portfolio of Shaik Sohel — full-stack developer, Hyderabad. The site is a typography-led editorial portfolio with four source-backed project case studies and static GitHub Pages delivery.

Architecture

This is a build-free static site. There is no framework, bundler, npm install, or runtime server in production. GitHub Pages serves the HTML, stylesheet, local assets, and pinned CDN enhancements directly. .nojekyll remains in the repository root to preserve passthrough behavior.

The homepage and four project routes are real static documents:

index.html
404.html
styles.css
site-core.js
barba-layer.js
gsap-layer.js
motion-layer.js
anime-layer.js
work/klar/index.html
work/pakka/index.html
work/hyderabad-metro-go/index.html
work/bhasha-seva/index.html
avatar.png
shaik-sohel-resume.pdf
yukti-certificate.pdf
.nojekyll

The persistent global shell contains only the header/navigation, skip link, transition overlay, and live region. The homepage-only scroll rule is inside the homepage container. Every page-specific title, content, footer, case-study navigation, and project evidence lives inside one replaceable data-barba="container" with a namespace.

Barba namespaces

RouteNamespacePurpose
/homePortfolio homepage and complete work/experience/education story
/work/klar/project-klarKlar case study
/work/pakka/project-pakkaPakka case study
/work/hyderabad-metro-go/project-metroHyderabad Metro Go case study
/work/bhasha-seva/project-bhashaBhasha Seva case study

Each project route is directly refreshable, uses root-safe asset paths, provides previous/next project links, and retains its separate live-system or certificate action. External links, mail links, telephone links, downloads, new-tab links, and same-document hash links are intentionally left to native browser behavior.

Lifecycle and motion ownership

barba-layer.js owns route replacement, namespace-aware transitions, metadata updates, announcements, focus handoff, hash scrolling, and scroll restoration. site-core.js owns the singleton global shell, one optional Lenis instance, page reveal setup, and explicit cleanup registration.

GSAP owns glyph-safe SplitText line reveals, ScrollTrigger, and restrained project-index movement. Barba owns the direction-aware signal-red paper wipe and temporary title/index handoff clones; each clone exists only while its source route is present and is removed on normal completion, cleanup, or fail-open release. Anime.js owns page-scoped SVG rule drawing, evidence counts, and the homepage intro dash. Motion owns page-scoped hover springs and the homepage-only scroll rule. Every page module returns cleanup handles; generated SVG nodes, observers, timers, split instances, hover subscriptions, handoff clones, tweens, and ScrollTriggers are released before the next container is initialized.

The transition overlay has a fail-open timeout. If Barba, a CDN module, or a transition callback fails, native browser navigation remains available and content is not hidden behind JavaScript. Content is visible by default; .js only opts into enhancement styles. A document-level watchdog and page-level watchdog reveal content after 1.5 seconds. prefers-reduced-motion: reduce disables smooth scrolling, transition travel, counters, parallax, title travel, and reveal hiding. Title line wrappers remain overflow-visible with padded line boxes; no SplitText mask is used for glyph cropping.

Content truth

Project copy is limited to evidence present in the verified portfolio record and source repositories. Klar claims are grounded in its React/Vite client, Express/MongoDB server, Adzuna/JSearch ingestion, rate-aware requests, normalized shared job shape, count-time company/title/city dedupe, curated 46-entry taxonomy, day-bucketed skill history, bounded in-process aggregate caches, and timestamped public dataset status. Its detailed case study may show only the dated public API snapshot of 270 deduplicated 12-month postings and 43 observed skills versus 46 canonical taxonomy entries. It does not publish Mongo deployment counts, cluster schema parity, salary-disclosure counters, Watchlist/user data, or private analytics. Pakka claims are grounded in its Next.js/React/Supabase/PostgreSQL stack, authenticated transition RPCs, explicit authorization and state checks, ordered row locking, numeric monetary fields, partial unique indexes, operation-specific duplicate protection, and paired transfer paths. The detailed Pakka case study labels its approved aggregate counts as “Deployed schema audit snapshot — 27 August 2026”: 4 transition RPCs, 38 deployed migration records, and 45 deployed public RLS policies. It makes no product-traction or verified lifecycle-instrumentation claim and uses a concise measurement boundary instead. Hyderabad Metro Go claims are grounded in the actual vanilla JavaScript route engine, deque-based 0-1 BFS, three line maps, 59 stations, three interchange nodes, ten fare slabs, facilities, parking, and five-item recent-trip localStorage. Bhasha Seva uses only resume/certificate-backed facts and has no deployed launch link.

Local preview

Barba needs an HTTP origin to exercise route interception. Run any static server from the repository root, for example:

npx serve -l 4173 .

Opening index.html directly still provides fully readable content and native links, but file:// is not a valid test of Barba transitions.

Deployment

Push the feature branch and open a pull request against main. After review, merging to main allows GitHub Pages to deploy automatically. Do not add a build step or convert the project to a framework without revisiting the static fallback and direct-route assumptions.

Accessibility and performance

The site uses semantic landmarks, one heading hierarchy per route, real anchors, visible focus states, a skip link, an aria-live page announcement, an aria-hidden transition layer, mobile navigation, reduced-motion behavior, and no-JavaScript readability. It uses root-safe local assets, waits for critical layout images before page-specific motion, avoids aggressive prefetching on save-data connections, and keeps motion on transform/opacity/clip-path rather than layout properties.

© 2026 Shaik Sohel

About

Shaik Sohel — Software Engineer (Full-Stack). Portfolio: Klar, Pakka, Hyderabad Metro Go.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Shaik Sohel — Portfolio

Live → shaiksohelll.github.io

Personal portfolio of Shaik Sohel — full-stack developer, Hyderabad. The site is a typography-led editorial portfolio with four source-backed project case studies and static GitHub Pages delivery.

Architecture

This is a build-free static site. There is no framework, bundler, npm install, or runtime server in production. GitHub Pages serves the HTML, stylesheet, local assets, and pinned CDN enhancements directly. .nojekyll remains in the repository root to preserve passthrough behavior.

The homepage and four project routes are real static documents:

index.html
404.html
styles.css
site-core.js
barba-layer.js
gsap-layer.js
motion-layer.js
anime-layer.js
work/klar/index.html
work/pakka/index.html
work/hyderabad-metro-go/index.html
work/bhasha-seva/index.html
avatar.png
shaik-sohel-resume.pdf
yukti-certificate.pdf
.nojekyll

The persistent global shell contains only the header/navigation, skip link, transition overlay, and live region. The homepage-only scroll rule is inside the homepage container. Every page-specific title, content, footer, case-study navigation, and project evidence lives inside one replaceable data-barba="container" with a namespace.

Barba namespaces

RouteNamespacePurpose
/homePortfolio homepage and complete work/experience/education story
/work/klar/project-klarKlar case study
/work/pakka/project-pakkaPakka case study
/work/hyderabad-metro-go/project-metroHyderabad Metro Go case study
/work/bhasha-seva/project-bhashaBhasha Seva case study

Each project route is directly refreshable, uses root-safe asset paths, provides previous/next project links, and retains its separate live-system or certificate action. External links, mail links, telephone links, downloads, new-tab links, and same-document hash links are intentionally left to native browser behavior.

Lifecycle and motion ownership

barba-layer.js owns route replacement, namespace-aware transitions, metadata updates, announcements, focus handoff, hash scrolling, and scroll restoration. site-core.js owns the singleton global shell, one optional Lenis instance, page reveal setup, and explicit cleanup registration.

GSAP owns glyph-safe SplitText line reveals, ScrollTrigger, and restrained project-index movement. Barba owns the direction-aware signal-red paper wipe and temporary title/index handoff clones; each clone exists only while its source route is present and is removed on normal completion, cleanup, or fail-open release. Anime.js owns page-scoped SVG rule drawing, evidence counts, and the homepage intro dash. Motion owns page-scoped hover springs and the homepage-only scroll rule. Every page module returns cleanup handles; generated SVG nodes, observers, timers, split instances, hover subscriptions, handoff clones, tweens, and ScrollTriggers are released before the next container is initialized.

The transition overlay has a fail-open timeout. If Barba, a CDN module, or a transition callback fails, native browser navigation remains available and content is not hidden behind JavaScript. Content is visible by default; .js only opts into enhancement styles. A document-level watchdog and page-level watchdog reveal content after 1.5 seconds. prefers-reduced-motion: reduce disables smooth scrolling, transition travel, counters, parallax, title travel, and reveal hiding. Title line wrappers remain overflow-visible with padded line boxes; no SplitText mask is used for glyph cropping.

Content truth

Project copy is limited to evidence present in the verified portfolio record and source repositories. Klar claims are grounded in its React/Vite client, Express/MongoDB server, Adzuna/JSearch ingestion, rate-aware requests, normalized shared job shape, count-time company/title/city dedupe, curated 46-entry taxonomy, day-bucketed skill history, bounded in-process aggregate caches, and timestamped public dataset status. Its detailed case study may show only the dated public API snapshot of 270 deduplicated 12-month postings and 43 observed skills versus 46 canonical taxonomy entries. It does not publish Mongo deployment counts, cluster schema parity, salary-disclosure counters, Watchlist/user data, or private analytics. Pakka claims are grounded in its Next.js/React/Supabase/PostgreSQL stack, authenticated transition RPCs, explicit authorization and state checks, ordered row locking, numeric monetary fields, partial unique indexes, operation-specific duplicate protection, and paired transfer paths. The detailed Pakka case study labels its approved aggregate counts as “Deployed schema audit snapshot — 27 August 2026”: 4 transition RPCs, 38 deployed migration records, and 45 deployed public RLS policies. It makes no product-traction or verified lifecycle-instrumentation claim and uses a concise measurement boundary instead. Hyderabad Metro Go claims are grounded in the actual vanilla JavaScript route engine, deque-based 0-1 BFS, three line maps, 59 stations, three interchange nodes, ten fare slabs, facilities, parking, and five-item recent-trip localStorage. Bhasha Seva uses only resume/certificate-backed facts and has no deployed launch link.

Local preview

Barba needs an HTTP origin to exercise route interception. Run any static server from the repository root, for example:

npx serve -l 4173 .

Opening index.html directly still provides fully readable content and native links, but file:// is not a valid test of Barba transitions.

Deployment

Push the feature branch and open a pull request against main. After review, merging to main allows GitHub Pages to deploy automatically. Do not add a build step or convert the project to a framework without revisiting the static fallback and direct-route assumptions.

Accessibility and performance

The site uses semantic landmarks, one heading hierarchy per route, real anchors, visible focus states, a skip link, an aria-live page announcement, an aria-hidden transition layer, mobile navigation, reduced-motion behavior, and no-JavaScript readability. It uses root-safe local assets, waits for critical layout images before page-specific motion, avoids aggressive prefetching on save-data connections, and keeps motion on transform/opacity/clip-path rather than layout properties.

© 2026 Shaik Sohel

About

Shaik Sohel — Software Engineer (Full-Stack). Portfolio: Klar, Pakka, Hyderabad Metro Go.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Shaik Sohel — Portfolio

Live → shaiksohelll.github.io

Personal portfolio of Shaik Sohel — full-stack developer, Hyderabad. The site is a typography-led editorial portfolio with four source-backed project case studies and static GitHub Pages delivery.

Architecture

This is a build-free static site. There is no framework, bundler, npm install, or runtime server in production. GitHub Pages serves the HTML, stylesheet, local assets, and pinned CDN enhancements directly. .nojekyll remains in the repository root to preserve passthrough behavior.

The homepage and four project routes are real static documents:

index.html
404.html
styles.css
site-core.js
barba-layer.js
gsap-layer.js
motion-layer.js
anime-layer.js
work/klar/index.html
work/pakka/index.html
work/hyderabad-metro-go/index.html
work/bhasha-seva/index.html
avatar.png
shaik-sohel-resume.pdf
yukti-certificate.pdf
.nojekyll

The persistent global shell contains only the header/navigation, skip link, transition overlay, and live region. The homepage-only scroll rule is inside the homepage container. Every page-specific title, content, footer, case-study navigation, and project evidence lives inside one replaceable data-barba="container" with a namespace.

Barba namespaces

RouteNamespacePurpose
/homePortfolio homepage and complete work/experience/education story
/work/klar/project-klarKlar case study
/work/pakka/project-pakkaPakka case study
/work/hyderabad-metro-go/project-metroHyderabad Metro Go case study
/work/bhasha-seva/project-bhashaBhasha Seva case study

Each project route is directly refreshable, uses root-safe asset paths, provides previous/next project links, and retains its separate live-system or certificate action. External links, mail links, telephone links, downloads, new-tab links, and same-document hash links are intentionally left to native browser behavior.

Lifecycle and motion ownership

barba-layer.js owns route replacement, namespace-aware transitions, metadata updates, announcements, focus handoff, hash scrolling, and scroll restoration. site-core.js owns the singleton global shell, one optional Lenis instance, page reveal setup, and explicit cleanup registration.

GSAP owns glyph-safe SplitText line reveals, ScrollTrigger, and restrained project-index movement. Barba owns the direction-aware signal-red paper wipe and temporary title/index handoff clones; each clone exists only while its source route is present and is removed on normal completion, cleanup, or fail-open release. Anime.js owns page-scoped SVG rule drawing, evidence counts, and the homepage intro dash. Motion owns page-scoped hover springs and the homepage-only scroll rule. Every page module returns cleanup handles; generated SVG nodes, observers, timers, split instances, hover subscriptions, handoff clones, tweens, and ScrollTriggers are released before the next container is initialized.

The transition overlay has a fail-open timeout. If Barba, a CDN module, or a transition callback fails, native browser navigation remains available and content is not hidden behind JavaScript. Content is visible by default; .js only opts into enhancement styles. A document-level watchdog and page-level watchdog reveal content after 1.5 seconds. prefers-reduced-motion: reduce disables smooth scrolling, transition travel, counters, parallax, title travel, and reveal hiding. Title line wrappers remain overflow-visible with padded line boxes; no SplitText mask is used for glyph cropping.

Content truth

Project copy is limited to evidence present in the verified portfolio record and source repositories. Klar claims are grounded in its React/Vite client, Express/MongoDB server, Adzuna/JSearch ingestion, rate-aware requests, normalized shared job shape, count-time company/title/city dedupe, curated 46-entry taxonomy, day-bucketed skill history, bounded in-process aggregate caches, and timestamped public dataset status. Its detailed case study may show only the dated public API snapshot of 270 deduplicated 12-month postings and 43 observed skills versus 46 canonical taxonomy entries. It does not publish Mongo deployment counts, cluster schema parity, salary-disclosure counters, Watchlist/user data, or private analytics. Pakka claims are grounded in its Next.js/React/Supabase/PostgreSQL stack, authenticated transition RPCs, explicit authorization and state checks, ordered row locking, numeric monetary fields, partial unique indexes, operation-specific duplicate protection, and paired transfer paths. The detailed Pakka case study labels its approved aggregate counts as “Deployed schema audit snapshot — 27 August 2026”: 4 transition RPCs, 38 deployed migration records, and 45 deployed public RLS policies. It makes no product-traction or verified lifecycle-instrumentation claim and uses a concise measurement boundary instead. Hyderabad Metro Go claims are grounded in the actual vanilla JavaScript route engine, deque-based 0-1 BFS, three line maps, 59 stations, three interchange nodes, ten fare slabs, facilities, parking, and five-item recent-trip localStorage. Bhasha Seva uses only resume/certificate-backed facts and has no deployed launch link.

Local preview

Barba needs an HTTP origin to exercise route interception. Run any static server from the repository root, for example:

npx serve -l 4173 .

Opening index.html directly still provides fully readable content and native links, but file:// is not a valid test of Barba transitions.

Deployment

Push the feature branch and open a pull request against main. After review, merging to main allows GitHub Pages to deploy automatically. Do not add a build step or convert the project to a framework without revisiting the static fallback and direct-route assumptions.

Accessibility and performance

The site uses semantic landmarks, one heading hierarchy per route, real anchors, visible focus states, a skip link, an aria-live page announcement, an aria-hidden transition layer, mobile navigation, reduced-motion behavior, and no-JavaScript readability. It uses root-safe local assets, waits for critical layout images before page-specific motion, avoids aggressive prefetching on save-data connections, and keeps motion on transform/opacity/clip-path rather than layout properties.

© 2026 Shaik Sohel

About

Shaik Sohel — Software Engineer (Full-Stack). Portfolio: Klar, Pakka, Hyderabad Metro Go.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Shaik Sohel — Portfolio

Live → shaiksohelll.github.io

Personal portfolio of Shaik Sohel — full-stack developer, Hyderabad. The site is a typography-led editorial portfolio with four source-backed project case studies and static GitHub Pages delivery.

Architecture

This is a build-free static site. There is no framework, bundler, npm install, or runtime server in production. GitHub Pages serves the HTML, stylesheet, local assets, and pinned CDN enhancements directly. .nojekyll remains in the repository root to preserve passthrough behavior.

The homepage and four project routes are real static documents:

index.html
404.html
styles.css
site-core.js
barba-layer.js
gsap-layer.js
motion-layer.js
anime-layer.js
work/klar/index.html
work/pakka/index.html
work/hyderabad-metro-go/index.html
work/bhasha-seva/index.html
avatar.png
shaik-sohel-resume.pdf
yukti-certificate.pdf
.nojekyll

The persistent global shell contains only the header/navigation, skip link, transition overlay, and live region. The homepage-only scroll rule is inside the homepage container. Every page-specific title, content, footer, case-study navigation, and project evidence lives inside one replaceable data-barba="container" with a namespace.

Barba namespaces

RouteNamespacePurpose
/homePortfolio homepage and complete work/experience/education story
/work/klar/project-klarKlar case study
/work/pakka/project-pakkaPakka case study
/work/hyderabad-metro-go/project-metroHyderabad Metro Go case study
/work/bhasha-seva/project-bhashaBhasha Seva case study

Each project route is directly refreshable, uses root-safe asset paths, provides previous/next project links, and retains its separate live-system or certificate action. External links, mail links, telephone links, downloads, new-tab links, and same-document hash links are intentionally left to native browser behavior.

Lifecycle and motion ownership

barba-layer.js owns route replacement, namespace-aware transitions, metadata updates, announcements, focus handoff, hash scrolling, and scroll restoration. site-core.js owns the singleton global shell, one optional Lenis instance, page reveal setup, and explicit cleanup registration.

GSAP owns glyph-safe SplitText line reveals, ScrollTrigger, and restrained project-index movement. Barba owns the direction-aware signal-red paper wipe and temporary title/index handoff clones; each clone exists only while its source route is present and is removed on normal completion, cleanup, or fail-open release. Anime.js owns page-scoped SVG rule drawing, evidence counts, and the homepage intro dash. Motion owns page-scoped hover springs and the homepage-only scroll rule. Every page module returns cleanup handles; generated SVG nodes, observers, timers, split instances, hover subscriptions, handoff clones, tweens, and ScrollTriggers are released before the next container is initialized.

The transition overlay has a fail-open timeout. If Barba, a CDN module, or a transition callback fails, native browser navigation remains available and content is not hidden behind JavaScript. Content is visible by default; .js only opts into enhancement styles. A document-level watchdog and page-level watchdog reveal content after 1.5 seconds. prefers-reduced-motion: reduce disables smooth scrolling, transition travel, counters, parallax, title travel, and reveal hiding. Title line wrappers remain overflow-visible with padded line boxes; no SplitText mask is used for glyph cropping.

Content truth

Project copy is limited to evidence present in the verified portfolio record and source repositories. Klar claims are grounded in its React/Vite client, Express/MongoDB server, Adzuna/JSearch ingestion, rate-aware requests, normalized shared job shape, count-time company/title/city dedupe, curated 46-entry taxonomy, day-bucketed skill history, bounded in-process aggregate caches, and timestamped public dataset status. Its detailed case study may show only the dated public API snapshot of 270 deduplicated 12-month postings and 43 observed skills versus 46 canonical taxonomy entries. It does not publish Mongo deployment counts, cluster schema parity, salary-disclosure counters, Watchlist/user data, or private analytics. Pakka claims are grounded in its Next.js/React/Supabase/PostgreSQL stack, authenticated transition RPCs, explicit authorization and state checks, ordered row locking, numeric monetary fields, partial unique indexes, operation-specific duplicate protection, and paired transfer paths. The detailed Pakka case study labels its approved aggregate counts as “Deployed schema audit snapshot — 27 August 2026”: 4 transition RPCs, 38 deployed migration records, and 45 deployed public RLS policies. It makes no product-traction or verified lifecycle-instrumentation claim and uses a concise measurement boundary instead. Hyderabad Metro Go claims are grounded in the actual vanilla JavaScript route engine, deque-based 0-1 BFS, three line maps, 59 stations, three interchange nodes, ten fare slabs, facilities, parking, and five-item recent-trip localStorage. Bhasha Seva uses only resume/certificate-backed facts and has no deployed launch link.

Local preview

Barba needs an HTTP origin to exercise route interception. Run any static server from the repository root, for example:

npx serve -l 4173 .

Opening index.html directly still provides fully readable content and native links, but file:// is not a valid test of Barba transitions.

Deployment

Push the feature branch and open a pull request against main. After review, merging to main allows GitHub Pages to deploy automatically. Do not add a build step or convert the project to a framework without revisiting the static fallback and direct-route assumptions.

Accessibility and performance

The site uses semantic landmarks, one heading hierarchy per route, real anchors, visible focus states, a skip link, an aria-live page announcement, an aria-hidden transition layer, mobile navigation, reduced-motion behavior, and no-JavaScript readability. It uses root-safe local assets, waits for critical layout images before page-specific motion, avoids aggressive prefetching on save-data connections, and keeps motion on transform/opacity/clip-path rather than layout properties.

© 2026 Shaik Sohel

About

Shaik Sohel — Software Engineer (Full-Stack). Portfolio: Klar, Pakka, Hyderabad Metro Go.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Shaik Sohel — Portfolio

Live → shaiksohelll.github.io

Personal portfolio of Shaik Sohel — full-stack developer, Hyderabad. The site is a typography-led editorial portfolio with four source-backed project case studies and static GitHub Pages delivery.

Architecture

This is a build-free static site. There is no framework, bundler, npm install, or runtime server in production. GitHub Pages serves the HTML, stylesheet, local assets, and pinned CDN enhancements directly. .nojekyll remains in the repository root to preserve passthrough behavior.

The homepage and four project routes are real static documents:

index.html
404.html
styles.css
site-core.js
barba-layer.js
gsap-layer.js
motion-layer.js
anime-layer.js
work/klar/index.html
work/pakka/index.html
work/hyderabad-metro-go/index.html
work/bhasha-seva/index.html
avatar.png
shaik-sohel-resume.pdf
yukti-certificate.pdf
.nojekyll

The persistent global shell contains only the header/navigation, skip link, transition overlay, and live region. The homepage-only scroll rule is inside the homepage container. Every page-specific title, content, footer, case-study navigation, and project evidence lives inside one replaceable data-barba="container" with a namespace.

Barba namespaces

RouteNamespacePurpose
/homePortfolio homepage and complete work/experience/education story
/work/klar/project-klarKlar case study
/work/pakka/project-pakkaPakka case study
/work/hyderabad-metro-go/project-metroHyderabad Metro Go case study
/work/bhasha-seva/project-bhashaBhasha Seva case study

Each project route is directly refreshable, uses root-safe asset paths, provides previous/next project links, and retains its separate live-system or certificate action. External links, mail links, telephone links, downloads, new-tab links, and same-document hash links are intentionally left to native browser behavior.

Lifecycle and motion ownership

barba-layer.js owns route replacement, namespace-aware transitions, metadata updates, announcements, focus handoff, hash scrolling, and scroll restoration. site-core.js owns the singleton global shell, one optional Lenis instance, page reveal setup, and explicit cleanup registration.

GSAP owns glyph-safe SplitText line reveals, ScrollTrigger, and restrained project-index movement. Barba owns the direction-aware signal-red paper wipe and temporary title/index handoff clones; each clone exists only while its source route is present and is removed on normal completion, cleanup, or fail-open release. Anime.js owns page-scoped SVG rule drawing, evidence counts, and the homepage intro dash. Motion owns page-scoped hover springs and the homepage-only scroll rule. Every page module returns cleanup handles; generated SVG nodes, observers, timers, split instances, hover subscriptions, handoff clones, tweens, and ScrollTriggers are released before the next container is initialized.

The transition overlay has a fail-open timeout. If Barba, a CDN module, or a transition callback fails, native browser navigation remains available and content is not hidden behind JavaScript. Content is visible by default; .js only opts into enhancement styles. A document-level watchdog and page-level watchdog reveal content after 1.5 seconds. prefers-reduced-motion: reduce disables smooth scrolling, transition travel, counters, parallax, title travel, and reveal hiding. Title line wrappers remain overflow-visible with padded line boxes; no SplitText mask is used for glyph cropping.

Content truth

Project copy is limited to evidence present in the verified portfolio record and source repositories. Klar claims are grounded in its React/Vite client, Express/MongoDB server, Adzuna/JSearch ingestion, rate-aware requests, normalized shared job shape, count-time company/title/city dedupe, curated 46-entry taxonomy, day-bucketed skill history, bounded in-process aggregate caches, and timestamped public dataset status. Its detailed case study may show only the dated public API snapshot of 270 deduplicated 12-month postings and 43 observed skills versus 46 canonical taxonomy entries. It does not publish Mongo deployment counts, cluster schema parity, salary-disclosure counters, Watchlist/user data, or private analytics. Pakka claims are grounded in its Next.js/React/Supabase/PostgreSQL stack, authenticated transition RPCs, explicit authorization and state checks, ordered row locking, numeric monetary fields, partial unique indexes, operation-specific duplicate protection, and paired transfer paths. The detailed Pakka case study labels its approved aggregate counts as “Deployed schema audit snapshot — 27 August 2026”: 4 transition RPCs, 38 deployed migration records, and 45 deployed public RLS policies. It makes no product-traction or verified lifecycle-instrumentation claim and uses a concise measurement boundary instead. Hyderabad Metro Go claims are grounded in the actual vanilla JavaScript route engine, deque-based 0-1 BFS, three line maps, 59 stations, three interchange nodes, ten fare slabs, facilities, parking, and five-item recent-trip localStorage. Bhasha Seva uses only resume/certificate-backed facts and has no deployed launch link.

Local preview

Barba needs an HTTP origin to exercise route interception. Run any static server from the repository root, for example:

npx serve -l 4173 .

Opening index.html directly still provides fully readable content and native links, but file:// is not a valid test of Barba transitions.

Deployment

Push the feature branch and open a pull request against main. After review, merging to main allows GitHub Pages to deploy automatically. Do not add a build step or convert the project to a framework without revisiting the static fallback and direct-route assumptions.

Accessibility and performance

The site uses semantic landmarks, one heading hierarchy per route, real anchors, visible focus states, a skip link, an aria-live page announcement, an aria-hidden transition layer, mobile navigation, reduced-motion behavior, and no-JavaScript readability. It uses root-safe local assets, waits for critical layout images before page-specific motion, avoids aggressive prefetching on save-data connections, and keeps motion on transform/opacity/clip-path rather than layout properties.

© 2026 Shaik Sohel

About

Shaik Sohel — Software Engineer (Full-Stack). Portfolio: Klar, Pakka, Hyderabad Metro Go.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Shaik Sohel — Portfolio

Live → shaiksohelll.github.io

Personal portfolio of Shaik Sohel — full-stack developer, Hyderabad. The site is a typography-led editorial portfolio with four source-backed project case studies and static GitHub Pages delivery.

Architecture

This is a build-free static site. There is no framework, bundler, npm install, or runtime server in production. GitHub Pages serves the HTML, stylesheet, local assets, and pinned CDN enhancements directly. .nojekyll remains in the repository root to preserve passthrough behavior.

The homepage and four project routes are real static documents:

index.html
404.html
styles.css
site-core.js
barba-layer.js
gsap-layer.js
motion-layer.js
anime-layer.js
work/klar/index.html
work/pakka/index.html
work/hyderabad-metro-go/index.html
work/bhasha-seva/index.html
avatar.png
shaik-sohel-resume.pdf
yukti-certificate.pdf
.nojekyll

The persistent global shell contains only the header/navigation, skip link, transition overlay, and live region. The homepage-only scroll rule is inside the homepage container. Every page-specific title, content, footer, case-study navigation, and project evidence lives inside one replaceable data-barba="container" with a namespace.

Barba namespaces

RouteNamespacePurpose
/homePortfolio homepage and complete work/experience/education story
/work/klar/project-klarKlar case study
/work/pakka/project-pakkaPakka case study
/work/hyderabad-metro-go/project-metroHyderabad Metro Go case study
/work/bhasha-seva/project-bhashaBhasha Seva case study

Each project route is directly refreshable, uses root-safe asset paths, provides previous/next project links, and retains its separate live-system or certificate action. External links, mail links, telephone links, downloads, new-tab links, and same-document hash links are intentionally left to native browser behavior.

Lifecycle and motion ownership

barba-layer.js owns route replacement, namespace-aware transitions, metadata updates, announcements, focus handoff, hash scrolling, and scroll restoration. site-core.js owns the singleton global shell, one optional Lenis instance, page reveal setup, and explicit cleanup registration.

GSAP owns glyph-safe SplitText line reveals, ScrollTrigger, and restrained project-index movement. Barba owns the direction-aware signal-red paper wipe and temporary title/index handoff clones; each clone exists only while its source route is present and is removed on normal completion, cleanup, or fail-open release. Anime.js owns page-scoped SVG rule drawing, evidence counts, and the homepage intro dash. Motion owns page-scoped hover springs and the homepage-only scroll rule. Every page module returns cleanup handles; generated SVG nodes, observers, timers, split instances, hover subscriptions, handoff clones, tweens, and ScrollTriggers are released before the next container is initialized.

The transition overlay has a fail-open timeout. If Barba, a CDN module, or a transition callback fails, native browser navigation remains available and content is not hidden behind JavaScript. Content is visible by default; .js only opts into enhancement styles. A document-level watchdog and page-level watchdog reveal content after 1.5 seconds. prefers-reduced-motion: reduce disables smooth scrolling, transition travel, counters, parallax, title travel, and reveal hiding. Title line wrappers remain overflow-visible with padded line boxes; no SplitText mask is used for glyph cropping.

Content truth

Project copy is limited to evidence present in the verified portfolio record and source repositories. Klar claims are grounded in its React/Vite client, Express/MongoDB server, Adzuna/JSearch ingestion, rate-aware requests, normalized shared job shape, count-time company/title/city dedupe, curated 46-entry taxonomy, day-bucketed skill history, bounded in-process aggregate caches, and timestamped public dataset status. Its detailed case study may show only the dated public API snapshot of 270 deduplicated 12-month postings and 43 observed skills versus 46 canonical taxonomy entries. It does not publish Mongo deployment counts, cluster schema parity, salary-disclosure counters, Watchlist/user data, or private analytics. Pakka claims are grounded in its Next.js/React/Supabase/PostgreSQL stack, authenticated transition RPCs, explicit authorization and state checks, ordered row locking, numeric monetary fields, partial unique indexes, operation-specific duplicate protection, and paired transfer paths. The detailed Pakka case study labels its approved aggregate counts as “Deployed schema audit snapshot — 27 August 2026”: 4 transition RPCs, 38 deployed migration records, and 45 deployed public RLS policies. It makes no product-traction or verified lifecycle-instrumentation claim and uses a concise measurement boundary instead. Hyderabad Metro Go claims are grounded in the actual vanilla JavaScript route engine, deque-based 0-1 BFS, three line maps, 59 stations, three interchange nodes, ten fare slabs, facilities, parking, and five-item recent-trip localStorage. Bhasha Seva uses only resume/certificate-backed facts and has no deployed launch link.

Local preview

Barba needs an HTTP origin to exercise route interception. Run any static server from the repository root, for example:

npx serve -l 4173 .

Opening index.html directly still provides fully readable content and native links, but file:// is not a valid test of Barba transitions.

Deployment

Push the feature branch and open a pull request against main. After review, merging to main allows GitHub Pages to deploy automatically. Do not add a build step or convert the project to a framework without revisiting the static fallback and direct-route assumptions.

Accessibility and performance

The site uses semantic landmarks, one heading hierarchy per route, real anchors, visible focus states, a skip link, an aria-live page announcement, an aria-hidden transition layer, mobile navigation, reduced-motion behavior, and no-JavaScript readability. It uses root-safe local assets, waits for critical layout images before page-specific motion, avoids aggressive prefetching on save-data connections, and keeps motion on transform/opacity/clip-path rather than layout properties.

© 2026 Shaik Sohel

About

Shaik Sohel — Software Engineer (Full-Stack). Portfolio: Klar, Pakka, Hyderabad Metro Go.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Shaik Sohel — Portfolio

Live → shaiksohelll.github.io

Personal portfolio of Shaik Sohel — full-stack developer, Hyderabad. The site is a typography-led editorial portfolio with four source-backed project case studies and static GitHub Pages delivery.

Architecture

This is a build-free static site. There is no framework, bundler, npm install, or runtime server in production. GitHub Pages serves the HTML, stylesheet, local assets, and pinned CDN enhancements directly. .nojekyll remains in the repository root to preserve passthrough behavior.

The homepage and four project routes are real static documents:

index.html
404.html
styles.css
site-core.js
barba-layer.js
gsap-layer.js
motion-layer.js
anime-layer.js
work/klar/index.html
work/pakka/index.html
work/hyderabad-metro-go/index.html
work/bhasha-seva/index.html
avatar.png
shaik-sohel-resume.pdf
yukti-certificate.pdf
.nojekyll

The persistent global shell contains only the header/navigation, skip link, transition overlay, and live region. The homepage-only scroll rule is inside the homepage container. Every page-specific title, content, footer, case-study navigation, and project evidence lives inside one replaceable data-barba="container" with a namespace.

Barba namespaces

RouteNamespacePurpose
/homePortfolio homepage and complete work/experience/education story
/work/klar/project-klarKlar case study
/work/pakka/project-pakkaPakka case study
/work/hyderabad-metro-go/project-metroHyderabad Metro Go case study
/work/bhasha-seva/project-bhashaBhasha Seva case study

Each project route is directly refreshable, uses root-safe asset paths, provides previous/next project links, and retains its separate live-system or certificate action. External links, mail links, telephone links, downloads, new-tab links, and same-document hash links are intentionally left to native browser behavior.

Lifecycle and motion ownership

barba-layer.js owns route replacement, namespace-aware transitions, metadata updates, announcements, focus handoff, hash scrolling, and scroll restoration. site-core.js owns the singleton global shell, one optional Lenis instance, page reveal setup, and explicit cleanup registration.

GSAP owns glyph-safe SplitText line reveals, ScrollTrigger, and restrained project-index movement. Barba owns the direction-aware signal-red paper wipe and temporary title/index handoff clones; each clone exists only while its source route is present and is removed on normal completion, cleanup, or fail-open release. Anime.js owns page-scoped SVG rule drawing, evidence counts, and the homepage intro dash. Motion owns page-scoped hover springs and the homepage-only scroll rule. Every page module returns cleanup handles; generated SVG nodes, observers, timers, split instances, hover subscriptions, handoff clones, tweens, and ScrollTriggers are released before the next container is initialized.

The transition overlay has a fail-open timeout. If Barba, a CDN module, or a transition callback fails, native browser navigation remains available and content is not hidden behind JavaScript. Content is visible by default; .js only opts into enhancement styles. A document-level watchdog and page-level watchdog reveal content after 1.5 seconds. prefers-reduced-motion: reduce disables smooth scrolling, transition travel, counters, parallax, title travel, and reveal hiding. Title line wrappers remain overflow-visible with padded line boxes; no SplitText mask is used for glyph cropping.

Content truth

Project copy is limited to evidence present in the verified portfolio record and source repositories. Klar claims are grounded in its React/Vite client, Express/MongoDB server, Adzuna/JSearch ingestion, rate-aware requests, normalized shared job shape, count-time company/title/city dedupe, curated 46-entry taxonomy, day-bucketed skill history, bounded in-process aggregate caches, and timestamped public dataset status. Its detailed case study may show only the dated public API snapshot of 270 deduplicated 12-month postings and 43 observed skills versus 46 canonical taxonomy entries. It does not publish Mongo deployment counts, cluster schema parity, salary-disclosure counters, Watchlist/user data, or private analytics. Pakka claims are grounded in its Next.js/React/Supabase/PostgreSQL stack, authenticated transition RPCs, explicit authorization and state checks, ordered row locking, numeric monetary fields, partial unique indexes, operation-specific duplicate protection, and paired transfer paths. The detailed Pakka case study labels its approved aggregate counts as “Deployed schema audit snapshot — 27 August 2026”: 4 transition RPCs, 38 deployed migration records, and 45 deployed public RLS policies. It makes no product-traction or verified lifecycle-instrumentation claim and uses a concise measurement boundary instead. Hyderabad Metro Go claims are grounded in the actual vanilla JavaScript route engine, deque-based 0-1 BFS, three line maps, 59 stations, three interchange nodes, ten fare slabs, facilities, parking, and five-item recent-trip localStorage. Bhasha Seva uses only resume/certificate-backed facts and has no deployed launch link.

Local preview

Barba needs an HTTP origin to exercise route interception. Run any static server from the repository root, for example:

npx serve -l 4173 .

Opening index.html directly still provides fully readable content and native links, but file:// is not a valid test of Barba transitions.

Deployment

Push the feature branch and open a pull request against main. After review, merging to main allows GitHub Pages to deploy automatically. Do not add a build step or convert the project to a framework without revisiting the static fallback and direct-route assumptions.

Accessibility and performance

The site uses semantic landmarks, one heading hierarchy per route, real anchors, visible focus states, a skip link, an aria-live page announcement, an aria-hidden transition layer, mobile navigation, reduced-motion behavior, and no-JavaScript readability. It uses root-safe local assets, waits for critical layout images before page-specific motion, avoids aggressive prefetching on save-data connections, and keeps motion on transform/opacity/clip-path rather than layout properties.

© 2026 Shaik Sohel

About

Shaik Sohel — Software Engineer (Full-Stack). Portfolio: Klar, Pakka, Hyderabad Metro Go.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages