Skip to content

constup/projectinit.sh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ProjectInit.sh

Supporting development

default green Ko-fi

Description

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.

Key features

  • 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

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:

    • Docker.

    • No other dependencies required.

Installation

Step 1 - Install

Clone this repository:

git clone git@github.com:constup/projectinit.sh.git

or

Download the latest release from Releases page.

Step 2 - Configure

Configure ProjectInit.sh by running:

sh configure.sh

How to use

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

Supported project types

Bare metal

Set up a project using your own already installed tech stack.

  • PHP

    • Composer library

    • Symfony application (web and cli/API)

  • NodeJS

    • NestJS application

Containerized

Set up a project in a container.

  • PHP

    • Symfony application (supported versions: 7.1, 7.2)

  • Databases

    • PostgreSQL

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.

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)