Skip to content

Commit

Permalink
order list alphabetically
Browse files Browse the repository at this point in the history
  • Loading branch information
imran110219 committed Oct 25, 2024
1 parent b7ac54e commit 360ccb5
Show file tree
Hide file tree
Showing 5 changed files with 311 additions and 122 deletions.
167 changes: 144 additions & 23 deletions docs/developer.json
Original file line number Diff line number Diff line change
@@ -1,24 +1,145 @@
[
{
"name": "Asif Al Fattah",
"email": "asifalfattah34@gmail.com",
"linkedin": "https://www.linkedin.com/in/asif-al-fattah/",
"github": "https://github.com/AsifAlFattah",
"experience": "6+ months",
"currentRole": "Junior Backend Developer at Code Prophet",
"skills": ["Java", "Spring Boot", "PostgreSQL", "Docker", "Problem Solving"],
"location": "Khulna, Bangladesh",
"remoteWork": true
},
{
"name": "Izazur Rahman Shafin",
"email": "imshafin97@gmail.com",
"linkedin": "https://www.linkedin.com/in/izazurrahmanshafin",
"github": "https://github.com/imShafin",
"experience": "0+ years",
"currentRole": "Support Engineer at Penta Global Limited",
"skills": ["C++", "Python", "FastAPI"],
"location": "Dhaka, Bangladesh",
"remoteWork": false
}
]
{
"name": "Asif Al Fattah\n",
"email": "asifalfattah34@gmail.com",
"linkedin": "https://linkedin.com/in/asif-al-fattah/",
"github": "https://github.com/AsifAlFattah",
"experience": "6+ months",
"currentRole": "Junior Backend Developer at [Code Prophet](https://www.codeprophet.tech/)",
"skills": "Java, Spring Boot, PostgreSQL, Docker, Problem Solving",
"location": "Khulna, Bangladesh",
"remoteWork": "Yes"
},
{
"name": "Izazur Rahman Shafin\n",
"email": "imshafin97@gmail.com",
"linkedin": "https://linkedin.com/in/izazurrahmanshafin",
"github": "https://github.com/imShafin",
"experience": "0+ years",
"currentRole": "Support Engineer at [Penta Global Limited](https://www.pentabd.com/)",
"skills": "C++, Python, FastAPI",
"location": "Dhaka, Bangladesh",
"remoteWork": "No"
},
{
"name": "Mazhar Ibna Zahur\n",
"email": "mazhar.shapnil@gmail.com",
"linkedin": "https://linkedin.com/in/mazhar1322",
"github": "https://github.com/mazharku",
"experience": "5+ years",
"currentRole": "Senior Software Engineer at [Tiller](https://tiller.com.bd/)",
"skills": "Java(7-21),Spring Boot,Quarkus,Kotlin,Docker,DevOps",
"location": "Dhaka, Bangladesh",
"remoteWork": "Yes"
},
{
"name": "Md Emarat Hossain\n",
"email": "emarathossain00@gmail.com",
"linkedin": "https://linkedin.com/in/emarat/",
"github": "https://github.com/Emarat",
"experience": "2+ years",
"currentRole": "Product Manager at [Penta Global Limited](https://www.pentabd.com/)\n- **Skills**:\n- Technical Expertise: Background in development (Flutter, full-stack) and knowledge of PostgreSQL, Python, and SQL.\n- User-Centric Focus: Ability to understand user needs and improve product experiences.\n- Project Leadership: Experience leading projects, managing teams, and coordinating across functions.\n- Communication & Collaboration: Strong cross-functional collaboration and continuous improvement in communication.\n- Adaptability & Continuous Learning: Committed to learning new tools (like SQA) and adapting to evolving challenges.\n- **Location**: Dhaka, Bangladesh\n- **Remote Work**: No\n\n### Md Mashuqur Rahman\n\n- **Email**: mashuq0068@gmail.com\n- **LinkedIn**: [linkedin.com/in/Mashuq](https://www.linkedin.com/in/md-mashuqur-rahman-3aaab8260/)\n- **GitHub**: [github.com/Mashuq](https://github.com/mashuq0068)\n- **Experience**: 6+ months\n- **Current Role**: Junior Frontend Developer at [Code Prophet](https://codeprophet.tech/)",
"skills": "JavaScript, React, Node Js, Express Js",
"location": "Khulna, Bangladesh",
"remoteWork": "Yes"
},
{
"name": "Md Mazahrul Islam\n",
"email": "mazharul.saurav255@gmail.com",
"linkedin": "https://linkedin.com/in/Mazharul",
"github": "https://github.com/Mazharul",
"experience": "1+ years",
"currentRole": "Assistant Software Engineer at [IDLC Finance PLC](https://idlc.com/)",
"skills": "JavaScript, C++, React, Node Js, Express Js, Python",
"location": "Dhaka, Bangladesh",
"remoteWork": "Yes"
},
{
"name": "Md Sanoarul Islam\n",
"email": "sanoarul123gmail.com",
"linkedin": "https://linkedin.com/in/md-sanoarul-islam-523942207",
"github": "https://github.com/sanoarul123",
"experience": "6+ months",
"currentRole": "Junior Backend Developer at [Code Prophet](https://www.codeprophet.tech/)",
"skills": "Java, Spring Boot, Python, RestAPIs, PostgreSQL",
"location": "Khulna, Bangladesh",
"remoteWork": "Yes"
},
{
"name": "Md Shahjahan\n",
"email": "shahjahan.cseku11@gmail.com",
"linkedin": "https://linkedin.com/in/shahjahan",
"github": "https://github.com/shahjahan48",
"experience": "8+ years",
"currentRole": "Senior Software Engineer at [Dohatec New Media](https://www.dohatec.com/)",
"skills": "Java, Spring Boot, C#, ASP.NET MVC, ASP.NET Core, MSSQL, MySQL, Microservice, Angular, Docker, DevOps",
"location": "Dhaka, Bangladesh",
"remoteWork": "Yes"
},
{
"name": "Mohammad Imrul Hasan",
"email": "viimrul@gmail.com",
"linkedin": "https://imrull",
"github": "https://vimrul",
"experience": "13+ years",
"currentRole": "DevOps Engineer at [Penta Global Limited](https://pentaglobal.com)",
"skills": "Cloud Platforms (AWS, Azure), Docker, Kubernetes, CI/CD (Jenkins, GitLab, ArgoCD), Monitoring (Prometheus, Grafana, Uptime Kuma, OpenTelemetry), ELK Stack, PostgreSQL, MySQL, Redis, DragonflyDB, StackGres, Networking (Istio, Calico, Kiali), Identity Management (Keycloak), Web Servers (Nginx, Apache, Apache Tomcat), Version Control (GitHub)",
"location": "Dhaka, Bangladesh",
"remoteWork": "Yes"
},
{
"name": "Mullah Mohammad Shahjalal",
"email": "shahjalal2075@gmail.com",
"linkedin": "https://linkedin.com/in/shahjalal2075",
"github": "https://github.com/Shahjalal2075",
"experience": "1+ years",
"currentRole": "Full Stack Developer at [Naim IT](https://naimit.ca)",
"skills": "JavaScript, React Js, React Native, Node Js, Express Js, MongoDB, Problem Solving",
"location": "Jashore, Bangladesh",
"remoteWork": "Yes"
},
{
"name": "Nandan Kumar Das\n",
"email": "nandandas.ku@gmail.com",
"linkedin": "https://linkedin.com/in/nandan-kumar-das",
"github": "https://github.com/nandan-kumar-das",
"experience": "6+ years",
"currentRole": "Senior Software Engineer at [Dizi Nova Limited](http://dizinova.com/)",
"skills": ".NET Framework, .NET Core, React, MSSQL, MongoDB, Android, Flutter",
"location": "Dhaka, Bangladesh",
"remoteWork": "No"
},
{
"name": "Nishanul Nishat\n",
"email": "nishanul.nishat@example.com",
"linkedin": "https://linkedin.com/in/nishanul-nishat",
"github": "https://github.com/nishat1098",
"experience": "2.5+ years",
"currentRole": "Senior Software Engineer at [Penta Global Limited](https://www.pentabd.com/)",
"skills": "Java, Spring Boot, Python, FastAPI, Django, Kubernetes, DevOps",
"location": "Dhaka, Bangladesh",
"remoteWork": "Yes"
},
{
"name": "Sadman Sobhan\n",
"email": "imran110219@gmail.com",
"linkedin": "https://linkedin.com/in/sadman",
"github": "https://github.com/sadmansobhan",
"experience": "8+ years",
"currentRole": "Senior Software Engineer at [Penta Global Limited](https://www.pentabd.com/)",
"skills": "Java, Spring Boot, Kubernetes, DevOps",
"location": "Dhaka, Bangladesh",
"remoteWork": "Yes"
},
{
"name": "Zahid Hasan\n",
"email": "zahidhasanpapon@gmail.com",
"linkedin": "https://linkedin.com/in/zahidhasanpapon/",
"github": "https://github.com/zahidhasanpapon",
"experience": "2+ years",
"currentRole": "Software Engineer at [Penta Global Limited](https://www.pentabd.com/)",
"skills": "Java, Spring Boot, Python, Django, Docker, Redis, RabbitMQ",
"location": "Dhaka, Bangladesh",
"remoteWork": "Yes"
}
]
84 changes: 48 additions & 36 deletions docs/extract_developers.py
Original file line number Diff line number Diff line change
@@ -1,43 +1,55 @@
import json
import re
import os
import json

# Read the README.md file
with open('README.md', 'r') as file:
readme_content = file.read()
def read_profiles(filename):
# Specify the path to README.md in the root folder
filepath = os.path.join(os.path.dirname(__file__), '..', filename)

# Define a regex pattern to extract developer details
developer_pattern = re.compile(
r'### (.+?)\n'
r'- \*\*Email\*\*: (.+?)\n'
r'- \*\*LinkedIn\*\*: \[(.+?)\]\((.+?)\)\n'
r'- \*\*GitHub\*\*: \[(.+?)\]\((.+?)\)\n'
r'- \*\*Experience\*\*: (.+?)\n'
r'- \*\*Current Role\*\*: (.+?)\n'
r'- \*\*Skills\*\*: (.+?)\n'
r'- \*\*Location\*\*: (.+?)\n'
r'- \*\*Remote Work\*\*: (.+?)\n',
re.MULTILINE
)
with open(filepath, 'r') as file:
content = file.read()

# Extract developer details
developers = []
for match in developer_pattern.finditer(readme_content):
developers.append({
'name': match.group(1).strip(),
'email': match.group(2).strip(),
'linkedin': match.group(3).strip(),
'linkedin_url': match.group(4).strip(),
'github': match.group(5).strip(),
'github_url': match.group(6).strip(),
'experience': match.group(7).strip(),
'current_role': match.group(8).strip(),
'skills': match.group(9).strip().split(', '), # Split skills into a list
'location': match.group(10).strip(),
'remote_work': match.group(11).strip()
})
# Regular expression to capture profile fields
profile_pattern = re.compile(
r'### (.+?)\n' # Capture the name
r'- \*\*Email\*\*: (.+?)\n' # Capture email
r'- \*\*LinkedIn\*\*: \[(.+?)\]\(https?://.+?\)\n' # Capture only LinkedIn link text
r'- \*\*GitHub\*\*: \[(.+?)\]\(https?://.+?\)\n' # Capture only GitHub link text
r'- \*\*Experience\*\*: (.+?)\n' # Capture experience
r'- \*\*Current Role\*\*: (.+?)\n' # Capture current role
r'- \*\*Skills\*\*: (.+?)\n' # Capture skills
r'- \*\*Location\*\*: (.+?)\n' # Capture location
r'- \*\*Remote Work\*\*: (.+?)\n',# Capture remote work
re.DOTALL # Match across multiple lines
)

# Find all profiles in the content
profiles = profile_pattern.findall(content)

# Write to developer.json
# Process and print each profile
profile_data = []
for profile in profiles:
name, email, linkedin, github, experience, role, skills, location, remote = profile
profile_data.append({
'name': name,
'email': email,
'linkedin': f'https://{linkedin}',
'github': f'https://{github}',
'experience': experience,
'currentRole': role,
'skills': skills,
'location': location,
'remoteWork': remote
})

return profile_data

# Run the function
profiles = read_profiles('README.md')
developers = []
for profile in profiles:
print(profile)
developers.append(profile)
# Write to developer.json in the docs folder
with open('developer.json', 'w') as json_file:
json.dump(developers, json_file, indent=4)

print(f'Extracted {len(developers)} developers.')
68 changes: 27 additions & 41 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,52 +3,38 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bangladeshi Tech Professionals Worldwide</title>
<link rel="stylesheet" href="styles.css"> <!-- Link to your CSS file for styling -->
<title>Bangladeshi Tech People</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="container">
<h1>Bangladeshi Tech Professionals Worldwide</h1>
<p>A list of Bangladeshi tech professionals working around the world.</p>
<div id="developer-list" class="developer-list"></div>
</div>
<header>
<h1>Bangladeshi Tech Professionals Worldwide</h1>
<p>A list of Bangladeshi tech professionals working around the world.</p>
</header>

<script>
async function fetchDevelopers() {
try {
const response = await fetch('developer.json');
const developers = await response.json();
displayDevelopers(developers);
} catch (error) {
console.error('Error fetching developer data:', error);
}
}
<!-- <div class="profile-container">-->
<!-- &lt;!&ndash; Sample Profile Card Structure, repeat for each developer &ndash;&gt;-->
<!-- <div class="profile-card">-->
<!-- <h2>Asif Al Fattah</h2>-->
<!-- <p><strong>Email:</strong> asifalfattah34@gmail.com</p>-->
<!-- <p><strong>Experience:</strong> 6+ months</p>-->
<!-- <p><strong>Current Role:</strong> Junior Backend Developer at <a href="https://www.codeprophet.tech/" target="_blank">Code Prophet</a></p>-->
<!-- <p><strong>Skills:</strong> Java, Spring Boot, PostgreSQL, Docker, Problem Solving</p>-->
<!-- <p><strong>Location:</strong> Khulna, Bangladesh</p>-->
<!-- <p><strong>Remote Work:</strong> Yes</p>-->
<!-- <div class="profile-links">-->
<!-- <a href="https://www.linkedin.com/in/asif-al-fattah/" target="_blank">LinkedIn</a>-->
<!-- <a href="https://github.com/AsifAlFattah" target="_blank">GitHub</a>-->
<!-- </div>-->
<!-- </div>-->

function displayDevelopers(developers) {
const developerList = document.getElementById('developer-list');
<!-- &lt;!&ndash; Repeat the profile-card div for each engineer's data &ndash;&gt;-->
<!-- </div>-->

developers.forEach(developer => {
const card = document.createElement('div');
card.className = 'card';
<div class="profile-container" id="profile-container">
<!-- Profiles will be inserted here by JavaScript -->
</div>

card.innerHTML = `
<h2>${developer.name}</h2>
<p><strong>Email:</strong> <a href="mailto:${developer.email}">${developer.email}</a></p>
<p><strong>LinkedIn:</strong> <a href="${developer.linkedin}" target="_blank">${developer.linkedin}</a></p>
<p><strong>GitHub:</strong> <a href="${developer.github}" target="_blank">${developer.github}</a></p>
<p><strong>Experience:</strong> ${developer.experience}</p>
<p><strong>Current Role:</strong> ${developer.currentRole}</p>
<p><strong>Skills:</strong> ${developer.skills.join(', ')}</p>
<p><strong>Location:</strong> ${developer.location}</p>
<p><strong>Remote Work:</strong> ${developer.remoteWork ? 'Yes' : 'No'}</p>
`;

developerList.appendChild(card);
});
}

// Fetch developers when the page loads
window.onload = fetchDevelopers;
</script>
<script src="script.js"></script>
</body>
</html>
33 changes: 33 additions & 0 deletions docs/script.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
// script.js
async function loadProfiles() {
try {
const response = await fetch('developer.json');
const developers = await response.json();
const container = document.getElementById('profile-container');

developers.forEach(developer => {
const profileCard = document.createElement('div');
profileCard.classList.add('profile-card');

profileCard.innerHTML = `
<h2>${developer.name}</h2>
<p><strong>Email:</strong> ${developer.email}</p>
<p><strong>Experience:</strong> ${developer.experience}</p>
<p><strong>Current Role:</strong> ${developer.role}</p>
<p><strong>Skills:</strong> ${developer.skills}</p>
<p><strong>Location:</strong> ${developer.location}</p>
<p><strong>Remote Work:</strong> ${developer.remoteWork}</p>
<div class="profile-links">
<a href="${developer.linkedin}" target="_blank">LinkedIn</a>
<a href="${developer.github}" target="_blank">GitHub</a>
</div>
`;
container.appendChild(profileCard);
});
} catch (error) {
console.error('Error loading developer profiles:', error);
}
}

// Load profiles on page load
document.addEventListener('DOMContentLoaded', loadProfiles);
Loading

0 comments on commit 360ccb5

Please sign in to comment.