Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# New Member Profile

## About You

**Name:** [Your Name]
**GitHub Username:** @[your-username]
**Location:** [Your Location]

## Checklist

Please ensure your PR meets the following requirements:

- [ ] I've copied `members/example-profile.md` to `members/[my-github-username].md`
- [ ] I've filled in all sections of my profile
- [ ] My profile follows the template structure
- [ ] I've read and agree to follow the [Code of Conduct](../CODE_OF_CONDUCT.md)
- [ ] I've read the [Contributing Guidelines](../CONTRIBUTING.md)

## Additional Information

Feel free to add any additional context about yourself or your interests below:

---

Welcome to Developers Global! 🌍✨
40 changes: 40 additions & 0 deletions .github/workflows/welcome.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Welcome New Members

on:
pull_request_target:
types: [opened]
paths:
- 'members/**'

permissions:
pull-requests: write

jobs:
welcome:
runs-on: ubuntu-latest
steps:
- name: Welcome Message
uses: actions/github-script@v7
with:
script: |
const message = `πŸŽ‰ Welcome to Developers Global, @${context.payload.pull_request.user.login}!

Thank you for joining our community! We're excited to have you here.

A maintainer will review your profile shortly. In the meantime, feel free to:
- ⭐ Star this repository
- πŸ” Explore other members' profiles
- πŸ’¬ Join our discussions
- 🀝 Connect with other developers

Looking forward to seeing your contributions to the community! πŸš€

---
*This is an automated message. If you have any questions, please don't hesitate to ask!*`;

github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number,
body: message
});
16 changes: 16 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Auto-generated members list
MEMBERS.md

# Node modules (if npm packages are added later)
node_modules/

# OS files
.DS_Store
Thumbs.db

# IDE files
.vscode/
.idea/
*.swp
*.swo
*~
45 changes: 45 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our community include:

* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall community

Examples of unacceptable behavior include:

* The use of sexualized language or imagery, and sexual attention or advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.

Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement. All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the reporter of any incident.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.0, available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
37 changes: 37 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Contributing to Developers Global

Thank you for your interest in joining Developers Global! πŸŽ‰

## How to Join

1. **Fork this repository**
- Click the "Fork" button at the top right of this page

2. **Create your profile**
- Copy `members/example-profile.md` to `members/your-github-username.md`
- Fill in your information following the template
- Be creative but keep it professional!

3. **Submit a Pull Request**
- Commit your profile with a clear message: `Add [Your Name] to members`
- Push to your fork
- Open a Pull Request to this repository
- Wait for review and merge

## Profile Guidelines

- Use your GitHub username as the filename (e.g., `members/johndoe.md`)
- Fill in all sections in the template
- Keep content appropriate and professional
- Add your social links if you'd like
- You can include your skills, interests, and projects

## Code of Conduct

Please read our [Code of Conduct](CODE_OF_CONDUCT.md) before contributing. We are committed to providing a welcoming and inclusive experience for everyone.

## Questions?

If you have any questions, feel free to open an issue or reach out to the maintainers.

Happy coding! πŸš€
50 changes: 50 additions & 0 deletions members/example-profile.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# [Your Name]

## About Me

Write a brief introduction about yourself here. Share your background, what you do, and what drives you as a developer.

## Skills & Technologies

List your main skills and technologies you work with:

- **Languages:** (e.g., JavaScript, Python, Java, Go, etc.)
- **Frameworks:** (e.g., React, Node.js, Django, Spring, etc.)
- **Tools:** (e.g., Git, Docker, Kubernetes, etc.)
- **Specialties:** (e.g., Web Development, Mobile Apps, DevOps, AI/ML, etc.)

## Interests

What are you passionate about in tech? What would you like to learn or explore?

- Interest 1
- Interest 2
- Interest 3

## Projects

Share some of your notable projects or work:

1. **[Project Name](link-to-project)** - Brief description
2. **[Project Name](link-to-project)** - Brief description
3. **[Project Name](link-to-project)** - Brief description

## Connect With Me

- πŸ™ GitHub: [@your-username](https://github.com/your-username)
- πŸ’Ό LinkedIn: [Your Name](https://linkedin.com/in/your-profile)
- 🐦 Twitter/X: [@your-handle](https://twitter.com/your-handle)
- 🌐 Website: [your-website.com](https://your-website.com)
- πŸ“§ Email: your.email@example.com (optional)

## Fun Facts

Share something interesting or fun about yourself!

- Fun fact 1
- Fun fact 2
- Fun fact 3

---

*Feel free to customize this template and add more sections that represent you!*
108 changes: 108 additions & 0 deletions scripts/generate-members-list.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
#!/usr/bin/env node

/**
* Generate Members List Script
*
* This script automatically generates a list of all members from the members/ directory
* and can be used to update the README.md or create a members list page.
*
* Usage: node scripts/generate-members-list.js
*/

const fs = require('fs');
const path = require('path');

const MEMBERS_DIR = path.join(__dirname, '..', 'members');
const EXAMPLE_FILE = 'example-profile.md';

/**
* Extract basic info from a member profile
*/
function parseMemberProfile(filePath) {
try {
const content = fs.readFileSync(filePath, 'utf-8');
const lines = content.split('\n');

// Extract name from first heading
const nameLine = lines.find(line => line.startsWith('# '));
const name = nameLine ? nameLine.replace('# ', '').trim() : 'Unknown';

// Extract GitHub username from the filename
const fileName = path.basename(filePath, '.md');

return {
name,
username: fileName,
fileName,
};
} catch (error) {
console.error(`Error parsing ${filePath}:`, error.message);
return null;
}
}

/**
* Get all member profiles
*/
function getAllMembers() {
try {
const files = fs.readdirSync(MEMBERS_DIR);

const members = files
.filter(file => file.endsWith('.md') && file !== EXAMPLE_FILE)
.map(file => parseMemberProfile(path.join(MEMBERS_DIR, file)))
.filter(member => member !== null)
.sort((a, b) => a.name.localeCompare(b.name));

return members;
} catch (error) {
console.error('Error reading members directory:', error.message);
return [];
}
}

/**
* Generate markdown list of members
*/
function generateMembersList(members) {
if (members.length === 0) {
return 'No members yet. Be the first to join!';
}

let markdown = `## Our Members (${members.length})\n\n`;

members.forEach((member, index) => {
markdown += `${index + 1}. **${member.name}** - [@${member.username}](members/${member.fileName}.md)\n`;
});

return markdown;
}

/**
* Main function
*/
function main() {
console.log('πŸ” Scanning members directory...');

const members = getAllMembers();

console.log(`βœ… Found ${members.length} member(s)`);

const membersList = generateMembersList(members);

console.log('\n' + '='.repeat(50));
console.log(membersList);
console.log('='.repeat(50));

// Optionally write to a file
const outputFile = path.join(__dirname, '..', 'MEMBERS.md');
fs.writeFileSync(outputFile, membersList);
console.log(`\nπŸ“ Members list written to ${outputFile}`);
}

// Run the script
if (require.main === module) {
main();
}

module.exports = { getAllMembers, generateMembersList, parseMemberProfile };