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
- Git Workflow & Keeping in Sync
- Contributing with GitHub CLI
- Contribution Guidelines
- Troubleshooting
- License
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 -vReplace 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-branchUse 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: your.email@example.com
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 startVisit 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 | you@example.com |
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: carlos@example.com
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 20.x or higher (Download)
- npm: Comes with Node.js
- 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 startThe 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 buildNextCommunity.github.io/
βββ src/
β βββ _data/ # Site-wide data files
β β βββ build.js # Build metadata injected into templates
β β βββ levels.json # XP level definitions for the gamification system
β βββ _includes/ # Reusable Nunjucks templates
β β βββ bio.njk # Individual developer profile page 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
β β βββ header.njk # Site header wrapper
β β βββ header-details.njk # Header content (nav, theme toggle)
β β βββ matrix-overlay.njk # Matrix rain easter egg overlay
β β βββ 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 # Compiled / custom CSS
β β β βββ tailwind-input.css # Tailwind CSS entry point
β β βββ img/
β β β βββ next.jpeg # Site logo / avatar image
β β βββ js/
β β βββ eggs.js # Easter egg interactions (Konami code, etc.)
β β βββ phaser-init.js # Phaser game engine bootstrap
β β βββ script.js # Core interactivity & XP system
β β βββ games/ # Mini-game modules (lazy-loaded via Phaser)
β β βββ config.js # Shared game constants & CDN URL
β β βββ game-manager.js # Game lifecycle (load, create, destroy)
β β βββ space-invaders.js
β β βββ code-breaker.js
β β βββ dev-duel.js
β βββ users/ # π Developer profile YAML files go here
β β βββ users.json # Eleventy data file that aggregates all YAMLs
β β βββ jbampton.yaml
β β βββ ... # One <github-username>.yaml per developer
β βββ games.njk # Games page template
β βββ index.njk # Homepage template
βββ .eleventy.js # Eleventy configuration
βββ biome.json # Biome formatter / linter config
βββ postcss.config.js # PostCSS / Tailwind build config
βββ package.json # Node.js dependencies & scripts
βββ README.md # This file
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 --onelinegit 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-branchBranch 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/mainIf 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 --abortAfter 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 --statHere'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/mainIf 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-leasePrefer 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.ioThe --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-usernameUse 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 startVisit 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-usernamegh pr create \
--repo NextCommunity/NextCommunity.github.io \
--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-usernameOnce all checks pass and a maintainer approves the PR, it will be merged and your profile will go live! π
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
- Pre-commit 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 pre-commit
pip install pre-commit
# Run checks manually
pre-commit run --all-filesQ: 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).
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