Skip to content
Open
153 changes: 153 additions & 0 deletions src/_data/teamMembers.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
{
"teamMembers": [
{
"name": "Nabarun Pal",
"role": "Chair",
"imagelink": "https://nabarun.dev/images/logo.png",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@anistark Can we not host the images? If the source is gone, it will be lost here as well.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍🏼 Yes, better to host images.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Last IIRC we used github profile images, I suggest using some gravatar or third-party integration then pushing so many images in the repo. I was actually very skeptical about the images we have pushed in this PR as well. Having a 3rd party URL lets the users have control over what images they want us to display.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But that was also the reason the images disappeared after a while.
Better to have images as static asset than disappear later. Unless, its a solid link like an s3 or something.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@anistark okay, but somehow I am not feeling comfortable hosting images like that. 😓

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then can make sure the source is solid. Like if it's someone's personal website, it's their responsibility. But we might lose on history. Say in 10 years, its all blank boxes XD

If it's gravatar, should be fine. Gravatar won't disappear anytime soon. Hopefully! 😅

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But then for gravatar you would need profile to be created, correct?

hosting is the best solution but then I think we can just use GH as well.

"socials": {
"linkedin": "https://linkedin.com/in/palnabarun",
"web": "https://nabarun.dev/",
"github": "https://github.com/palnabarun",
"twitter": "https://twitter.com/theonlynabarun"
}
},
{
"name": "Kumar Anirudha",
"role": "Chair Emeritus",
"imagelink": "https://anirudha.dev/images/half-clear.png",
"socials": {
"insta": "https://www.instagram.com/anistark/",
"linkedin": "https://www.linkedin.com/in/kranirudha/",
"web": "https://anirudha.dev/",
"github": "https://github.com/anistark",
"twitter": "https://x.com/kranirudha"
}
},
{
"name": "Bhavin Gandhi",
"role": "Co-Chair/ Program Committee",
"imagelink": "",
"socials": {
"linkedin": "https://www.linkedin.com/in/bhavin192",
"web": "https://geeksocket.in/",
"github": "https://github.com/bhavin192",
"twitter": "https://x.com/_bhavin192"
}
},
{
"name": "Pratik Anurag",
"role": "Logistics/ CoC/ Volunteer Management",
"imagelink": "https://avatars.githubusercontent.com/u/57359354?v=4",
"socials": {
"insta": "https://www.instagram.com/garunakitarp/",
"linkedin": "https://in.linkedin.com/in/pratik-anurag",
"twitter": "https://x.com/pratikanurag067/"
}
},
{
"name": "Ashish Kumar Mishra",
"role": "Volunteer Management",
"imagelink": "https://in.pycon.org/2024/image/team/ashish_mishra.jpeg",
"socials": {
"insta": "",
"linkedin": "https://www.linkedin.com/in/ashish10677/",
"web": "https://www.ashishkumarmishra.me/",
"github": "https://github.com/ashish10677",
"twitter": "https://twitter.com/ashish10677"
}
},
{
"name": "Farhaan Bukhsh",
"role": "Website & Technology WG Lead",
"imagelink": "https://avatars.githubusercontent.com/u/7670449?s=400&u=bf6eb65bdf25c98310e3711ca1d8b58a84ae47d6&v=4",
"socials": {
"linkedin": "https://www.linkedin.com/in/farhaanbukhsh/",
"web": "https://farhaan.me/",
"github": "http://github.com/farhaanbukhsh",
"twitter": "https://x.com/fhackdroid"
}
},
{
"name": "Arockiaraj Rayappan",
"role": "Program Committee",
"imagelink": "https://in.pycon.org/2024/image/team/arockiaraj.jpg",
"socials": {
"insta": "https://www.instagram.com/arockiaraj_rayappan/",
"linkedin": "https://www.linkedin.com/in/arockiaraj-rayappan/",
"github": "https://github.com/",
"twitter": "https://x.com/arockiaraj1994"
}
},
{
"name": "Rayan Das",
"role": "Ticketing & Registration",
"imagelink": "https://in.pycon.org/2024/image/team/rayan_das.png",
"socials": {
"insta": "https://instagram.com/raydeeam",
"linkedin": "https://www.linkedin.com/in/rayandas",
"twitter": "https://x.com/raydeeam"
}
},
{
"name": "Abishek Mishra",
"role": "Sponsorship",
"imagelink": "https://raw.githubusercontent.com/abhishekmishragithub/Jekyll-site/master/assets/img/abhishek_mishra_001_adv-fotor.png",
"socials": {
"insta": "https://instagram.com/stalwartcoder",
"linkedin": "https://linkedin.com/in/stalwartcoder",
"web": "https://abhishekmishra.dev/about",
"twitter": "https://x.com/stalwartcoder"
}
},
{
"name": "Dhanush Kandhan",
"role": "Website & Technology",
"imagelink": "https://dhanu.pages.dev/me.jpg",
"socials": {
"insta": "https://instagram.com/itsmedhanushk_",
"linkedin": "https://www.linkedin.com/in/dhanushkandhan/",
"web": "https://dhanu.pages.dev/",
"github": "https://github.com/dhanushk-offl",
"twitter": "https://x.com/akadhanu"
}
},
{
"name": "Shabnam",
"role": "Design/CoC",
"imagelink": "https://avatars.githubusercontent.com/u/9293037?v=4",
"socials": {
"linkedin": "https://www.linkedin.com/in/shabnam1/",
"twitter": "https://x.com/iishabbyii"
}
},
{
"name": "Arthi Murali ",
"role": "Content & Communication",
"imagelink": "https://in.pycon.org/2024/image/team/arthi.jpg",
"socials": {
"insta": "https://www.instagram.com/arthi_ishita",
"linkedin": "https://www.linkedin.com/in/meetarthi/",
"twitter": "https://x.com/meetarthi/"
}
},
{
"name": "Surbhi Kathuria",
"role": "Content & Communication",
"imagelink": "/img/team/Surbhi.jpg",
"socials": {
"insta": "https://www.instagram.com/surbhik09/?next=%2F&hl=en",
"linkedin": "https://www.linkedin.com/in/surbhikathuria09",
"github": "https://github.com/SurbhiK-09/"
}
},
{
"name": "Kiritheka Dhanabalan",
"role": "Program Committee",
"imagelink": "/img/team/Kiritheka-Dhanabalan1.jpg",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

absolute urls.

"socials": {
"linkedin": "https://www.linkedin.com/in/kiritheka-dhanabalan",
"github": "https://github.com/kirithekaDhanabalan"
}
}
]
}
38 changes: 24 additions & 14 deletions src/_includes/navbar.njk
Original file line number Diff line number Diff line change
@@ -1,12 +1,21 @@
{% macro navbar(isHomePage = false, env = env) %}
<nav class="w-full flex justify-center {% if isHomePage %}bg-black{% else %}bg-pycon-blue{% endif %} z-50 fixed top-0 left-0 right-0 transition-all duration-500" id="main-navbar">
<div class="w-full max-w-5xl mx-auto px-6 hidden md:block py-3">
<div class="relative flex justify-center items-center h-12 px-6">
<!-- Desktop & Tablet Navbar (768px and up) Optimized -->
<div class="w-full max-w-7xl mx-auto px-4 sm:px-6 hidden md:block py-2 lg:py-3">
<div class="relative flex justify-center items-center h-12 px-2 lg:px-6">
<a href="{{ env.baseUrl }}" class="absolute left-0">
<img src="{{ env.baseUrl }}img/logo.png" alt="PyCon India 2025" class="h-10 w-auto">
<img src="{{ env.baseUrl }}img/logo.png" alt="PyCon India 2025" class="h-8 lg:h-10 w-auto">
</a>
<ul class="flex items-center justify-center w-full gap-8 relative mb-0">
<ul class="flex items-center justify-center w-full gap-3 md:gap-4 lg:gap-6 xl:gap-8 relative mb-0">
{% set menuItems = [
{
"name": "About",
"hasSubmenu": true,
"submenu": [
{"name": "Our Team", "link": "about"},
{"name": "FAQ", "link": "faq"}
]
},
{
"name": "CFP",
"link": "cfp",
Expand Down Expand Up @@ -50,25 +59,25 @@
<li class="relative">
{% if item.hasSubmenu %}
<label for="desktop-menu-radio-{{ loop.index }}"
class="flex items-center gap-1 py-2 px-3 text-white hover:text-[#D7FF7B] text-base font-normal font-['Acid_Grotesk'] leading-tight transition-colors duration-200 cursor-pointer nav-link">
class="flex items-center gap-1 py-2 px-2 md:px-3 text-white hover:text-[#D7FF7B] text-sm md:text-base font-normal font-['Acid_Grotesk'] leading-tight transition-colors duration-200 cursor-pointer nav-link whitespace-nowrap">
{{ item.name }}
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="6" viewBox="0 0 10 6" class="ml-1 fill-current text-gray-400 transition-transform duration-200">
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="6" viewBox="0 0 10 6" class="ml-1 fill-current text-gray-400 transition-transform duration-200 flex-shrink-0">
<path d="M1 1L5 5L9 1" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
</svg>
</label>

<label for="desktop-menu-close-all" class="fixed inset-0 bg-transparent z-0 hidden"></label>

<div class="absolute left-0 top-full mt-1 w-auto invisible opacity-0 transition-all duration-200 z-10 transform origin-top scale-95 dropdown-glass rounded-lg shadow-lg">
<div class="w-full rounded-lg border border-white/10">
<div class="w-full min-w-[200px] rounded-lg border border-white/10">
<div class="w-full flex flex-col">
{% for subitem in item.submenu %}
<div class="w-full p-4 bg-white/90 hover:bg-pycon-lime border-b border-black/10 flex justify-between items-center transition-colors duration-150 first:rounded-t-lg last:rounded-b-lg last:border-b-0">
<a href="{{ env.baseUrl }}{{ subitem.link }}" class="text-gray-800 hover:text-[#4662ff] text-sm font-medium font-['Inter'] leading-tight no-underline dropdown-item block w-full">
<div class="w-full p-3 lg:p-4 bg-white/90 hover:bg-pycon-lime border-b border-black/10 flex justify-between items-center transition-colors duration-150 first:rounded-t-lg last:rounded-b-lg last:border-b-0">
<a href="{{ env.baseUrl }}{{ subitem.link }}" class="text-gray-800 hover:text-[#4662ff] text-xs md:text-sm font-medium font-['Inter'] leading-tight no-underline dropdown-item block w-full">
{{ subitem.name }}
</a>
<div class="size-5 relative overflow-hidden">
<div class="bg-gray-400 hover:bg-pycon-blue w-[5.49px] h-[9.31px] left-[7.50px] top-[5.35px] absolute transition-colors duration-150"></div>
<div class="size-4 lg:size-5 relative overflow-hidden flex-shrink-0">
<div class="bg-gray-400 hover:bg-pycon-blue w-[4px] lg:w-[5.49px] h-[7px] lg:h-[9.31px] left-[6px] lg:left-[7.50px] top-[4px] lg:top-[5.35px] absolute transition-colors duration-150"></div>
</div>
</div>
{% endfor %}
Expand All @@ -78,21 +87,22 @@
{% else %}
<a href="{% if item.isExternal %}{{ item.link }}{% elif item.link and item.link[0] == '#' %}{{ item.link }}{% else %}{{ env.baseUrl }}{{ item.link }}{% endif %}"
{% if item.isExternal %}target="_blank" rel="noopener noreferrer"{% endif %}
class="flex items-center gap-1 py-2 px-3 text-white hover:text-[#D7FF7B] text-base font-normal font-['Acid_Grotesk'] leading-tight transition-colors duration-200 no-underline nav-link">
class="flex items-center gap-1 py-2 px-2 md:px-3 text-white hover:text-[#D7FF7B] text-sm md:text-base font-normal font-['Acid_Grotesk'] leading-tight transition-colors duration-200 no-underline nav-link whitespace-nowrap">
{{ item.name }}
</a>
{% endif %}
</li>
{% endfor %}
</ul>
<div class="absolute right-0">
<a href="{{ env.baseUrl }}tickets" class="font-medium text-black bg-pycon-lime/90 hover:bg-pycon-lime text-sm py-2 px-4 rounded-full transition-all duration-200 no-underline nav-button">
<a href="{{ env.baseUrl }}tickets" class="font-medium text-black bg-pycon-lime/90 hover:bg-pycon-lime text-xs md:text-sm py-2 px-3 md:px-4 rounded-full transition-all duration-200 no-underline nav-button whitespace-nowrap">
Get Tickets
</a>
</div>
</div>
</div>

<!-- Mobile Navbar (below 768px) -->
<div class="flex justify-between items-center px-4 py-3 w-full md:hidden">
<a href="{{ env.baseUrl }}" class="flex items-center z-20">
<img src="{{ env.baseUrl }}img/logo.png" alt="PyCon India 2025" class="h-8 w-auto">
Expand Down Expand Up @@ -120,6 +130,7 @@
</div>
</nav>

<!-- Mobile Menu (unchanged) -->
<div id="mobile-menu" class="fixed inset-0 bg-pycon-blue/95 backdrop-blur-md z-[1000] hidden overflow-auto">
<div class="text-center pt-6 pb-4">
<a href="{{ env.baseUrl }}" class="inline-block">
Expand Down Expand Up @@ -174,7 +185,6 @@
</div>
{% endif %}
{% endfor %}

<div class="mt-6">
<a href="{{ env.baseUrl }}tickets" class="flex justify-center items-center bg-pycon-lime text-black font-medium rounded-lg p-4 text-center w-full no-underline text-base transition-all duration-200 hover:bg-pycon-lime/80">
Get Tickets
Expand Down
Loading