General instructions for crafting a README
file are provided here, tailored for PRG projects but applicable to any type of project.
- README File
- Header
- Title
- Description
- Table of Contents
- Features
- Background Story
- Definitions
- Getting Started
- What's Inside?
- Configuration
- Deployment
- Closing
- Limitations
- Disclaimer
- What's Next?
- Project
- Contributing
- Resources
- License
- Footer
- Resources
Warning
A README
file is REQUIRED for ALL tiers.
- Use the templates in the next section as a starting point for your profile
README
(especially if you're using PRG).
For templates and examples of READMEs
, see the templates directory.
Templates are broken down by the four categorized tiers of projects: Platinum, Gold, Silver, and Bronze.
- See the Template Guide for templates used for each tier.
- The
README
file should be written in Markdown. - GitHub has its own flavor of Markdown, which is what you should use.
GitHub has a special syntax for alerts in Markdown files:
Note
Highlights information that users should take into account, even when skimming.
Tip
Optional information to help a user be more successful.
Important
Crucial information necessary for users to succeed.
Warning
Critical content demanding immediate user attention due to potential risks.
Caution
Negative potential consequences of an action.
Read more about GitHub Markdown Alerts.
Important
I only mentioned the important parts of a README
file, there are many other things you can add to your README
file that I didn't mention here. Feel free to add whatever you want to your README
file including new sections, images, GIFs, etc.
Below is a description of each section of a PRG README
and what it should contain.
Depending on the tier of your project, some sections are REQUIRED while others are OPTIONAL.
Note
Your Profile README
does not need to adhere to the PRG guidelines defined in this document, but it is encouraged to include the PRG Profile Badge to link to your PRG Collection.
Below is a description of each section of a PRG README
and what it should contain:
Warning
REQUIRED section for ALL tiers.
- The header consists of two parts: the Header Icon and the Badges.
- This should be the first section of your
README
.
-
The header icon is a either a logo/icon or a custom banner.
-
A banner should always be used for Platinum/Gold projects, while a logo/icon should be used for Silver/Bronze projects.
-
A banner is a custom design created to represent your project.
- I use Sketch to create my banners and designs, but you can use any design software you want.
- See Brand Guidelines for more information on creating banners and other graphics for your project.
-
For Silver/Bronze projects, you can use a custom icon or a logo of the technology you used to develop your project instead of a banner.
[!TIP]
There are plenty of free logos out there for most technologies, just make sure you give credit to the creator of the logo if it's required (follow the license for the image). -
e.g. My logo for my Silver Project, UWP Audio Recorder:
Tip
Append #gh-dark-mode-only
or #gh-light-mode-only
to the end of the image URL to only show the image in dark or light mode respectively. Be sure to have both a dark and light version of the image when necessary. More on this (shameless plug) here.
- e.g. A logo for a Bronze project that showcases JavaScript code:
- The header icon or banner should always be clickable and take you to your project's website/product/demo.
- If you do not have a website/product/demo, you should link it to your projects repository main branch.
- Badges are a great way to showcase the technologies, frameworks, and languages used in your project.
- Badges are generated using Shields.io.
- You should include all major technologies, frameworks, and languages used in your project (one badge per technology). This badge should contain the technology name and version you used to develop your project.
- The badge color should match the color of the technology's logo. Use a browser extension like ColorZilla to get the exact color code of a logo from a website.
- The badge should hyperlink to the technology's website or version release page (whatever you think is more appropriate).
- Optionally you can add badges for your email, website, and GitHub profile so people can contact you or follow you. You can also add a link to your BuyMeACoffee page if you have one to support your work.
Note
To demonstrate your project adheres to PRG, please include the appropriate badge at the top of your repository README
. See the top of this README
for an example.
Resources:
Shields.io - A website for generating badges.
GitHub Workflow Status Badge
A horizontal divider is a great way to separate the top of your README
from the rest of the content.
Use a divider to separate your README
into two sections: the header (after the badges and another before the table of contents) and the footer section (after the credits but before the footer image).
- e.g.
---------------
Warning
REQUIRED section for ALL tiers.
The header of "Title" should not be included in your README
, just the title of your actual project.
- The title should be the name of your project (without underscores or dashes).
Warning
REQUIRED section for ALL tiers. You do not need to include a header called "Description" for this section, just the description under the title.
- The description should be a short paragraph describing what your project is and what it does after the title.
- This should be the first section after the badges.
- e.g. "A Python, Django, Plotly, and Pandas web application that visualizes river data pulled using an API from the United States Geological Survey (USGS)."
- Add screenshots of your project below the description and throughout the rest of the
README
as needed.- This is optional, but highly recommended especially for Platinum and Gold projects.
- Animations in the form of GIFs are also a great way to showcase your project.
Warning
REQUIRED section for Platinum, Gold, and Silver tiers. Bronze tier projects do not require this section, but feel free to add it if you want.
- The table of contents should be a list of links to each section of your
README
. - This should be the second section after the description.
Warning
REQUIRED section for Platinum and Gold tiers only. Silver and Bronze tier projects do not require this section, but feel free to add it if you want.
- This section should contain a list of features for your project.
- Explain what each feature does and how it works.
- You can also add screenshots of each feature if you want.
Warning
REQUIRED section for Platinum and Gold tiers only. Silver and Bronze tier projects do not require this section, but feel free to add it if you want.
- The background story should be a short paragraph describing why you created the project and what inspired you to create it.
Warning
OPTIONAL section for ALL tiers.
- This section should contain a list of definitions for any terms or acronyms used in your project.
Warning
REQUIRED section for ALL tiers.
- You can break this section down into further subsections if you want (such as below: Dependencies, Configuration, Running Locally, Deployment, etc.).
- Otherwise, you can just include a list of steps to get your project up and running under Getting Started.
Warning
OPTIONAL section for ALL tiers.
- This section should contain a list of dependencies for your project.
- There is no need to list every single dependency, just the major ones.
- There's also no need to list the version or website for each dependency (this will be done in the Resouces area, more on that soon), just the name is fine.
- e.g. This project makes use of several libraries and frameworks:
- Python: For the application logic.
- Django: For web application functionality.
- Plotly: For creating interactive visualizations.
- Pandas: For data manipulation and analysis.
- Requests: For makingAPI
calls.
- Python-Decouple: For storing sensitive information in a.env
file.
- e.g. This project makes use of several libraries and frameworks:
- You can use a tool like Dependabot to automatically generate a list of dependencies for your project.
Resources:
Warning
OPTIONAL section for ALL tiers.
- Include any configuration information for your project here.
Warning
OPTIONAL section for ALL tiers.
- This section should contain a list of steps to get your project up and running.
- Utilize code blocks to show the commands needed to run your project.
- e.g.
- Clone this repository.
- Create a virtual environment:
python -m venv venv
. - Install the dependencies.
- Run the application:
python manage.py runserver
Warning
OPTIONAL section for ALL tiers.
- Include any deployment information for your project here.
Warning
REQUIRED section for Platinum and Gold tiers only. Silver and Bronze tier projects do not require this section, but feel free to add it if you want.
-
This section should contain a list of files and folders in your project and what each one does.
-
Generally, you should only list the main files and folders in your project, not every single file.
-
Use a tree diagram to show the relationship between files and folders:
- e.g.
├── README.md # This file. ├── config.py # A file that contains sensitive information (excluded from this repository). ├── manage.py # A command-line utility that lets you interact with this Django project in various ways. ├── requirements.txt # A list of Python packages required to run this project. ├── static # A directory for static files that are used in this Django project. │ ├── css # A directory for CSS files. │ │ └── styles.css # A CSS file that contains the styles for the application. │ ├── data # A directory for data files. │ │ └── river_charts.csv # A CSV file that contains the float dates for the application. │ └── images # A directory for image files. ├── templates # A directory for HTML templates. │ └── river_charts # A directory for HTML templates specific to the river_charts app. │ ├── error.html # An HTML template that displays an error message. │ └── index.html # An HTML template that displays the application. ├── views.py # A file that contains the application logic. ├── VERSION # A file that contains the current version of the application. ├── LICENSE # A file that contains the license for this project. └── CREDITS # A file that contains the credits for this project.
-
You can use a the following resources below to generate a tree diagram for your project.
Resources:
An online tree-like utility for generating ASCII folder structure diagrams Project Tree Generator ASCII Tree Generator VSCode Extension
Warning
REQUIRED section for Platinum and Gold tiers only. Silver and Bronze tier projects do not require this section, but feel free to add it if you want.
- Add any closing notes or remarks here.
Warning
OPTIONAL section for ALL tiers.
- This section should contain a list of limitations for your project.
Warning
OPTIONAL section for ALL tiers.
- Include any disclaimers for your project here.
- e.g. "This project is not affiliated with the United States Geological Survey (USGS)."
Warning
REQUIRED section for Platinum and Gold tiers only.
- Include any future plans for your project here.
Warning
REQUIRED section for Platinum and Gold tiers only.
- Include a link to your project plan here on GitHub if you do create one.
Warning
REQUIRED section for Platinum and Gold tiers only.
- GitHub is about collaboration and contribution, so this is why its essential to include a section on how to contribute to your best projects.
- Include any information on how to contribute to your project here.
- Include a
CONTRIBUTING
file in your repository for more detailed information on how to contribute to your project.
Warning
REQUIRED section for Platinum, Gold, and Silver tiers. Bronze tier projects do not require this section, but feel free to add it if you want.
- This section should contain a list of resources used to create your project.
- Include the name of the resource, a link to the resource, and a short description of what the resource is.
- e.g. Plotly - A Python graphing library that makes interactive, publication-quality graphs online.
- e.g. Django - A high-level Python Web framework that encourages rapid development and clean, pragmatic design.
- e.g. Pandas - A fast, powerful, flexible and easy to use open source data analysis and manipulation tool, built on top of the Python programming language.
Warning
REQUIRED section for ALL tiers.
- Describe the license for your project here.
- I found it helpful to break down what license I choose based on the PRG tier of the project:
- Platinum - GNU GPLv3 or No License (if you want to keep your code private)
- Gold - GNU GPLv3
- Silver - MIT
- Bronze - The Unlicense
- I chose GNU GPLv3 for my Platinum and Gold projects.
- Why? I spent a lot of time on my Platinum and Gold projects and I want to protect my work as much as possible.
- I do not want people to use my code to profit off of it without my permission which is why I chose this more restrictive license.
- I chose MIT for my Silver projects.
- Why? I put more work into my Silver projects than my Bronze projects, so I want to protect my work a little more but still allow people to use my code in their own projects by giving me credit for it.
- I chose The Unlicense for my Bronze projects.
- Why? Because I want to encourage people to use my code in their own projects, even if they don't give me credit for it.
- Include a
LICENSE
file in your repository for more detailed information on the license for your project. - The above licenses are the licenses I chose for my projects, but you can choose whatever license you want for your projects.
- A list of licenses can be found here.
Warning
REQUIRED section for ALL tiers.
- The footer consists of two parts: the Credits and the Footer Icon.
- This should be the last section of your
README
.
- Include a credit block for each person who contributed to your project.
- If you worked on the project by yourself, you can just include your name and other details such as:
- Author: - Your name + a link to your GitHub profile.
- Email: - Your email + a link to your email.
- Website: - Your website + a link to your website.
- Reference: - Main Branch + a link to the main branch of your repository.
- Include a
CREDITS
file in your repository for more detailed information on the credits for your project.
- The footer icon should contain a image of your application's icon (never a banner) for all tier projects.
- The footer icon should also be a centered clickable image link to your personal website, GitHub profile, or main repo branch for said project.
- Above the footer icon, you should include a divider to separate the footer icon from the rest of the
README
.- e.g.
---------------
- e.g.
- See the bottom of this project README for an example.
General Resources:
- About READMEs - GitHub Docs on READMEs.
- Creating a template repository - GitHub Docs on creating a template repository.
- Creating a repository from a template - GitHub Docs on creating a repository from a template.
- Managing project templates in your organization - GitHub Docs on managing project templates in your organization.
- Managing your profile README - GitHub Docs on managing your profile README.
- Organization README
- Getting started with writing and formatting on GitHub - GitHub documentation on writing and formatting.
- Quickstart for writing on GitHub - Learn advanced formatting features by creating a README for your GitHub profile.
- Basic writing and formatting syntax - Create sophisticated formatting for your prose and code on GitHub with simple syntax.
- Building a Useful, User-Friendly Project - Great project advice.
General README Information:
- Art of README - A collection of advice for creating READMEs.
- Make a README - A guide to writing READMEs.
- Awesome README - A curated list of awesome READMEs.
- Awesome GitHub Profile README - A curated list of awesome GitHub Profile READMEs.
- README Inspiration - A list of articles and resources to inspire your README.
- README Best Practices - A list of best practices for README files.
README Generators:
- GitHub Profile README Generator - A tool that generates GitHub profile READMEs.
- Online README Editor - A WYSIWYG editor for creating READMEs.
- user-statistician - Generate a GitHub stats SVG for your GitHub Profile README in GitHub Actions
Open Source README Templates:
- An awesome README template to jumpstart your projects!
- A Beginners Guide to writing a README
- A template to make good README.md
- A simple README.md template
- README.md template for your open-source project
- Suggested README file structure for software projects
- A standard style for README files
- A README template to encourage open-source contributions
- Open Source guidance from Zalando, Europe's largest online fashion platform
Markdown: