https://github.com/constup/projectinit.sh
Interactive bash tool for setting up software projects.
https://github.com/constup/projectinit.sh
bash bash-script composer composer-library composer-package nestjs nodejs npm npm-module npm-package php symfony
Last synced: about 1 year ago
JSON representation
Interactive bash tool for setting up software projects.
- Host: GitHub
- URL: https://github.com/constup/projectinit.sh
- Owner: constup
- License: gpl-3.0
- Created: 2021-08-14T16:40:34.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2025-04-11T14:29:06.000Z (about 1 year ago)
- Last Synced: 2025-04-12T02:13:07.239Z (about 1 year ago)
- Topics: bash, bash-script, composer, composer-library, composer-package, nestjs, nodejs, npm, npm-module, npm-package, php, symfony
- Language: Shell
- Homepage: https://projectinit.sh/
- Size: 398 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 13
-
Metadata Files:
- Readme: README.adoc
- License: LICENSE
Awesome Lists containing this project
README
= ProjectInit.sh
:toc:
:toclevels: 5
== Supporting development
link:https://www.buymeacoffee.com/puEW3HvWvP[image:https://cdn.buymeacoffee.com/buttons/v2/default-green.png[width=200]]
link:https://ko-fi.com/E1E3VQUK2[image:https://ko-fi.com/img/githubbutton_sm.svg[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 (link:https://cmder.app/[Cmder],
link:https://conemu.github.io/[ConEmu], link:https://www.mingw-w64.org/[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:
[source,shell]
----
git clone git@github.com:constup/projectinit.sh.git
----
or
Download the latest release from link:https://github.com/constup/projectinit.sh/releases[Releases] page.
=== Step 2 - Configure
Configure ProjectInit.sh by running:
[source,shell]
----
bash configure.sh
----
== How to use
Go to ProjectInit's `bin` directory and simply run it:
[source,shell]
----
cd bin
bash projectinit.sh
----
== Supported project types (applications and libraries)
- link:doc/applications_and_libraries/bare_metal.adoc[Bare metal]
- link:doc/applications_and_libraries/docker.adoc[Docker]
== 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:
- link:doc/dev/development_rules_and_guidelines.adoc[Development rules and guidelines]
- link:doc/dev/globals.adoc[Global variables documentation]
== Supporting development
If you like this tool or find it useful, consider buying me a nice cup of coffee. Coffee fuels open source.
link:https://www.buymeacoffee.com/puEW3HvWvP[image:https://cdn.buymeacoffee.com/buttons/v2/default-green.png[width=200]]
link:https://ko-fi.com/E1E3VQUK2[image:https://ko-fi.com/img/githubbutton_sm.svg[Ko-fi]]
== License
link:./LICENSE[GNU GPL 3.0] (also available online at:
link:https://www.gnu.org/licenses/gpl-3.0.en.html[GNU General Public License 3.0])