How to Contribute to the Project-Based Learning Repository: A Step-by-Step Guide

To contribute to the project-based learning repository, fork the repository, create a feature branch, add your tutorial entry to README.md following the formatting rules in CONTRIBUTING.md, and submit a pull request that passes the Travis CI markdown linting checks.

The practical-tutorials/project-based-learning repository is a curated collection of programming tutorials organized by language. Contributing to this open-source project involves adding high-quality tutorial links to the master catalogue, following a straightforward markdown-based workflow that maintains the repository's consistent structure.

Understanding the Repository Architecture

The project-based learning repository functions as a structured markdown catalogue rather than a traditional codebase. All content resides in static files with no compiled components.

Component Purpose File Path
README.md Master table of contents listing every tutorial under language headings README.md
CONTRIBUTING.md Contribution workflow, formatting rules, and quality standards CONTRIBUTING.md
LICENSE.md MIT license governing content reuse LICENSE.md
.travis.yml CI configuration for automated markdown linting on pull requests .travis.yml
.github/ Issue templates, PR templates, and stale.yml automation for housekeeping .github/

Contribution Workflow for Project-Based Learning

Follow these steps to submit a successful contribution to the repository:

  1. Fork the repository using the Fork button on the GitHub interface.
  2. Create a new branch in your fork with a descriptive name (e.g., add-flask-api-tutorial).
  3. Edit README.md to add your tutorial entry under the appropriate language heading.
  4. Verify formatting against the rules in CONTRIBUTING.md to ensure nested lists and links follow standards.
  5. Run CI checks locally (optional) – the .travis.yml configuration validates markdown syntax.
  6. Open a Pull Request targeting practical-tutorials/project-based-learning:master with a descriptive title referencing the added content.

Formatting Guidelines and Quality Standards

All contributions to the project-based learning repository must adhere to strict formatting rules defined in CONTRIBUTING.md:

  • Language headings: Every entry must reside under the correct language heading (e.g., ## Python).

  • Link format: Use the markdown pattern [Title](link_to_tutorial) with descriptive titles.

  • Multi-part series: Nest bullet points for series entries as shown in the contribution guide (outer bullet for series title, inner bullets for individual parts).

  • URL restrictions: Avoid URL shorteners unless the URL exceeds 80 characters; Google URL Shortener is permitted for long links.

  • Commit hygiene: Write clear commit messages free of trailing whitespace.

Practical Code Examples for Contributors

Adding a Single Tutorial Entry

To add a standalone tutorial to the Python section, edit README.md and insert:


## Python

- [Build a REST API with Flask and PostgreSQL](https://realpython.com/flask-by-example-part-1-project-setup/)

This entry follows the [Title](URL) format required by CONTRIBUTING.md and places the content under the correct language heading.

Adding a Multi-Part Series

For tutorials split across multiple articles, use nested bullet points:


## JavaScript

- Progressive Web App
    - [Part 1 – Project setup](https://example.com/pwa-part1)
    - [Part 2 – Service worker](https://example.com/pwa-part2)

The outer bullet identifies the series, while indented inner bullets link to individual parts, matching the nesting rules in CONTRIBUTING.md.

Creating a New Language Section

If adding the first tutorial for a language not yet listed, create a new heading:


## Rust

- [Write an OS in pure Rust](https://os.phil-opp.com/)

After adding the heading, update the Table of Contents at the top of README.md to include an anchor link (e.g., [Rust](#rust)).

Writing an Effective Pull Request Description

When submitting your contribution, use this template in the PR body:

Add Rust tutorial for writing an OS from scratch

- Added a new "Rust" heading to the TOC.
- Inserted a single tutorial entry under the Rust section.
- Followed the formatting guidelines from CONTRIBUTING.md.

Summary

  • The project-based learning repository is a curated markdown catalogue of programming tutorials organized by language.
  • Contributors must edit README.md to add entries following the strict formatting rules defined in CONTRIBUTING.md.
  • The contribution workflow requires forking, branching, editing, and submitting a pull request that passes Travis CI markdown linting.
  • Multi-part series require nested bullet formatting, while new language sections need both a heading and a Table of Contents update.
  • All URLs should be direct links unless they exceed 80 characters.

Frequently Asked Questions

Do I need to write code to contribute to the project-based learning repository?

No. The repository contains only markdown documentation. Contributions involve adding curated tutorial links to README.md rather than writing software. You only need to ensure your markdown follows the formatting standards in CONTRIBUTING.md.

What happens if my pull request fails the Travis CI check?

The .travis.yml configuration automatically lints markdown syntax on every pull request. If checks fail, review the Travis logs for specific formatting errors such as trailing whitespace or broken link syntax. Fix the issues in your branch and push the changes; the CI will re-run automatically.

Can I add a tutorial in a language that isn't listed yet?

Yes. Create a new language heading in README.md (e.g., ## Rust) and add your tutorial entry beneath it. You must also update the Table of Contents at the top of the file to include an anchor link to the new section (e.g., [Rust](#rust)).

Are commercial or paid tutorials allowed in the repository?

The repository focuses on project-based learning resources regardless of cost model, provided they offer substantial free content or clear educational value. However, avoid URL shorteners for commercial links unless the original URL exceeds 80 characters, as specified in CONTRIBUTING.md.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →