-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
713 lines (653 loc) · 38 KB
/
Copy pathindex.html
File metadata and controls
713 lines (653 loc) · 38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-V4GW9QPZR9"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-V4GW9QPZR9');
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Shruthi R | Software Engineer</title>
<meta name="description" content="Shruthi R - Software Engineer at Microsoft Xbox. Portfolio showcasing software engineering projects and experience.">
<!-- Stylesheets -->
<link rel="stylesheet" href="assets/css/professional.css">
<link rel="stylesheet" href="assets/css/fontawesome-all.min.css">
</head>
<body>
<!-- Navigation -->
<nav class="navbar" id="navbar">
<div class="nav-content">
<a href="#" class="nav-logo">Shruthi R.</a>
<ul class="nav-links" id="navLinks">
<li><a href="#about" class="active">About</a></li>
<li><a href="#experience">Experience</a></li>
<li><a href="#education">Education</a></li>
<li><a href="#projects">What I've Built</a></li>
<li><a href="#resume">Resume</a></li>
</ul>
<div class="nav-social">
<a href="https://github.com/shr100" target="_blank" aria-label="GitHub">
<i class="fab fa-github"></i>
</a>
<a href="https://www.linkedin.com/in/shr-r/" target="_blank" aria-label="LinkedIn">
<i class="fab fa-linkedin-in"></i>
</a>
<button class="theme-toggle" id="themeToggle" aria-label="Toggle dark mode">
<i class="fas fa-moon"></i>
<i class="fas fa-sun"></i>
</button>
</div>
<div class="nav-toggle" id="navToggle">
<span></span>
<span></span>
<span></span>
</div>
</div>
</nav>
<!-- Global Particle Background -->
<canvas id="particleCanvas"></canvas>
<!-- Hero Section -->
<section class="hero" id="hero">
<div class="hero-content">
<div class="hero-text">
<span class="hero-label">Welcome to my portfolio</span>
<h1 class="hero-title">Hi, I'm <span>Shruthi!</span></h1>
<p class="hero-subtitle">Software Engineer @ Microsoft</p>
<div class="hero-buttons">
<a href="#experience" class="btn btn-primary">
<i class="fas fa-briefcase"></i> View Experience
</a>
<a href="files/resume.pdf" class="btn btn-outline" target="_blank">
<i class="fas fa-download"></i> Download Resume
</a>
</div>
</div>
<div class="hero-image">
<img src="images/prof.jpg" alt="Shruthi R - Software Engineer">
</div>
</div>
</section>
<!-- About Section -->
<section class="section" id="about">
<div class="container">
<div class="section-title">
<h2>About Me</h2>
</div>
<div class="about-content">
<div class="about-intro">
<p>
I'm a software engineer who gets genuinely excited about building technology that matters. Right now, I'm at Xbox working across a variety of cool projects; one such example being an artificial intelligence assistant for gaming that over 70% of users tried within a day of launch (still pinching myself about that one). Before gaming, I spent time making online spaces safer through intelligent moderation systems. Prior to that, I helped build cognitive health tools that can detect early signs of Alzheimer's up to 3 years before traditional methods.
</p>
<p>
What drives me? The intersection of complex technical challenges and real human impact. No seriously, whether it's reducing a gamer's frustration, protecting someone from online harm, or giving a family more time with a loved one, that's the work that gets me out of bed. When I'm not coding, you'll probably find me lost in a book (yes, I'm that person who insists books are always better than movies).
</p>
</div>
<h3 style="text-align: center; margin-top: 2rem;">Technical Skills</h3>
<div class="skills-container">
<div class="skill-category-tags">
<h4><i class="fas fa-code"></i> Languages</h4>
<div class="skill-tags">
<span class="skill-tag">Python</span>
<span class="skill-tag">C#</span>
<span class="skill-tag">Java</span>
<span class="skill-tag">C++</span>
<span class="skill-tag">TypeScript</span>
<span class="skill-tag">JavaScript</span>
<span class="skill-tag">React</span>
<span class="skill-tag">HTML</span>
<span class="skill-tag">CSS</span>
</div>
</div>
<div class="skill-category-tags">
<h4><i class="fas fa-robot"></i> ML & AI</h4>
<div class="skill-tags">
<span class="skill-tag">TensorFlow</span>
<span class="skill-tag">PyTorch</span>
<span class="skill-tag">Scikit-Learn</span>
<span class="skill-tag">Keras</span>
<span class="skill-tag">NumPy</span>
<span class="skill-tag">Pandas</span>
<span class="skill-tag">NLTK</span>
<span class="skill-tag">spaCy</span>
</div>
</div>
<div class="skill-category-tags">
<h4><i class="fas fa-cloud"></i> Cloud & DevOps</h4>
<div class="skill-tags">
<span class="skill-tag">AWS</span>
<span class="skill-tag">Azure</span>
<span class="skill-tag">Docker</span>
<span class="skill-tag">Kubernetes</span>
<span class="skill-tag">Terraform</span>
</div>
</div>
<div class="skill-category-tags">
<h4><i class="fas fa-database"></i> Databases</h4>
<div class="skill-tags">
<span class="skill-tag">SQL</span>
<span class="skill-tag">PostgreSQL</span>
<span class="skill-tag">CosmosDB</span>
<span class="skill-tag">DynamoDB</span>
<span class="skill-tag">Redis</span>
</div>
</div>
<div class="skill-category-tags">
<h4><i class="fas fa-plug"></i> APIs & Tools</h4>
<div class="skill-tags">
<span class="skill-tag">REST</span>
<span class="skill-tag">GraphQL</span>
<span class="skill-tag">WebSocket</span>
<span class="skill-tag">Git</span>
<span class="skill-tag">GitHub Copilot</span>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Experience Section -->
<section class="section section-alt" id="experience">
<div class="container">
<div class="section-title">
<h2>Work Experience</h2>
</div>
<div class="experience-timeline">
<!-- Microsoft Gaming AI -->
<div class="experience-item">
<div class="experience-date">
<img src="images/microsoft.jpeg" alt="Microsoft" class="company-logo">
<span class="date">Oct 2024 - Present</span>
</div>
<div class="experience-content">
<h3>Software Engineer 2, AI</h3>
<p class="company">Xbox Personalization</p>
<ul>
<li>Led development of Game Assist, an in-game companion embedded in the Xbox Game Bar and PC app; architected the real-time context pipeline that fuses gameplay screenshots and live Xbox activity to deliver personalized, low-latency assistance, reaching 70% user adoption within 24 hours of launch.</li>
<li>Built Voice Mode for hands-free, in-game support, integrating speech recognition with multimodal context so players get real-time answers without leaving gameplay, cutting troubleshooting time by ~30%.</li>
<li>Engineered Highlight Reels, a background gameplay-capture system for the ROG Xbox Ally X that uses computer vision and gameplay signals to auto-detect standout moments and assemble shareable reels at session end, shipped to Xbox Insiders as Game Highlights (Preview).</li>
</ul>
</div>
</div>
<!-- Microsoft Trust and Safety -->
<div class="experience-item">
<div class="experience-date">
<img src="images/microsoft.jpeg" alt="Microsoft" class="company-logo">
<span class="date">Aug 2022 - Sept 2024</span>
</div>
<div class="experience-content">
<h3>Software Engineer 2</h3>
<p class="company">Xbox Trust and Safety</p>
<ul>
<li>Architected and deployed Small Language Models (SLM) to enable proactive content moderation, increasing detection accuracy by 65% across Xbox platforms.</li>
<li>Enhanced reactive moderation workflows, streamlining internal tools to boost efficiency by 18%, reducing human moderation workload.</li>
<li>Implemented proactive moderation strategies, mitigating spam and fraud threats by nearly 40%, safeguarding Xbox users.</li>
</ul>
</div>
</div>
<!-- Neurotrack -->
<div class="experience-item">
<div class="experience-date">
<img src="images/neurotrack.jpeg" alt="Neurotrack" class="company-logo">
<span class="date">May 2021 - July 2022</span>
</div>
<div class="experience-content">
<h3>Software Engineer</h3>
<p class="company">Neurotrack Technologies Inc.</p>
<ul>
<li>Engineered non-invasive cognitive tests leveraging AWS Microservices, improving early Alzheimer's and dementia detection accuracy, and identifying onset up to 3 years earlier than traditional methods.</li>
<li>Pioneered a coaching service to enhance cognitive health, resulting in a 15% improvement in client cognitive scores, positively impacting 100+ clients within the first 3 months.</li>
<li>Optimized backend infrastructure, improving scalability and reducing server response time by 25%, ensuring seamless user experiences.</li>
</ul>
</div>
</div>
<!-- Mitacs -->
<div class="experience-item">
<div class="experience-date">
<img src="images/mitacs.jpeg" alt="Mitacs" class="company-logo">
<span class="date">Mar 2021 - May 2021</span>
</div>
<div class="experience-content">
<h3>Research Engineer (Mitacs Accelerate)</h3>
<p class="company">Ethically Aligned AI</p>
<ul>
<li>Analyzed literature across different domains in order to produce proof-of-concept for validating ethics in AI.</li>
<li>Iterated proof-of-concept upon feedback from a diverse class of businesses to identify specific business needs for building fair machine learning systems.</li>
<li>Strategized the implementation of a common tool for validating ethics.</li>
</ul>
</div>
</div>
<!-- Famwork -->
<div class="experience-item">
<div class="experience-date">
<img src="images/famwork.jpeg" alt="Famwork" class="company-logo">
<span class="date">Dec 2020 - May 2021</span>
</div>
<div class="experience-content">
<h3>Software Engineer</h3>
<p class="company">Famwork</p>
<ul>
<li>Leveraged statistical and ML algorithmic techniques for integrating machine learning models into electronic health record systems and built a chatbot for the patient portal.</li>
<li>Spearheaded the automation of the telehealth system for the minimum viable product, that was used to forecast diseases the patient was susceptible to acquire, based on his/her medical history.</li>
<li>Strategized the improvement of customer satisfaction by 50%, by automating the EHR system.</li>
</ul>
</div>
</div>
<!-- University of Alberta -->
<div class="experience-item">
<div class="experience-date">
<img src="images/ua.png" alt="University of Alberta" class="company-logo">
<span class="date">Sep 2019 - May 2021</span>
</div>
<div class="experience-content">
<h3>Head Teaching Assistant</h3>
<p class="company">University of Alberta</p>
<ul>
<li><strong>Courses:</strong> Introduction to Foundations of Computing, Computer Networks, Graduate teaching assistant training.</li>
<li>Promoted to head teaching assistant in Spring 2020, prepared graduate TA training material and supervised 10+ TA's.</li>
</ul>
</div>
</div>
<!-- Makesto -->
<div class="experience-item">
<div class="experience-date">
<img src="images/maskup.png" alt="Makesto" class="company-logo">
<span class="date">Summer 2018</span>
</div>
<div class="experience-content">
<h3>Software Engineer</h3>
<p class="company">Makesto Infotech Private Limited</p>
<ul>
<li>Launched a JavaScript plugin, which was used internally for supporting 3D models in the GL Transmission Format.</li>
<li>Established a framework for achieving dimensionality reduction of 3D models by 30%, with minimal data loss, in Python.</li>
<li>Collaborated with a team of 10+ people to maximize retail sales at Target by 80%, incorporating 3D modeling.</li>
</ul>
</div>
</div>
<!-- L&T -->
<div class="experience-item">
<div class="experience-date">
<img src="images/lt.jpeg" alt="L&T Technology Services" class="company-logo">
<span class="date">Summer 2017</span>
</div>
<div class="experience-content">
<h3>Software Engineer</h3>
<p class="company">L&T Technology Services</p>
<ul>
<li>Utilized agile practices and developed the login, sign-up, and deposit pages for the company using HTML5, CSS3, and JavaScript.</li>
<li>Participated in code reviews and contributed to building a complex, scalable software system.</li>
<li>Perfected the existing system by improving security against SQL injection attacks by almost 70%.</li>
</ul>
</div>
</div>
</div>
</div>
</section>
<!-- Education Section -->
<section class="section" id="education">
<div class="container">
<div class="section-title">
<h2>Education</h2>
</div>
<div class="education-grid">
<div class="education-card">
<div class="education-icon">
<i class="fas fa-graduation-cap"></i>
</div>
<h3>M.Sc Computing Science</h3>
<p class="school">University of Alberta, Edmonton</p>
</div>
<div class="education-card">
<div class="education-icon">
<i class="fas fa-graduation-cap"></i>
</div>
<h3>B.E Computer Science</h3>
<p class="school">College of Engineering, Guindy, Anna University</p>
</div>
</div>
</div>
</section>
<!-- Projects Section -->
<section class="section section-alt" id="projects">
<div class="container">
<div class="section-title">
<h2>What I've Built</h2>
</div>
<div class="projects-grid">
<!-- Game Assist -->
<div class="project-card">
<img src="images/game-assist.jpg" alt="Game Assist" class="project-image">
<div class="project-content">
<h3>Game Assist</h3>
<p>Built the ultimate gaming sidekick for Xbox, an AI companion that knows what you're playing and understands your Xbox activity to provide personalized help. I developed features including Voice Mode for hands-free assistance during gameplay, screenshot-based context awareness for real-time support, and proactive coaching. Drove adoption by over 70% of users within a day of launch.</p>
<div class="project-use">
<strong>LEARN MORE:</strong> <a href="https://www.xbox.com/en-US/gaming-copilot" target="_blank">Xbox Game Assist</a> | <a href="https://news.xbox.com/en-us/2025/08/06/gaming-copilot-beta-begins-rolling-out-to-xbox-insiders-on-game-bar-today/" target="_blank">Xbox Wire Announcement</a>
</div>
</div>
</div>
<!-- Highlight Reels -->
<div class="project-card">
<img src="images/highlight-reels.jpg" alt="Highlight Reels" class="project-image">
<div class="project-content">
<h3>Highlight Reels</h3>
<p>Built this gameplay capture feature for the ROG Xbox Ally X, enabling players to automatically clip their standout gaming moments, like epic boss battles and victories, into short replay clips to share with friends. I engineered it on top of Game Assist to capture clips in the background during play and assemble a highlight reel at the end of each session, requiring no additional downloads and never interrupting gameplay. Shipped to Xbox Insiders as Game Highlights (Preview) in the Xbox PC app.</p>
<div class="project-use">
<strong>LEARN MORE:</strong> <a href="https://news.xbox.com/en-us/2026/03/02/xbox-insiders-try-highlight-reels-on-the-rog-xbox-ally-x-starting-today/" target="_blank">Xbox Wire Announcement</a>
</div>
</div>
</div>
<!-- Expense Tracker -->
<div class="project-card">
<img src="images/expense.png" alt="Expense Tracker" class="project-image">
<div class="project-content">
<h3>Expense Tracker</h3>
<p>Built a full-stack personal finance app that turns messy bank and credit-card statements into clear spending insights. I wrote custom PDF parsers that handle multiple bank formats (Amex, Scotiabank, Wealthsimple, Rogers Bank), an auto-categorization engine driven by layered user and global keyword rules, and interactive dashboards for monthly and category-level spending trends. Built with Python and Streamlit, backed by Supabase (Postgres) with user authentication and per-user data isolation.</p>
<div class="project-use">
<strong>USE:</strong> Upload bank and credit-card statement PDFs to automatically parse, categorize, and visualize personal spending trends over time.
</div>
</div>
</div>
<!-- Stock Market Predictor -->
<div class="project-card">
<img src="images/stock.jpeg" alt="Stock Market Predictor" class="project-image">
<div class="project-content">
<h3>Stock Market Predictor</h3>
<p>A machine learning/deep learning project with a web interface used to predict the open price of a particular stock on a given day. Dataset created by scraping Yahoo finance. Created using Python.</p>
<div class="project-use">
<strong>USE:</strong> Used to predict the open price for a stock on a given day. Useful to set the highest price (Limit Buy) to buy a stock.
</div>
</div>
</div>
<!-- Hybrid UI -->
<div class="project-card">
<img src="images/accessible.jpeg" alt="Hybrid UI" class="project-image">
<div class="project-content">
<h3>Hybrid UI - Towards Accessible Computing</h3>
<p>A chrome extension for accessible computing. Improved user accessibility by 65%. Created using Python and tested on a control population of 30 people.</p>
<div class="project-use">
<strong>USE:</strong> Used to improve browser accessibility for people with low vision.
</div>
</div>
</div>
<!-- Knowledge Graphs -->
<div class="project-card">
<img src="images/696_project.png" alt="Knowledge Graphs" class="project-image">
<div class="project-content">
<h3>Relation Extraction in Knowledge Bases</h3>
<p>A Natural Language Processing based project that focuses on relation extraction between a pair of entities in Knowledge Bases using a clustering algorithm. Created using Python and tested on KnowledgeNet relations.</p>
<div class="project-use">
<strong>USE:</strong> Can be used to identify and predict relations between a pair of entities, that can improve search results in Knowledge Bases.
</div>
</div>
</div>
<!-- Visual Aid System -->
<div class="project-card">
<img src="images/braille.jpeg" alt="Visual Aid System" class="project-image">
<div class="project-content">
<h3>Visual Aid System - Patented</h3>
<p>A Visual Aid storytelling system used in story telling sessions for visually challenged children. Consisted of an interactive computer and sensor system and when scenes from stories were fed to the computer, the sensors rose to depict the scene.</p>
<div class="project-use">
<strong>USE:</strong> Enables visually challenged children to feel stories unfolding through their hands.
</div>
</div>
</div>
<!-- NEAL -->
<div class="project-card">
<img src="images/al.png" alt="NEAL" class="project-image">
<div class="project-content">
<h3>Noise Eliminator for Active Learning - NEAL</h3>
<p>An Interactive Machine Learning based algorithm that helps produce automated systems that provide highly accurate predictions, with a low number of training instances. Improved over previous systems by 10%.</p>
<div class="project-use">
<strong>USE:</strong> Can be used to improve predictions of any automated system and needs only a small subset of labelled data to produce stellar results.
</div>
</div>
</div>
<!-- Depression Detection -->
<div class="project-card">
<img src="images/depression.jpeg" alt="Depression Detection" class="project-image">
<div class="project-content">
<h3>Early Detection of Depression Using Linguistic Metadata</h3>
<p>A Machine Learning based project that detects the early onset of depression using the RSDD dataset and processed using Natural Language Processing. Achieved an accuracy of 99%.</p>
<div class="project-use">
<strong>USE:</strong> Can be used to detect depression in individuals and the diagnosed participants can be urged to seek professional help.
</div>
</div>
</div>
<!-- IoT Frailty -->
<div class="project-card">
<img src="images/frail.jpeg" alt="IoT Frailty Assessment" class="project-image">
<div class="project-content">
<h3>Platform to Assess Geriatric Frailty Using Smart Wearable Devices</h3>
<p>An Internet of Things based system that assesses geriatric frailty using four smart devices which can be monitored from afar. Based on a smart condo environment and developed for Withings.</p>
<div class="project-use">
<strong>USE:</strong> Can be used to detect and assess frailty in individuals in real time.
</div>
</div>
</div>
<!-- Lung Cancer -->
<div class="project-card">
<img src="images/lung_cancer.jpeg" alt="Lung Cancer Detection" class="project-image">
<div class="project-content">
<h3>Early Detection and Prediction of Lung Cancer</h3>
<p>A Machine Learning based project which focused on detecting and predicting lung cancer by automatically analyzing CT scans. Created using Python.</p>
<div class="project-use">
<strong>USE:</strong> Can be used to detect lung cancer, given a set of CT scans of the lungs.
</div>
</div>
</div>
<!-- WordPress Plugin -->
<div class="project-card">
<img src="images/plugin.png" alt="WordPress Plugin" class="project-image">
<div class="project-content">
<h3>3D Models WordPress Plugin</h3>
<p>A WordPress plugin to aid the upload of 3D models in the GLTF format, using the URL and file name.</p>
<div class="project-use">
<strong>USE:</strong> Can be used to render 3D models immediately on the web, with Lilliputian loading times.
</div>
</div>
</div>
<!-- Memotion Analysis -->
<div class="project-card">
<img src="images/meme.jpeg" alt="Memotion Analysis" class="project-image">
<div class="project-content">
<h3>Memotion Analysis - SemEval 2020</h3>
<p>Memotion (Meme + Emotion) Analysis is the task of analyzing sentiments from memes, typically posted in various social platforms, and classifying them into positive and negative sentiments. This system represents an approach to extract and analyze embedded texts of a meme from a released data set of a SemEval-2020 task.</p>
<div class="project-use">
<strong>USE:</strong> Can be used for sentiment analysis of memes across social media platforms.
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Resume Section -->
<section class="resume-section" id="resume">
<div class="container">
<h2>Want to know more?</h2>
<p>Like a one-pager? Here's my resume. Let's connect!</p>
<a href="files/resume.pdf" class="btn btn-primary" target="_blank">
<i class="fas fa-download"></i> Download Resume
</a>
</div>
</section>
<!-- Footer -->
<footer class="footer">
<div class="footer-content">
<div class="footer-section">
<h4>Shruthi R</h4>
<p>Software Engineer at Microsoft Xbox<br>Graduate from University of Alberta</p>
<div class="footer-social">
<a href="https://github.com/shr100" target="_blank" aria-label="GitHub">
<i class="fab fa-github"></i>
</a>
<a href="https://www.linkedin.com/in/shr-r/" target="_blank" aria-label="LinkedIn">
<i class="fab fa-linkedin-in"></i>
</a>
</div>
</div>
<div class="footer-section">
<h4>Contact</h4>
<p>
<a href="mailto:rshruthi100@gmail.com">rshruthi100@gmail.com</a>
</p>
</div>
</div>
<div class="footer-bottom">
<p>© 2026 Shruthi R. All rights reserved.</p>
</div>
</footer>
<!-- Scripts -->
<script>
// Navbar scroll effect
window.addEventListener('scroll', function() {
const navbar = document.getElementById('navbar');
if (window.scrollY > 50) {
navbar.classList.add('scrolled');
} else {
navbar.classList.remove('scrolled');
}
});
// Mobile navigation toggle
document.getElementById('navToggle').addEventListener('click', function() {
document.getElementById('navLinks').classList.toggle('active');
});
// Smooth scroll for navigation links
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function(e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
if (target) {
target.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
// Close mobile menu if open
document.getElementById('navLinks').classList.remove('active');
}
});
});
// Active navigation link on scroll
window.addEventListener('scroll', function() {
const sections = document.querySelectorAll('section[id]');
const navLinks = document.querySelectorAll('.nav-links a');
let current = '';
sections.forEach(section => {
const sectionTop = section.offsetTop;
const sectionHeight = section.clientHeight;
if (scrollY >= sectionTop - 200) {
current = section.getAttribute('id');
}
});
navLinks.forEach(link => {
link.classList.remove('active');
if (link.getAttribute('href') === '#' + current) {
link.classList.add('active');
}
});
});
// Theme Toggle
const themeToggle = document.getElementById('themeToggle');
const html = document.documentElement;
// Check for saved theme preference or default to light
const savedTheme = localStorage.getItem('theme') || 'light';
html.setAttribute('data-theme', savedTheme);
themeToggle.addEventListener('click', function() {
const currentTheme = html.getAttribute('data-theme');
const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
html.setAttribute('data-theme', newTheme);
localStorage.setItem('theme', newTheme);
});
// Particle Animation - Full Page
const canvas = document.getElementById('particleCanvas');
const ctx = canvas.getContext('2d');
function resizeCanvas() {
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
}
resizeCanvas();
const particles = [];
const particleCount = 100;
const connectionDistance = 180;
class Particle {
constructor() {
this.x = Math.random() * canvas.width;
this.y = Math.random() * canvas.height;
this.vx = (Math.random() - 0.5) * 0.5;
this.vy = (Math.random() - 0.5) * 0.5;
this.radius = Math.random() * 2 + 1;
}
update() {
this.x += this.vx;
this.y += this.vy;
if (this.x < 0 || this.x > canvas.width) this.vx *= -1;
if (this.y < 0 || this.y > canvas.height) this.vy *= -1;
}
draw() {
const isDark = html.getAttribute('data-theme') === 'dark';
ctx.beginPath();
ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2);
ctx.fillStyle = isDark
? 'rgba(96, 165, 250, 0.8)'
: 'rgba(37, 99, 235, 0.6)';
ctx.fill();
}
}
// Initialize particles
for (let i = 0; i < particleCount; i++) {
particles.push(new Particle());
}
function drawConnections() {
const isDark = html.getAttribute('data-theme') === 'dark';
for (let i = 0; i < particles.length; i++) {
for (let j = i + 1; j < particles.length; j++) {
const dx = particles[i].x - particles[j].x;
const dy = particles[i].y - particles[j].y;
const distance = Math.sqrt(dx * dx + dy * dy);
if (distance < connectionDistance) {
ctx.beginPath();
ctx.moveTo(particles[i].x, particles[i].y);
ctx.lineTo(particles[j].x, particles[j].y);
const opacity = (1 - distance / connectionDistance) * 0.5;
ctx.strokeStyle = isDark
? `rgba(96, 165, 250, ${opacity})`
: `rgba(37, 99, 235, ${opacity})`;
ctx.lineWidth = 1;
ctx.stroke();
}
}
}
}
function animate() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
particles.forEach(particle => {
particle.update();
particle.draw();
});
drawConnections();
requestAnimationFrame(animate);
}
animate();
// Resize handler with debounce
let resizeTimeout;
window.addEventListener('resize', () => {
clearTimeout(resizeTimeout);
resizeTimeout = setTimeout(() => {
resizeCanvas();
// Redistribute particles on resize
particles.forEach(particle => {
if (particle.x > canvas.width) particle.x = Math.random() * canvas.width;
if (particle.y > canvas.height) particle.y = Math.random() * canvas.height;
});
}, 100);
});
// Update canvas height when content changes (for dynamic content)
const resizeObserver = new ResizeObserver(() => {
resizeCanvas();
});
resizeObserver.observe(document.body);
</script>
</body>
</html>