From 2f5806dd4f0aba69525ac6aa8355703bcbb3e449 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 21 Oct 2025 13:40:45 +0000 Subject: [PATCH 1/2] Initial plan From a33db2be40f8d15c79b8af5ffdce083545432d67 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 21 Oct 2025 13:46:38 +0000 Subject: [PATCH 2/2] Add complete project structure with documentation and automation Co-authored-by: DhanushNehru <22955675+DhanushNehru@users.noreply.github.com> --- .github/PULL_REQUEST_TEMPLATE.md | 25 +++++++ .github/workflows/welcome.yml | 40 ++++++++++++ .gitignore | 16 +++++ CODE_OF_CONDUCT.md | 45 +++++++++++++ CONTRIBUTING.md | 37 +++++++++++ members/example-profile.md | 50 ++++++++++++++ scripts/generate-members-list.js | 108 +++++++++++++++++++++++++++++++ 7 files changed, 321 insertions(+) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/workflows/welcome.yml create mode 100644 .gitignore create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md create mode 100644 members/example-profile.md create mode 100644 scripts/generate-members-list.js diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..a0fd461 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -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! šŸŒāœØ diff --git a/.github/workflows/welcome.yml b/.github/workflows/welcome.yml new file mode 100644 index 0000000..005dec3 --- /dev/null +++ b/.github/workflows/welcome.yml @@ -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 + }); diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c1b112f --- /dev/null +++ b/.gitignore @@ -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 +*~ diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..59ced14 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -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. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..971d74f --- /dev/null +++ b/CONTRIBUTING.md @@ -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! šŸš€ diff --git a/members/example-profile.md b/members/example-profile.md new file mode 100644 index 0000000..c361b8c --- /dev/null +++ b/members/example-profile.md @@ -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!* diff --git a/scripts/generate-members-list.js b/scripts/generate-members-list.js new file mode 100644 index 0000000..a3a24c1 --- /dev/null +++ b/scripts/generate-members-list.js @@ -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 };