A vibrant community directory showcasing open-source developers and software engineers from around the world.
š Live Site: https://nextcommunity.github.io
- šÆ About the Project
- š How to Add Yourself
- š YAML File Format
- š» Local Development (Optional)
- š¤ Contribution Guidelines
- š§ Troubleshooting & FAQ
- š Git Workflow & Keeping in Sync
- The Golden Rules
- š ļø Essential Git Commands for Contributors
- 1.
git remoteā Manage your remote connections - 2.
git fetchā Download changes without merging - 3.
git pullā Fetch and integrate in one step - 4.
git checkout -bā Create and switch to a feature branch - 5.
git rebaseā Replay your commits on top of the latest upstream - 6.
git stashā Save work-in-progress without committing - 7.
git logā Explore commit history
- 1.
- š Full Day-to-Day Sync Workflow
- š„ļø Contributing with GitHub CLI
- š License
- š Acknowledgments
- š Contact & Support
NextCommunity is a static site directory built with Eleventy (11ty), JavaScript, Nunjucks and TailwindCSS. NextCommunity celebrates the global developer community. Each developer gets their own profile page showcasing their skills, bio, and social links.
- Interactivity: JavaScript
- Static Site Generator: Eleventy (11ty)
- Styling: TailwindCSS
- Templating: Nunjucks
- Data Format: JSON / YAML
- Deployment: GitHub Pages
- š² Randomized display of developer profiles on build
- š Dark/Light/Random theme support
- š± Fully responsive design
- š Individual profile pages for each developer
- šØ Modern, premium UI with smooth animations
Adding yourself to the directory is simple! Just follow these steps:
- Click the "Fork" button at the top-right of this repository
- This creates a copy of the repository under your GitHub account
# Clone your fork git clone https://github.com/YOUR-USERNAME/NextCommunity.github.io.git cd NextCommunity.github.io # Add the original repo as "upstream" so you can sync future changes git remote add upstream https://github.com/NextCommunity/NextCommunity.github.io.git # Verify your remotes (you should see both origin and upstream) git remote -v
Replace YOUR-USERNAME with your actual GitHub username.
Never commit directly to main. Always work on a dedicated feature branch:
# Make sure your local main is up to date first git checkout main git pull upstream main # Create and switch to a new feature branch git checkout -b my-feature-branch
Use a descriptive branch name that reflects your change, e.g. add-jbampton or fix-yaml-typo.
- Navigate to the
src/users/directory - Create a new file named
your-github-username.yaml- Important: Use your actual GitHub username in lowercase
- Example: If your GitHub username is
JohnDoe, createjohndoe.yaml
Copy the template below and customize it with your information:
name: Your Full Name github: your-github-username website: https://yourwebsite.com email: [email protected] instagram: https://instagram.com/yourusername twitter: https://twitter.com/yourhandle linkedin: https://linkedin.com/in/yourprofile country: Your Country location: Your City role: Your Professional Title languages: JavaScript Python Go Rust bio: | Write your professional bio here. You can use multiple lines. Share your experience, interests, and what you're passionate about. Add your skills, projects, or anything else you'd like to highlight!
š” Tip: Check out existing files in
src/users/for real examples!
# Install dependencies npm install # Start the development server npm start
Visit http://localhost:8080 to preview your profile before submitting.
# Add your new file git add src/users/your-github-username.yaml # Commit with a descriptive message git commit -m "Add [Your Name] to developer directory" # Push your feature branch to your fork (NOT main!) # Replace 'my-feature-branch' with the branch name you created in Step 3 git push origin my-feature-branch
-
Go to your forked repository on GitHub
-
Click the "Contribute" button, then "Open Pull Request"
-
Make sure the base branch is
mainonNextCommunity/NextCommunity.github.ioand the compare branch is your feature branch -
Write a clear title:
Add [Your Name] to directory -
In the description, mention:
Fixes #213 Adding my profile to the NextCommunity developer directory. -
Click "Create Pull Request"
- The maintainers will review your PR
- Automated checks will verify your YAML file
- You may receive feedback or requested changes
- Once approved, your profile will be merged and live! š
| Field | Description | Example |
|---|---|---|
name |
Your full name | John Bampton |
github |
Your GitHub username (without @) | jbampton |
country |
Your country | Australia |
location |
Your city | Brisbane |
role |
Your professional title | Scrum Master |
languages |
Space-separated list of technologies | JavaScript, Python, Ruby |
bio |
Multi-line biography | See template above |
| Field | Description | Example |
|---|---|---|
email |
Your email address | [email protected] |
instagram |
Full Instagram profile URL | https://instagram.com/username |
linkedin |
Full LinkedIn profile URL | https://linkedin.com/in/username |
twitter |
Full Twitter/X profile URL | https://twitter.com/username |
website |
Your personal website URL | https://yoursite.com |
name: Use your real name or preferred professional namegithub: Must match your actual GitHub username for links to worklanguages: Separate with spaces, not commas (e.g.,Python Java Go)bio: Use the|syntax for multi-line text. Be professional and conciserole: Keep it short and clear (e.g., "Full Stack Developer", "DevOps Engineer")
Example 1: Minimal Profile
name: Jane Smith github: janesmith country: USA location: San Francisco role: Backend Developer languages: Python Django PostgreSQL bio: | Passionate backend developer with 3 years of experience. Love working with Python and building scalable APIs.
Example 2: Complete Profile
name: Carlos Rodriguez github: carlosr website: https://carlos.dev email: [email protected] twitter: https://twitter.com/carlos_codes linkedin: https://linkedin.com/in/carlosrodriguez country: Spain location: Barcelona role: Full Stack Engineer languages: TypeScript React Node.js AWS bio: | Full-stack engineer specializing in modern web technologies. Currently building cloud-native applications and contributing to open source. Passionate about clean code, testing, and developer experience.
Want to contribute to the project code or test your profile locally? Here's how to set up the development environment.
- Node.js: Version 22.x or higher (Download); check the Node.js release EOL schedule at endoflife.date/nodejs
- npm: Comes with Node.js
- Python: Optional; use version 3.13 or higher if you want to provide your own interpreter for the repository's
uv sync-managed dev tools - uv: Recommended for installing Python dev tools and can download a compatible Python version when needed
- Git: For version control
# Clone the repository git clone https://github.com/NextCommunity/NextCommunity.github.io.git cd NextCommunity.github.io # Install dependencies npm install # Start the development server npm start
The site will be available at http://localhost:8080 with live reload enabled.
# Start development server with live reload npm start # Build for production npm run build
This repository uses prek to run its local quality checks and Git hooks from .pre-commit-config.yaml.
If Python 3.13+ is not already installed, uv can download a compatible version for these commands.
# Install Python dev tools, including prek uv sync --only-group dev # Install Git hooks in your clone uv run prek install # Run the standard hooks across the repository uv run prek run --all-files # Run the manual hooks when needed uv run prek run --all-files --hook-stage manual
NextCommunity.github.io/
āāā .github/
ā āāā linters/
ā ā āāā .markdown-lint.yml # Markdown linting rules
ā ā āāā .markdown-link-check.json # Markdown link checker config
ā ā āāā .yaml-lint.yml # YAML linting rules
ā ā āāā codespell.txt # Accepted words for spell checks
ā ā āāā zizmor.yml # GitHub Actions security lint config
ā āāā workflows/
ā ā āāā deploy.yml # Production deployment workflow
ā ā āāā firebase-hosting-merge.yml # Firebase deploy on merge
ā ā āāā firebase-hosting-pull-request.yml # Firebase preview deploys for PRs
ā ā āāā prek-audit.yml # prek audit workflow
ā ā āāā prek-manual.yml # Manual prek workflow
ā ā āāā prek.yml # Standard prek workflow
ā ā āāā super-linter.yml # Super-linter workflow
ā āāā CODEOWNERS # Code ownership rules
ā āāā dependabot.yml # Dependabot configuration
ā āāā FUNDING.yml # Sponsorship links
āāā src/
ā āāā _data/ # Site-wide data files
ā ā āāā build.js # Build metadata injected into templates
ā ā āāā levels.json # XP level definitions for gamification
ā ā āāā site.js # Global site metadata
ā āāā _includes/ # Reusable Nunjucks templates
ā ā āāā bio.njk # Individual developer profile layout
ā ā āāā footer.njk # Site footer wrapper
ā ā āāā footer-details.njk # Footer content (links, credits)
ā ā āāā game-modal.njk # Modal overlay for mini-games
ā ā āāā game-stats.njk # In-game XP / stats display
ā ā āāā github-ribbon.njk # "Fork me on GitHub" ribbon include
ā ā āāā header.njk # Site header wrapper
ā ā āāā header-details.njk # Header content (nav, theme toggle)
ā ā āāā layouts/
ā ā ā āāā base.njk # Base page layout wrapper
ā ā āāā matrix-overlay.njk # Matrix rain easter egg overlay
ā ā āāā seo-meta.njk # SEO/Open Graph metadata tags
ā ā āāā scripts.njk # JS <script> tags included by footer
ā ā āāā skills-list.njk # Renders a developer's skills/languages
ā ā āāā system-log.njk # Scrolling system-log UI element
ā ā āāā system-override.njk # "System override" easter egg UI
ā āāā assets/
ā ā āāā css/
ā ā ā āāā style.css # Custom styles
ā ā ā āāā tailwind-input.css # Tailwind CSS entry point
ā ā ā āāā tailwind.css # Generated Tailwind CSS output
ā ā āāā img/
ā ā ā āāā github-fork-me.png # GitHub ribbon image asset
ā ā ā āāā next.jpeg # Site logo / avatar image
ā ā āāā js/
ā ā āāā eggs.js # Easter egg interactions
ā ā āāā phaser-init.js # Phaser game engine bootstrap
ā ā āāā script.js # Core interactivity & XP system
ā ā āāā games/ # Mini-game modules
ā ā āāā code-breaker.js # Code puzzle mini-game
ā ā āāā config.js # Shared game constants & CDN URL
ā ā āāā dev-duel.js # Reflex mini-game
ā ā āāā game-manager.js # Game lifecycle (load/create/destroy)
ā ā āāā space-invaders.js # Shooter mini-game
ā āāā users/ # š Developer profile YAML files
ā ā āāā users.json # Eleventy data file aggregating YAMLs
ā ā āāā jbampton.yaml
ā ā āāā ... # One <github-username>.yaml per dev
ā āāā games.njk # Games page template
ā āāā index.njk # Homepage template
ā āāā robots.njk # robots.txt template
ā āāā sitemap.njk # XML sitemap template
āāā .editorconfig # Editor formatting rules
āāā .eleventy.js # Eleventy configuration
āāā .firebaserc # Firebase project alias config
āāā .gitattributes # Git text normalization rules
āāā .gitignore # Git ignored files
āāā .ls-lint.yml # File and directory naming rules
āāā .npmrc # npm configuration
āāā .pre-commit-config-audit.yaml # prek audit config
āāā .pre-commit-config.yaml # prek hooks config
āāā LICENSE # Project license
āāā biome.json # Biome formatter / linter config
āāā firebase.json # Firebase Hosting configuration
āāā package-lock.json # Locked npm dependency versions
āāā package.json # Node.js dependencies & scripts
āāā postcss.config.js # PostCSS / Tailwind build config
āāā pyproject.toml # Python tooling config for prek/uv
āāā uv.lock # Locked Python dev dependencies
āāā README.md # This documentation
We're committed to providing a welcoming and inclusive environment. Please be respectful and professional in all interactions.
- Automated Checks: Your PR will automatically run linting checks
- Manual Review: A maintainer will review your submission
- Feedback: You may be asked to make changes
- Merge: Once approved, your PR will be merged!
ā Yes:
- Complete, valid YAML files
- Professional bios and appropriate content
- Real GitHub profiles
- Accurate information
ā No:
- Spam or promotional content
- Offensive or inappropriate material
- Fake or duplicate profiles
- Invalid YAML syntax
Every pull request runs automated checks:
- Linting: Ensures YAML syntax is correct
- Build Test: Verifies the site builds successfully
- prek Hooks: Checks code quality
If checks fail, you'll see error messages in the PR. Fix the issues and push again.
Problem: Your YAML file has syntax errors.
Solution:
- Check for proper indentation (use spaces, not tabs)
- Ensure colons have a space after them (
name: John, notname:John) - Use
|for multi-line bio text - Validate your YAML at yamllint.com
Problem: The github field doesn't match a real GitHub profile.
Solution:
- Ensure you're using your exact GitHub username
- Check for typos
- Username is case-sensitive in this field
Problem: File naming or format issue.
Solution:
- File must be in
src/users/directory - File must be named
username.yaml(lowercase, with.yamlextension) - All required fields must be filled in
Problem: Code quality checks didn't pass.
Solution:
# Install prek uv sync --only-group dev # Run checks manually uv run prek run --all-files
Q: Can I update my profile after it's merged? A: Yes! Just create a new PR with updates to your YAML file.
Q: How long does review take? A: Usually within 24-48 hours, depending on maintainer availability.
Q: Can I add multiple social links? A: Yes, all social fields (twitter, linkedin, instagram) are optional and independent.
Q: What if I don't have a personal website?
A: No problem! Just omit the website field or set it to your GitHub profile.
Q: Can I use emojis in my profile?
A: Yes, emojis are supported in the name and bio fields! š
Q: Is there a character limit for the bio? A: No hard limit, but keep it concise (2-4 paragraphs recommended).
Working with a forked repository means your copy can fall behind the upstream (the original NextCommunity repo) over time. This section explains the complete feature-branch workflow and the essential git commands every contributor should know.
š« Never push directly to
mainin your fork. ā Always work on a feature branch and open a Pull Request.
Your fork is connected to your own GitHub account (origin). To stay in sync with the original project, you also need a connection to the upstream repo.
# View all configured remotes git remote -v # Add the upstream remote (do this once, right after cloning) git remote add upstream https://github.com/NextCommunity/NextCommunity.github.io.git # After running the above, git remote -v should output: # origin https://github.com/YOUR-USERNAME/NextCommunity.github.io.git (fetch) # origin https://github.com/YOUR-USERNAME/NextCommunity.github.io.git (push) # upstream https://github.com/NextCommunity/NextCommunity.github.io.git (fetch) # upstream https://github.com/NextCommunity/NextCommunity.github.io.git (push)
git fetch downloads new commits and branches from a remote but does not touch your working files. It's a safe way to inspect what's changed upstream before deciding what to do.
# Fetch everything from the upstream repo git fetch upstream # Now you can inspect what changed without affecting your local branches git log HEAD..upstream/main --oneline
git pull is shorthand for git fetch followed by git merge (or git rebase, depending on your config). Use it to bring your local branch up to date.
# Sync your local main with upstream/main git checkout main git pull upstream main # Keep your fork's main in sync too (pushes updated main to your fork on GitHub) git push origin main
š” Tip: Run this before creating every new feature branch so you always start from the latest code.
A feature branch isolates your work so that main stays clean and ready to sync. The -b flag creates the branch and switches to it in one command.
# Create a new branch and switch to it git checkout -b my-feature-branch # List all local branches (the active branch is marked with *) git branch # Switch between existing branches git checkout main git checkout my-feature-branch
Branch naming conventions used in this project:
| Prefix | When to use | Example |
|---|---|---|
add- |
Adding a new profile | add-jbampton |
fix- |
Fixing a bug or typo | fix-yaml-typo |
feat- |
Adding a new site feature | feat-dark-mode |
docs- |
Documentation changes | docs-contributing-guide |
When main has moved forward since you created your branch, git rebase re-applies your commits on top of the latest changes instead of creating a messy merge commit. This keeps the project history clean and linear.
# First, fetch the latest upstream changes git fetch upstream # Rebase your feature branch on top of upstream/main git checkout my-feature-branch git rebase upstream/main
If conflicts arise during a rebase:
# 1. Open the conflicting file(s), resolve the conflict markers (<<<<, ====, >>>>) # 2. Stage the resolved file(s) git add src/users/your-github-username.yaml # 3. Continue the rebase git rebase --continue # If you want to abort and go back to before the rebase started git rebase --abort
After rebasing, you'll need to force-push your feature branch because the commit history was rewritten:
# Force push ā only safe on your own feature branch, NEVER on main
git push origin my-feature-branch --force-with-lease
ā ļø --force-with-leaseis safer than--force: it fails if someone else has pushed to your branch since you last fetched, preventing accidental data loss.
If you need to switch branches but aren't ready to commit your changes, git stash temporarily shelves them.
# Save all uncommitted changes git stash # Switch to another branch, do some work, then come back git checkout main git pull upstream main git checkout my-feature-branch # Restore your stashed changes git stash pop # View all stashes git stash list # Apply a specific stash without removing it from the stash list git stash apply stash@{0}
git log lets you understand what has changed and when. It's invaluable for debugging and understanding the project timeline.
# View the last 10 commits in a compact format git log --oneline -10 # See a visual branch graph git log --oneline --graph --decorate --all # See all commits by a specific author git log --author="Your Name" --oneline # See what changed in the last commit git log -1 --stat
Here's the complete workflow to follow every time you start a new contribution:
# 1. Switch to main and pull the latest upstream changes git checkout main git fetch upstream git merge upstream/main # or: git pull upstream main # 2. Push the updated main to your fork so GitHub is also up to date git push origin main # 3. Create a new feature branch from the freshly synced main git checkout -b my-feature-branch # 4. Make your changes, then stage and commit them git add src/users/your-github-username.yaml git commit -m "Add [Your Name] to developer directory" # 5. Push your feature branch to your fork on GitHub git push origin my-feature-branch # 6. Open a Pull Request on GitHub from your feature branch ā NextCommunity/main
If your feature branch gets out of date while you're working on it (because main received new commits), sync it with rebase:
git fetch upstream git rebase upstream/main git push origin my-feature-branch --force-with-lease
Prefer the terminal over the browser? The GitHub CLI (gh) lets you complete the entire contribution workflow without leaving your command line. Install it from https://cli.github.com/ and authenticate once with gh auth login.
# Fork the repo and clone it locally in one command gh repo fork NextCommunity/NextCommunity.github.io --clone=true --remote=true cd NextCommunity.github.io
The --remote=true flag automatically adds the original repo as an upstream remote, so you stay in sync without any extra setup.
# Make sure your local main is up to date first git checkout main git pull upstream main # Create and switch to a new feature branch git checkout -b add-your-github-username
Use a descriptive branch name such as add-jbampton or fix-yaml-typo.
# Navigate to the users directory and create your YAML file
cp src/users/_template.yaml src/users/your-github-username.yamlOpen src/users/your-github-username.yaml in your editor and fill in your details (see YAML File Format for the full field reference).
npm install npm start
Visit http://localhost:8080 to preview your profile before submitting.
# Stage your new profile file git add src/users/your-github-username.yaml # Commit with a descriptive message git commit -m "Add [Your Name] to developer directory" # Push your feature branch to your fork git push origin add-your-github-username
gh pr create \ --base main \ --title "Add [Your Name] to directory" \ --body "Fixes #213 Adding my profile to the NextCommunity developer directory."
The command prints a URL to the newly created PR. That's it ā no browser required!
# Watch the status of checks on your PR gh pr checks # View any review comments left by maintainers gh pr view --comments # If changes are requested, edit your file, then commit and push again git add src/users/your-github-username.yaml git commit -m "Address review feedback" git push origin add-your-github-username
Once all checks pass and a maintainer approves the PR, it will be merged and your profile will go live! š
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
- ā You can freely use, modify, and distribute this code
- ā You must disclose source code when distributing
- ā Changes must also be GPL-3.0 licensed
- ā Include copyright and license notices
- Built with Eleventy
- Styled with TailwindCSS
- Hosted on GitHub Pages
- Maintained by @jbampton and the community
- Report bugs: Open an issue
- Ask questions: Start a discussion