A standard project skeleton
Skeleton provides a simple structure to help you quickly setup new projects, and prevent you from forgetting the finer yet important details of creating and maintaining a software project.
When you manage a software project, one important but often overlooked aspect, is creating a solid directory structure. Below are some preferred directory names. They're meant to be opt-in. If your project doesn't need a particular directory, then don't include it. However, if you do need it to manage a particular type of content, these names are the most common. Using them will help people new to your project.
There isn't a skel
command for creating a directory structure. The various
types of potential projects, are too varied to create a command that would satisfy
a wide array of users.
- bin - commands you want to run.
- docs - Project documentation written by and for humans about your project
- log - capture information about what happens while your application runs
- src - the source code of your application
- tests - the tests that exercise and verify the code of your application
- node_modules - this is managed by NPM
- vendor - this is managed by Composer
- build - this is for the creation of generated files.
- config - for files that are used for configuration, that are not environment specific
- data - to manage things like data source files (e.g. CSV)
- lib - libraries not managed by a manager like Composer
- phpdocs - the documentation generated by PHPDoc
- public - only needed for web projects. Represents the root of the website.
- css
- fonts
- js
- assets
- audio
- docs
- photos
- video
- images
- buttons
- backgrounds
- logos
- uploads
- translations - files that translate your application into other languages
- Download the latest ZIP file from https://github.com/andrewwoods/skeleton
- Expand the ZIP file
- Add the 'bin' directory to your path
- Advanced features
- Install https://phpdoc.org to generate developer documenation from your comments
- Install https://phpunit.de to create and run tests to improve your code quality
-
Create the top-level project directories you need
-
Create Essential Project Docs
$ skel docs readme contributing
-
Create a License for your project
$ skel license mit
-
skel php
for PHP-related files- composer ( autoloading )
- docker
- symfony console application
- symfony console command
-
skel js
for JS-related files
- Review the CHANGELOG.md
- Project Creator: Andrew Woods on GitHub