Skip to content

Commit 48d7b8d

Browse files
CopilotAmmarAhm3d
andauthored
Rebrand portfolio as Agentic AI Consultant with new sections and features (#5)
* Initial plan * Update all references from old username to new username and add redirect Co-authored-by: AmmarAhm3d <125185290+AmmarAhm3d@users.noreply.github.com> * Refactor redirect to use DOM manipulation instead of document.write() Co-authored-by: AmmarAhm3d <125185290+AmmarAhm3d@users.noreply.github.com> * Rebuild with Astro: new hero tagline, case studies, Calendly booking, WhatsApp button Co-authored-by: AmmarAhm3d <125185290+AmmarAhm3d@users.noreply.github.com> * Fix username references in Header, favicon-instructions, and copilot-instructions Co-authored-by: AmmarAhm3d <125185290+AmmarAhm3d@users.noreply.github.com> * Improve WhatsApp floating button, reduce hero text size, and enhance typography Co-authored-by: AmmarAhm3d <125185290+AmmarAhm3d@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: AmmarAhm3d <125185290+AmmarAhm3d@users.noreply.github.com>
1 parent 12f9c4d commit 48d7b8d

File tree

16 files changed

+569
-125
lines changed

16 files changed

+569
-125
lines changed

.github/copilot-instructions.md

Lines changed: 41 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,45 @@
1-
<!-- Copilot / AI coding agent instructions for AmmarAhmedl200961.github.io -->
2-
# Quick Agent Guide — AmmarAhmedl200961.github.io
3-
4-
This repository is a simple personal GitHub Pages site. The guidance below is focused, actionable, and specific to this codebase so an AI coding agent can be immediately productive.
5-
6-
1) Big picture
7-
- Purpose: a static personal site (portfolio/resume) hosted on GitHub Pages.
8-
- Entry point: `index.html` is the canonical site source (full HTML document). Styling is in `styles.css`.
9-
- Jekyll hint: `_config.yml` references a `remote_theme: pages-themes/cayman@v0.2.0`. However, the repo contains a full `index.html` which takes precedence for the site's content.
10-
11-
2) Key files and what to change
12-
- `index.html`: edit content, sections, links, and project entries. Projects live in the `<section id="projects">` list — add `<li>` items there.
13-
- `styles.css`: site styling and color palette. Keep class names and structure consistent with the HTML.
14-
- `_config.yml`: contains the remote theme setting. Avoid changing unless you understand GitHub Pages/Jekyll implications.
15-
- `README.md`: repo description.
16-
- Static assets (images): referenced from the repository root (e.g., `IMG-20191018-WA0004.jpg`). Add images to repo root or update paths accordingly.
17-
18-
3) Developer workflows (how to preview and validate changes)
19-
- Fast static preview (no Jekyll required): run from repo root:
20-
- `python3 -m http.server 8000` then open `http://localhost:8000`.
21-
- Jekyll preview (optional): `_config.yml` indicates use of a remote theme. There is no `Gemfile` in this repo, so the Jekyll workflow is optional — if you need theme rendering locally, add a `Gemfile` and install bundler, then:
22-
- `bundle install`
23-
- `bundle exec jekyll serve --livereload`
24-
Note: GitHub Pages will build the site on push; local Jekyll preview requires adding the appropriate dependencies.
25-
26-
4) Conventions & patterns to follow
27-
- Keep `index.html` as the single-page source; the repo uses direct HTML rather than templates/partials.
28-
- Use CDN links already present (Bootstrap, shields) unless replacing with local assets — updating CDNs changes load characteristics and should be tested.
29-
- Images are referenced with relative paths from the repo root. Verify file names and case-sensitivity (Linux filesystem).
30-
31-
5) Integration points, external dependencies, and links
32-
- External CDNs: Bootstrap CSS and shields (badges) are loaded from external URLs in `index.html`.
33-
- External projects: project links point to other GitHub repos — do not rewrite those unless intentionally redirecting.
34-
35-
6) Safe, repository-specific edit examples
36-
- Add a project entry (inside `<section id="projects">`):
37-
38-
```html
39-
<li>
40-
<strong><a href="https://github.com/OWNER/REPO">Project Title</a></strong>
41-
<p>One-line description. Keep formatting consistent with existing items.</p>
42-
</li>
1+
<!-- Copilot / AI coding agent instructions for AmmarAhm3d.github.io -->
2+
# Quick Agent Guide — AmmarAhm3d.github.io
3+
4+
Personal portfolio site for Ammar Ahmed - Agentic AI Consultant.
5+
6+
## Tech Stack
7+
- **Astro** - Fast static site generator
8+
- **React** - Interactive components
9+
- **Tailwind CSS** - Styling
10+
- **Framer Motion** - Animations
11+
- **Three.js** - 3D graphics
12+
13+
## Project Structure
14+
- `src/pages/` - Astro pages
15+
- `src/components/` - React components (Hero, CaseStudies, Skills, Timeline, Projects, Booking, Footer, WhatsAppButton)
16+
- `src/layouts/` - Layout templates
17+
- `src/utils/` - Utility functions (GitHub API)
18+
- `public/` - Static assets
19+
20+
## Key Features
21+
- Hero section with tagline "I build Agentic AI systems that replace entire teams"
22+
- Case studies with realistic metrics
23+
- Tech stack and skills display
24+
- Education and experience timeline
25+
- GitHub projects integration
26+
- Calendly embed for booking consultations
27+
- WhatsApp floating button
28+
29+
## Development
30+
```bash
31+
npm install
32+
npm run dev
4333
```
4434

45-
- Add an image: put the image file at repo root (e.g., `assets/my-photo.jpg` or root), then reference `src="assets/my-photo.jpg"` and commit both the HTML and image together.
46-
47-
7) What to avoid or watch for
48-
- Don't remove or alter `_config.yml` remote_theme without validating local builds — it can change theme behavior on GitHub Pages.
49-
- Watch image filenames and paths (case-sensitive). If images show 404 in browser, confirm file is committed and path matches exactly.
50-
51-
8) No tests / CI
52-
- This repository contains no test suite or CI. Validate changes with a local static server and browser checks (console errors, 404s).
35+
## Build
36+
```bash
37+
npm run build
38+
```
5339

54-
9) Commit and PR guidance for agents
55-
- Make small, atomic commits (one logical change per PR). Title PRs clearly (e.g., "Add new project: Film Recommendation System").
56-
- For content changes, include a screenshot or link to a deployed preview in the PR description when possible.
40+
Static output to `dist/` directory for GitHub Pages.
5741

58-
If anything here is unclear or you'd like more examples (e.g., sample PR body, suggested `Gemfile` for Jekyll preview), tell me which part to expand and I will iterate.
42+
## Links
43+
- Calendly: calendly.com/ammarahm3d
44+
- WhatsApp: +923365442539
45+
- GitHub: github.com/AmmarAhm3d

README.md

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,26 @@
1-
# AmmarAhmedl200961.github.io
1+
# AmmarAhm3d.github.io
22

3-
Welcome to my personal portfolio site - built with Astro, React, and Three.js.
3+
Personal portfolio site - Agentic AI Consultant
4+
5+
**"I build Agentic AI systems that replace entire teams"**
46

57
## Tech Stack
68

7-
- **Astro** - Static site generator
9+
- **Astro** - Fast static site generator
810
- **React** - Interactive components
911
- **Tailwind CSS** - Styling
10-
- **Three.js** - 3D graphics
1112
- **Framer Motion** - Animations
13+
- **Three.js** - 3D graphics
14+
15+
## Features
16+
17+
- Hero with compelling tagline and stats
18+
- Case studies showcasing AI automation projects
19+
- Tech stack and skills display
20+
- Education and experience timeline
21+
- GitHub projects integration
22+
- Calendly integration for booking consultations
23+
- WhatsApp floating button for quick contact
1224

1325
## Development
1426

@@ -23,4 +35,7 @@ npm run dev
2335
npm run build
2436
```
2537

26-
The built site will be in the `dist/` directory.
38+
## Links
39+
40+
- Calendly: [calendly.com/ammarahm3d](https://calendly.com/ammarahm3d)
41+
- WhatsApp: [+92 336 5442539](https://api.whatsapp.com/send/?phone=%2B923365442539)

astro.config.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import tailwind from '@astrojs/tailwind';
44

55
// https://astro.build/config
66
export default defineConfig({
7-
site: 'https://ammarahmedl200961.github.io',
7+
site: 'https://ammarahm3d.github.io',
88
integrations: [
99
react(),
1010
tailwind({

public/favicon-instructions.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ To see the favicon:
33
2. Close and reopen the browser tab
44
3. Or use incognito/private mode
55

6-
The favicon.svg is live at: https://ammarahmedl200961.github.io/favicon.svg
6+
The favicon.svg is live at: https://ammarahm3d.github.io/favicon.svg

src/components/About.jsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -59,24 +59,24 @@ const About = () => {
5959
animate={isInView ? "visible" : "hidden"}
6060
>
6161
{/* Section Header */}
62-
<motion.div variants={itemVariants} className="text-center mb-16">
63-
<h2 className="text-5xl md:text-6xl font-bold text-white mb-6">
62+
<motion.div variants={itemVariants} className="text-center mb-12">
63+
<h2 className="text-3xl md:text-4xl lg:text-5xl font-bold text-white mb-4">
6464
About <span className="bg-clip-text text-transparent bg-gradient-to-r from-accent to-neon-blue">Me</span>
6565
</h2>
66-
<div className="w-24 h-1 bg-gradient-to-r from-accent to-neon-blue mx-auto mb-8"></div>
66+
<div className="w-20 h-1 bg-gradient-to-r from-accent to-neon-blue mx-auto mb-6"></div>
6767
</motion.div>
6868

6969
{/* Main Bio */}
70-
<motion.div variants={itemVariants} className="mb-16">
71-
<div className="bg-white/5 backdrop-blur-lg rounded-2xl p-8 md:p-12 border border-white/10 shadow-[0_0_50px_rgba(0,255,136,0.1)]">
72-
<p className="text-xl md:text-2xl text-gray-300 leading-relaxed mb-6">
70+
<motion.div variants={itemVariants} className="mb-12">
71+
<div className="bg-white/5 backdrop-blur-lg rounded-2xl p-6 md:p-10 border border-white/10 shadow-[0_0_50px_rgba(0,255,136,0.1)]">
72+
<p className="text-lg md:text-xl text-gray-300 leading-relaxed mb-4">
7373
Aspiring <span className="text-accent font-semibold">Data Scientist</span> with expertise in{' '}
7474
<span className="text-neon-blue font-semibold">machine learning</span>,{' '}
7575
<span className="text-neon-purple font-semibold">deep learning</span>,{' '}
7676
<span className="text-accent font-semibold">NLP</span>, and{' '}
7777
<span className="text-neon-blue font-semibold">cloud computing</span>.
7878
</p>
79-
<p className="text-lg md:text-xl text-gray-400 leading-relaxed mb-6">
79+
<p className="text-base md:text-lg text-gray-400 leading-relaxed mb-4">
8080
Passionate about leveraging data to solve complex problems and deliver{' '}
8181
<span className="text-accent font-semibold">actionable insights</span> that drive real-world impact.
8282
From neural networks to generative models, I transform data into intelligent systems.

src/components/Booking.jsx

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
import { motion, useInView } from 'framer-motion';
2+
import { useRef, useEffect, useState } from 'react';
3+
import { Calendar, Clock, CheckCircle } from 'lucide-react';
4+
5+
const Booking = () => {
6+
const ref = useRef(null);
7+
const isInView = useInView(ref, { once: true, margin: "-100px" });
8+
const [isCalendlyLoaded, setIsCalendlyLoaded] = useState(false);
9+
10+
useEffect(() => {
11+
const script = document.createElement('script');
12+
script.src = 'https://assets.calendly.com/assets/external/widget.js';
13+
script.async = true;
14+
script.onload = () => setIsCalendlyLoaded(true);
15+
document.body.appendChild(script);
16+
17+
return () => {
18+
const existingScript = document.querySelector('script[src="https://assets.calendly.com/assets/external/widget.js"]');
19+
if (existingScript) {
20+
document.body.removeChild(existingScript);
21+
}
22+
};
23+
}, []);
24+
25+
const benefits = [
26+
"Discover AI automation opportunities in your business",
27+
"Get a custom implementation roadmap",
28+
"Learn about realistic ROI expectations",
29+
"No commitment required"
30+
];
31+
32+
return (
33+
<section id="booking" ref={ref} className="py-24 px-4 bg-gradient-to-br from-secondary via-dark-bg to-primary relative overflow-hidden">
34+
<div className="absolute top-0 left-1/4 w-96 h-96 bg-accent/10 rounded-full blur-[150px]" />
35+
<div className="absolute bottom-0 right-1/4 w-96 h-96 bg-neon-purple/10 rounded-full blur-[150px]" />
36+
37+
<div className="max-w-7xl mx-auto relative z-10">
38+
<motion.div
39+
initial={{ opacity: 0, y: 20 }}
40+
animate={isInView ? { opacity: 1, y: 0 } : {}}
41+
transition={{ duration: 0.6 }}
42+
className="text-center mb-16"
43+
>
44+
<div className="inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-accent/10 border border-accent/30 text-accent text-xs font-medium mb-4">
45+
<Calendar size={14} />
46+
Free Consultation
47+
</div>
48+
<h2 className="text-2xl md:text-3xl lg:text-4xl font-bold text-white mb-4">
49+
Book Your <span className="bg-clip-text text-transparent bg-gradient-to-r from-accent to-neon-blue">Free 15-min</span> AI Consultation
50+
</h2>
51+
<p className="text-base md:text-lg text-gray-400 max-w-2xl mx-auto">
52+
Let's discuss how AI agents can transform your business operations
53+
</p>
54+
</motion.div>
55+
56+
<div className="grid lg:grid-cols-2 gap-12 items-start">
57+
{/* Benefits */}
58+
<motion.div
59+
initial={{ opacity: 0, x: -50 }}
60+
animate={isInView ? { opacity: 1, x: 0 } : {}}
61+
transition={{ delay: 0.2, duration: 0.6 }}
62+
>
63+
<h3 className="text-2xl font-bold text-white mb-8">
64+
What you'll get from this call:
65+
</h3>
66+
<div className="space-y-6">
67+
{benefits.map((benefit, index) => (
68+
<motion.div
69+
key={index}
70+
initial={{ opacity: 0, x: -20 }}
71+
animate={isInView ? { opacity: 1, x: 0 } : {}}
72+
transition={{ delay: 0.3 + index * 0.1, duration: 0.5 }}
73+
className="flex items-start gap-4"
74+
>
75+
<div className="w-8 h-8 rounded-full bg-accent/20 flex items-center justify-center flex-shrink-0 mt-0.5">
76+
<CheckCircle size={18} className="text-accent" />
77+
</div>
78+
<p className="text-lg text-gray-300">{benefit}</p>
79+
</motion.div>
80+
))}
81+
</div>
82+
83+
<motion.div
84+
initial={{ opacity: 0, y: 20 }}
85+
animate={isInView ? { opacity: 1, y: 0 } : {}}
86+
transition={{ delay: 0.7, duration: 0.5 }}
87+
className="mt-12 p-6 bg-gradient-to-r from-accent/10 to-neon-blue/10 border border-accent/20 rounded-2xl"
88+
>
89+
<div className="flex items-center gap-3 mb-4">
90+
<Clock size={24} className="text-accent" />
91+
<span className="text-xl font-bold text-white">15 Minutes</span>
92+
</div>
93+
<p className="text-gray-400">
94+
Quick, focused call to understand your needs and explore possibilities.
95+
No sales pitch, just honest advice.
96+
</p>
97+
</motion.div>
98+
</motion.div>
99+
100+
{/* Calendly Embed */}
101+
<motion.div
102+
initial={{ opacity: 0, x: 50 }}
103+
animate={isInView ? { opacity: 1, x: 0 } : {}}
104+
transition={{ delay: 0.4, duration: 0.6 }}
105+
className="bg-white/5 backdrop-blur-sm rounded-2xl border border-white/10 overflow-hidden"
106+
>
107+
<div
108+
className="calendly-inline-widget"
109+
data-url="https://calendly.com/ammarahm3d?hide_gdpr_banner=1&background_color=0a0e27&text_color=ffffff&primary_color=00ff88"
110+
style={{ minWidth: '320px', height: '700px' }}
111+
/>
112+
{!isCalendlyLoaded && (
113+
<div className="flex items-center justify-center h-[700px]">
114+
<div className="text-center">
115+
<div className="w-12 h-12 border-4 border-accent/30 border-t-accent rounded-full animate-spin mx-auto mb-4" />
116+
<p className="text-gray-400">Loading calendar...</p>
117+
</div>
118+
</div>
119+
)}
120+
</motion.div>
121+
</div>
122+
</div>
123+
</section>
124+
);
125+
};
126+
127+
export default Booking;

0 commit comments

Comments
 (0)