Personal portfolio for Pavan Dharma Adapa — one site, two switchable profiles.
Hand-written HTML/CSS/JS. No framework, no build step, no dependencies, no tracking.
Open index.html in a browser and it just works.
I apply across two job families, so the site carries both and lets the reader pick:
| Track | Framing | Link to send |
|---|---|---|
epic |
Healthcare Data Analyst — Clarity, Cogito, Caboodle, revenue cycle, population health | …/?track=epic |
analytics |
Data Analyst / BI — SQL, Python, Tableau, Power BI, predictive modeling | …/?track=analytics |
Put the matching link in each application. A healthcare recruiter lands on the Epic
framing; a BI recruiter lands on the analytics framing. Same site, right first impression.
The choice also persists in localStorage, and the accent colour shifts (cyan for
healthcare, green for analytics) so the switch is visible, not just semantic.
Bare URL with no ?track= defaults to epic — change DEFAULT_TRACK at the top of
main.js to flip that.
Everything lives in index.html as plain markup. Each track-specific element
carries a data-track attribute:
<li data-track="epic">Only shows on the healthcare profile</li>
<li data-track="analytics">Only shows on the data analyst profile</li>
<li data-track="both">Always shows</li>
<li>No attribute — also always shows</li>main.js hides whatever doesn't match. With JavaScript disabled the whole document renders,
which is the correct fallback for search-engine crawlers.
To add a project, copy an existing <article class="card"> block and set its data-track.
- The metric tiles in the hero (
data-countattributes) - The typed hero lines —
TRACK_COPYat the top ofmain.js - The JSON-LD block in
<head>(helps Google show a proper knowledge panel for your name) - The OG image at
assets/og.jpg, regenerated fromtools/make-og.ps1(JPEG, not PNG: the PNG was 575KB for the same 1200x630 photographic image)
resume/ holds the PDF exported per track:
Pavan_Dharma_Adapa_Healthcare_Data_Analyst.pdfPavan_Dharma_Adapa_Data_Analyst.pdf
The download button swaps to the right one based on the active track. Re-export from the
master .docx files whenever they change and keep the filenames identical.
The repo must be named exactly adapapavandharma.github.io for the clean root URL.
git remote add origin https://github.com/adapapavandharma/adapapavandharma.github.io.git
git branch -M main
git push -u origin mainThen on github.com: Settings → Pages → Source: Deploy from a branch → main / (root).
Live in ~1 minute at https://adapapavandharma.github.io.
.nojekyll is present so GitHub serves the files as-is instead of running them through Jekyll.
Buy a domain, add a CNAME file containing just the domain, and point DNS at GitHub's
Pages IPs. A real domain on a résumé reads better than a github.io subdomain, but it is
not worth blocking the launch over.
python -m http.server 8000Then open http://localhost:8000. Opening index.html directly via file:// works too,
but the clipboard buttons fall back to a legacy copy path and the URL never picks up
?track=.
| Key | Action |
|---|---|
| Ctrl/⌘ + K | Command palette |
| / | Command palette |
| ↑ ↓ Enter | Navigate and run |
| Esc | Close |
The palette can jump between sections, switch tracks, copy contact details, and trigger print-to-PDF.
- Semantic landmarks, a skip link, visible focus rings, and
aria-selectedon the track tabs - Respects
prefers-reduced-motion— the typing effect, counters, and reveals all stand down - Respects
prefers-color-schemeon first visit; the theme toggle then persists a choice - System font stacks only, so there are no webfont requests and no layout shift
- Print stylesheet strips chrome and lays the page out as a readable document