A powerful, interactive command-line wizard for initializing new software projects with best practices, automated setup, and GitHub integration.
.env
files for automated configurationClone or download the scripts:
git clone https://github.com/your-username/scripts.git
cd scripts
Make the script executable:
chmod +x project-init.sh
(Optional) Add to PATH for global access:
echo 'export PATH="$PATH:~/github/scripts"' >> ~/.bashrc
source ~/.bashrc
./project-init.sh
The wizard will guide you through:
# Using environment variables
PROJECT_TYPE=django PROJECT_NAME=myapp ./project-init.sh --non-interactive
# Using command-line arguments
./project-init.sh --type react --name my-react-app --dir ~/projects/my-react-app
Copy env.example
to .env
and customize:
cp env.example .env
# Edit .env with your preferred settings
Key configuration options:
Variable | Description | Options |
---|---|---|
PROJECT_TYPE |
Type of project to create | django , react , node , python , rust , go , custom |
PROJECT_NAME |
Name of your project | Any valid directory name |
GITHUB_USERNAME |
Your GitHub username | Your GitHub handle |
LICENSE |
License type | MIT , Apache-2.0 , GPL-3.0 , BSD-3-Clause , None |
SETUP_DOCKER |
Create Docker configuration | true , false |
SETUP_CI |
Setup GitHub Actions | true , false |
See env.example
for the complete list of available options.
Usage: project-init.sh [OPTIONS]
OPTIONS:
--config FILE Use specific configuration file
--type TYPE Set project type (django, react, node, python, rust, go, custom)
--name NAME Set project name
--dir DIRECTORY Set project directory
--non-interactive Run in non-interactive mode (uses env vars)
--help Show help message
venv
.env
file support with python-decoupleThree sub-types available:
When Docker support is enabled, the wizard creates:
Dockerfile
optimized for your project typedocker-compose.yml
for local development.dockerignore
with sensible defaultsGitHub Actions workflows are tailored to each project type:
The wizard creates a complete project structure:
my-project/
โโโ src/ # Source code
โโโ tests/ # Test files
โโโ docs/ # Documentation
โโโ .github/
โ โโโ workflows/
โ โโโ ci.yml # GitHub Actions workflow
โโโ Dockerfile # Docker configuration
โโโ docker-compose.yml # Docker Compose setup
โโโ README.md # Project documentation
โโโ LICENSE # License file
โโโ .gitignore # Git ignore rules
โโโ [Type-specific files]
gh
) for automatic repository creationCreate your own project templates by:
The wizard supports custom initialization scripts:
RUN_CUSTOM_SCRIPT=true
CUSTOM_SCRIPT_PATH=./my-custom-init.sh
For VS Code users, enable workspace settings generation:
SETUP_VSCODE=true
PROJECT_TYPE=django \
PROJECT_NAME=my-api \
SETUP_DOCKER=true \
SETUP_CI=true \
./project-init.sh --non-interactive
./project-init.sh --type react --name my-app
# Then select TypeScript and Vite options
PROJECT_TYPE=python \
PROJECT_NAME=awesome-package \
LICENSE=MIT \
./project-init.sh --non-interactive
Permission Denied
chmod +x project-init.sh
GitHub CLI Not Found
brew install gh
(macOS) or apt install gh
(Ubuntu)Python/Node Version Issues
PYTHON_VERSION
or NODE_VERSION
in .env
Check the wizard log for detailed information:
tail -f ~/.project-wizard/wizard.log
The consolidated project-init.sh
provides:
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
git checkout -b feature/amazing-feature
)git commit -m 'Add amazing feature'
)git push origin feature/amazing-feature
)For issues, questions, or suggestions:
~/.project-wizard/wizard.log
Happy Coding! ๐
Built with โค๏ธ by the developer community