Interactive Bash tool for kickstarting software projects. No additional software or abstraction layers. ProjectInit is made to just automate creating libraries, projects and environments the same way you would do manually.
Set up a containerized or local (bare metal) environment for developing applications or libraries in just a couple of guided prompts.
Supports multiple programming languages and frameworks. Whether it’s a npm package, composer library, NestJS or Symfony application, ProjectInit got it covered.
-
Written in POSIX compliant Bash. Available on Linux, Windows and MacOS.
-
Create new or continue working on the existing projects, whether it’s a full application or a library
-
Set up a project using locally installed tools (languages, package managers,…) or containers (Docker)
-
Containerized projects with zero dependencies (except for Docker or Podman).
-
Support for multiple languages, frameworks and types of libraries
-
No additional abstraction layer. Projects created with ProjectInit are raw, just like you’ve set up them yourself manually
-
No bloatware
-
Bash
-
Linux - Bash should be available by default. If it’s not, consult your distro’s documentation to see how to install it.
-
Windows - Any terminal emulator that supports Bash will do (Cmder, ConEmu, mingw-w64,…)
-
MacOS - MacOS uses zsh as the default shell. You will have to set up Bash. Consult MacOS documentation or online resources to see how to do that.
-
-
When using ProjectInit with locally installed languages and tools:
-
Depending on what you are setting up, some dependencies will be required, most notably a correct language version of the programming language that you want to work on
-
Other dependencies might be required. ProjectInit will check these dependencies and let you know if anything is missing.
-
-
When running ProjectInit to create containerized projects:
-
Docker.
-
No other dependencies required.
-
Clone this repository:
git clone git@github.com:constup/projectinit.sh.git
or
Download the latest release from Releases page.
All tools (scripts) are located in ProjectInit’s bin
folder, separated into directories based on a language or
technology they are covering. Just open your bash terminal, cd
into the desired bin
subdirectory and run.
Example:
cd bin/php
sh init_generic.sh
There are a number of tools for setting up and managing development environments for various programming languages (for example: DDEV, Lando,…). What makes ProjectInit different is that it focuses on setting up projects, not environments. You can set up a complete containerized development environment with ProjectInit, but that is only a side effect of using containers.
Here is how ProjectInit is different from other tools:
-
Environment management tools usually have their own set of commands and advanced configuration which you have to learn. ProjectInit does not. You can just run the script you want and ProjectInit will guide you through your project’s setup process. At some point, ProjectInit may add support for adding a config file, just to automate configuration as well, but using it will be optional.
-
It’s a project setup tool, not environment setup tool. You can quickly set up a project to work on a library (composer package, npm package,…) with minimum (containerized) or no footprint (your existing local tech stack) on your system.
-
If you set up a project using ProjectInit, you don’t have to manage it with ProjectInit. The result of running ProjectInit are default files for the technology stack you chose. It does not produce additional files, cache or configuration, and it does not add another abstraction layer to your projects. It simply automates what you would do manually.
-
Apart from setting up a full development environment using containers, you can use your already existing environment to quickly start working on a project. You like using your own properly configured *AMP stack? You like building your tools from source? No problem. ProjectInit supports and does not interfere with your existing setup.
-
ProjectInit does not depend on WSL on Windows and works in any terminal or emulator that supports Bash. You can run it on WSL, of course, but you can also use Mingw, Cygwin, Cmder, ConEmu, Git terminal,…
-
ProjectInit does not take up your system’s resources once you finish setting up the project. ProjectInit does not set up or run servers or services on your system. Once it’s done, it’s done.
-
ProjectInit is a set of Bash scripts and that’s it. There are no servers, services, repositories or CDNs that have to be up in order for ProjectInit to work. Even if development and maintenance of ProjectInit stops, you will still have the latest version of a working tool.
GNU GPL 3.0 (also available online at: GNU General Public License 3.0)