Skip to content

constup/projectinit.sh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ProjectInit.sh

Supporting development

default green Ko-fi

Description

Important

This is a pre-release alpha development version of the application. The architecture of the application, features and development conventions are subject to a change without prior notice. Some features might not work correctly.

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.

Key features

  • Written in Bash. Available on Linux, Windows and MacOS

  • Create a new project, 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 on your locally installed tech stack

  • 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. Manage and update your project just like any other.

  • No bloatware

Prerequisites

  • 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:

    • Container software (Docker).

    • No other dependencies required.

Installation

Step 1 - Install

Clone this repository:

git clone [email protected]:constup/projectinit.sh.git

or

Download the latest release from Releases page.

Step 2 - Configure

Configure ProjectInit.sh by running:

bash configure.sh

How to use

Go to ProjectInit’s bin directory and simply run it:

cd bin
bash projectinit.sh

Supported project types (applications and libraries)

Comparison to other tools

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.

Development and code contributions

The following resources are available for development and code contributions:

Supporting development

If you like this tool or find it useful, consider buying me a nice cup of coffee. Coffee fuels open source.

default green Ko-fi

License

GNU GPL 3.0 (also available online at: GNU General Public License 3.0)