Dev Blog


Original theme by orderedlist (CC-BY-SA)

Where applicable, all content is licensed under a CC-BY-SA.
Creative Commons License

Project Organization

These are notes on "best practices" for Git project organization.

Directory Structure

File or Directory Description Misc
src/ Source files.
dist/ or bin/ Should remain empty in repo. Populated on compilation.
tests/ Test suite.
examples/ Example usage Project description
LICENSE License file for source
.gitignore Git ignore file.



The source files of the project.


The destination directory for compiled source files. This directory should remain empty in the main Git repo.


The test suite to make sure the running code passes testing.


Example usage of your program on small datasets (where applicable).

A description of the project. This should contain the following, preferably in this order:

If a screenshot isn't appropriate for the project (say it's a simple command line program) then either a block of test with a sample run or an arbitrary picture should be used. If it's unclear what to use as a screenshot, use a free/libre licensed cat picture.


The license of the software. If there are multiple licenses, some options are to make a file per license used with some description either in the file or outside, as to which files in the project fall under which license or to concatenate all licenses into a single file.


The files for Git to ignore.

Some common options are :

Language Dependent Files