A powerful project initialization and management tool for developers. FallOfTroy helps you quickly bootstrap new projects using customizable shell script profiles and optionally create GitHub repositories with a single click.
- 🚀 Quick Project Setup: Initialize projects with pre-configured templates (profiles)
- 📦 Profile System: Use shell scripts to define custom project structures and dependencies
- 🔧 GitHub Integration: Automatically create and push to GitHub repositories (public or private)
- 💾 Project Registry: Keep track of all your projects for easy reopening
- 🎨 Modern GUI: Clean PySide6-based interface
- Linux (x86_64)
- Python 3.7+ - The AppImage uses your system's Python installation
- Git - for version control features
- GitHub CLI (
gh) - for GitHub repository creation# Install GitHub CLI # Debian/Ubuntu: sudo apt install gh # Arch: sudo pacman -S github-cli # Fedora: sudo dnf install gh
- Text Editor - The app tries to open
zeditorby default. You can modifyFallOfTroy.pyto use your preferred editor (VS Code, Sublime, etc.) - File Manager - For the "Open profiles folder" feature (thunar, nautilus, dolphin, etc.)
- Download the latest
FallOfTroy-x86_64.AppImagefrom releases - Make it executable:
chmod +x FallOfTroy-x86_64.AppImage
- Run it:
./FallOfTroy-x86_64.AppImage
-
Clone this repository:
git clone https://github.com/iamvetruvian/FallOfTroy.git cd FallOfTroy -
Run the build script:
bash build-appimage.sh
This will:
- Download Python 3.11 AppImage
- Install dependencies
- Create
FallOfTroy-x86_64.AppImage
-
Run the AppImage:
./FallOfTroy-x86_64.AppImage
pip install -r requirements.txt
python FallOfTroy.pyProfiles are shell scripts that define how to set up a project. They receive two arguments:
$1- Parent directory path$2- Project name
Example profile (ExpressDefault.sh):
#!/usr/bin/env bash
set -e
PARENT_DIR="$1"
PROJECT_NAME="$2"
PROJECT_PATH="${PARENT_DIR}/${PROJECT_NAME}"
# Create project structure
mkdir -p "${PROJECT_PATH}"
cd "${PROJECT_PATH}"
# Initialize npm project
npm init -y
npm install express
# Create basic files
echo "const express = require('express');" > index.js
echo "node_modules/" > .gitignoreFallOfTroy stores its configuration in:
~/.config/project_daemon/
├── config.json # App settings and project registry
└── profiles/ # Your custom profiles
└── *.sh
Bundled profiles are automatically copied to this directory on first run.
- Click the "+" button next to the profile dropdown
- Enter a profile name
- Write your shell script (or paste from the official profiles repo)
- Click "Create Profile"
To use GitHub features:
-
Install and authenticate GitHub CLI:
gh auth login
-
Check the "Create a GitHub repository" option when creating a project
-
Choose visibility (Public/Private)
-
FallOfTroy will automatically:
- Initialize git
- Create initial commit
- Create GitHub repo
- Push code
AppImage won't run:
- Ensure it's executable:
chmod +x FallOfTroy-x86_64.AppImage - Try running with
--appimage-extract-and-runflag
GitHub creation fails:
- Verify
ghis installed:gh --version - Check authentication:
gh auth status
Profile execution fails:
- Check profile script syntax
- Ensure required tools (npm, pip, etc.) are installed
- View profile script:
cat ~/.config/project_daemon/profiles/YourProfile.sh
Project structure:
FallOfTroy/
├── FallOfTroy.py # Main application
├── bundled_profiles/ # Default profiles
├── requirements.txt # Python dependencies
├── build-appimage.sh # AppImage build script
└── AppDir/ # AppImage structure
├── AppRun # Launcher script
├── FallOfTroy.desktop # Desktop entry
├── FallOfTroy.png # App icon
└── usr/
├── bin/
└── share/
MIT License - See LICENSE file for details
Made with ❤️ by iamvetruvian
Contributions welcome! Please feel free to submit a Pull Request.