This repository powers https://ysultankpg.github.io — a personal portfolio site (About, Experience, Skills, Automation Projects, AI Agents) with a built-in blog and a "My Works" showcase page, both powered by Jekyll, built and deployed automatically by GitHub Pages.
Everything below can be done directly on GitHub.com in your browser — no local setup, no terminal, no software installation needed.
Glassmorphic dark-theme portfolio with animated floating orbs, built on Jekyll and deployed via GitHub Pages.
- Font: Outfit (Google Fonts)
- Navigation: Floating pill nav with glassmorphic blur, hamburger on mobile
- Theme: Three-way switcher — Light / Dark / System (persisted in localStorage)
- Hero: Animated gradient orbs + circular photo + headline + tech marquee
- Sections: Bento stats, About (glass card + tech chips), Experience timeline, AI Agents grid, Automation Projects, Skills & Certifications, Contact card
- Animations: CSS float keyframes on orbs, IntersectionObserver scroll-reveal with stagger delay, pulse on agent status dots
- Film grain: SVG noise overlay at 3% opacity for texture
- Go-to-top: Floating purple button appears after 400px scroll, smooth-scrolls to top
| What | Where | Type |
|---|---|---|
| Main portfolio page (About/Experience/Skills/Automation/Agents) | index.html |
Static HTML |
| Portfolio content (jobs, skills, projects, impact numbers) | data.js |
JavaScript data file |
| DOM rendering + scroll animations | render.js |
JavaScript |
| Light/dark/system theme switcher | theme.js |
JavaScript |
| Base styles (colors, fonts, layout, go-to-top) | style.css |
CSS |
| Section styles (about, experience, agents, projects, skills, contact) | sections.css |
CSS |
| Blog/Works page styles | pages.css |
CSS |
| Blog listing page | blog/index.html |
Jekyll template |
| Individual blog posts | _posts/ folder |
Markdown/HTML files |
| "My Works" showcase page | works/index.html |
Jekyll template |
| Works data (Tableau/app links) | _data/works.yml |
YAML data file |
| Site-wide layout (nav, footer, go-to-top, scripts) | _layouts/default.html |
Jekyll layout |
| Blog post layout | _layouts/post.html |
Jekyll layout |
| Site configuration | _config.yml |
Jekyll config |
| Your downloadable resume | Yousuf_Sultan_Resume.pdf |
| Page | Path | Description |
|---|---|---|
| Home | / |
Full portfolio with all sections |
| Blog | /blog/ |
Blog listing with subscribe box and post cards |
| Works | /works/ |
Project gallery grid from _data/works.yml |
- The SQL Mindmap (Aug 16, 2026) — Animated SVG mindmap with continuously flowing particles, covering DDL, DML, DCL, Joins, Window Functions, Aggregates
- Data Analyst vs. BI Analyst vs. Data Engineer (Jul 22, 2026) — Role comparison article
- Welcome to my blog (Jul 22, 2026) — Introduction post
- Static site generator: Jekyll (Ruby)
- Hosting: GitHub Pages (auto-builds on push to
main) - Styling: Pure CSS with custom properties (no frameworks)
- JavaScript: Vanilla JS — data-driven rendering, theme persistence, scroll animations
- Blog visuals: SVG
<animateMotion>for animated mindmaps with flowing particles
Every instruction below follows the same basic pattern:
- Go to https://github.com/ysultankpg/ysultankpg.github.io
- Navigate to the file you want to change
- Click the pencil icon in the top-right of the file view
- Make your edit directly in GitHub's browser-based editor
- Scroll down, write a short commit message (e.g. "Update About text"), click "Commit changes"
- Wait ~1-3 minutes — GitHub Pages automatically detects the push, rebuilds the Jekyll site, and redeploys to https://ysultankpg.github.io
No local files, no terminal, no git commands required for any of this.
- Go to the
_posts/folder in the repo - Click "Add file" → "Create new file"
- Name the file exactly like this (this naming pattern is required by Jekyll):
Example:
_posts/YYYY-MM-DD-your-post-title.md_posts/2026-08-15-lessons-from-scaling-a-team.md - Paste this at the very top of the file, then write your post below it in plain Markdown:
--- title: "Your Post Title Here" date: 2026-08-15 --- Your post content goes here. You can use: - **Bold text** - *Italic text* - Bullet lists like this one - [Links](https://example.com) ## A subheading More paragraphs, as much as you want.
- Commit the file — it will automatically appear on
/blog/, sorted newest-first. No other file needs to be touched.
- First, upload the image itself:
- Go to the
assets/images/folder (create it if it doesn't exist yet, by creating a new file inside it — GitHub will create the folder automatically) - Click "Add file" → "Upload files", drag your image in, commit
- Go to the
- In your blog post's Markdown, reference it like this:

- Edit: open the file in
_posts/, click the pencil icon, edit, commit - Delete: open the file, click the trash/delete icon (or the "..." menu → "Delete file"), commit
- Go to
_data/works.yml - Click the pencil icon to edit
- Add a new block in this exact format (matching the existing entries):
- title: "Your Dashboard or App Name" description: "One or two sentences about what it shows and why it matters." url: "https://public.tableau.com/app/profile/yourname/viz/..." type: "Tableau Public" icon: "📊"
typeis just a label shown as a small tag on the card — use whatever fits:"Tableau Public","Web App","iOS App","Power BI", etc.iconis a single emoji shown on the card — pick anything relevant
- Commit — it appears automatically on
/works/
Delete its block (all lines starting with - for that entry through the next -), commit.
All of this lives in data.js — open it, find the right array, and edit.
Find the EXPERIENCE array and add a new object anywhere in the list (position doesn't matter — entries are automatically sorted newest-first by startDate when the page loads):
{
title: "Your New Title — Company",
company: "Location or team",
startDate: "2026-08-01", // YYYY-MM-DD
endDate: null, // null = current role, or use "YYYY-MM-DD" for a past role
dateLabel: "Aug 2026 – Present",
bullets: [
"First bullet point describing your impact.",
"Second bullet point."
],
},Don't forget the trailing comma after the closing } if it's not the last item in the array.
Find SKILL_CATEGORIES, find the right category (e.g. "Data Platforms"), and add your skill to its items list:
items: ["Snowflake", "SQL Server", "Your New Skill"],Find IMPACT_NUMBERS and edit the num/label values directly:
{ num: "9", label: "Analysts Managed & Mentored" },These live directly in index.html as plain text (not in data.js):
- About paragraph: search for
id="about"in the file — the paragraph text is right there - Contact links: search for
id="contact"— email, phone, and LinkedIn links are listed there
Edit directly in GitHub's editor, same as everywhere else.
- Go to
Yousuf_Sultan_Resume.pdfin the repo - Click the pencil icon → since it's a PDF (not text), GitHub will offer an "Upload files" option instead — use that to upload your new version
- Keep the exact same filename (
Yousuf_Sultan_Resume.pdf, case-sensitive) — the "Download Resume" button on the site links to this exact name, so renaming it will break the link - Commit
You don't need a laptop to add a blog post or a new "Works" entry — the GitHub mobile app handles almost everything.
- Creating new blog posts (
_posts/folder → "Create file") - Editing existing text files (posts,
_data/works.yml,data.js, etc.) - Committing changes
- Open the GitHub app → your repo →
_posts/folder - Tap "+" or the "..." menu → "Create file"
- Name it
YYYY-MM-DD-your-title.md - Type your content (same front matter format as on desktop):
--- title: "Your Post Title" date: 2026-08-01 --- Your content here.
- Tap Commit
Same idea — open _data/works.yml, tap the pencil icon, add your new block, commit.
The GitHub mobile app's text editor doesn't have an image upload button. Workaround: open github.com in your phone's mobile browser (Safari/Chrome) instead of the app when you need to upload an image — the browser version has a proper upload/drag-and-drop button.
Once the image is uploaded to assets/images/, reference it in your post:
| Branch | Purpose |
|---|---|
main |
Production — deploys to GitHub Pages |
backup/v1-enhanced |
Previous portfolio version (pre-redesign backup) |
bundle install
bundle exec jekyll serveOpen http://localhost:4000
Push to main triggers GitHub Pages auto-build:
- Jekyll is natively supported — no extra config needed
- Publishes from root
/ofmainbranch - Site available at
https://ysultankpg.github.io future: trueis set in_config.ymlto handle timezone differences for post dates
To enable: Settings → Pages → Source: Deploy from branch → main / / (root)
Personal portfolio — all rights reserved.