Forge your project structure in seconds.
A desktop app that automates repository creation with professional templates — no terminal required.
"From idea to repository — in seconds."
Every developer knows the pain: you have a great idea, but before writing a single line of meaningful code, you spend 10 minutes creating folders, adding boilerplate files, and setting up the same structure you've done a hundred times before.
RepoForge eliminates that friction.
It's a modern desktop application built with Python and CustomTkinter that generates complete, professional project structures for the most common tech stacks — with a single click, no terminal required. Choose your destination folder, pick a template, and your project is ready to go.
| Without RepoForge | With RepoForge |
|---|---|
| Manually create each folder | Click once, done |
Forget files like .gitignore or .env |
Every file included by default |
| Repeat the same setup every project | Consistent structure every time |
| Risk typos in folder names | Predefined, battle-tested templates |
| Open terminal, remember commands | Clean GUI — just point and click |
| Empty README with no content | Auto-generated README with your project info |
RepoForge doesn't replace Git or your IDE. It gives you the perfect starting point so you can focus on what actually matters: building.
- 🖥️ Modern dark UI built with CustomTkinter
- 📁 Automatic folder and file generation using Python's
pathlib - 🧩 4 ready-to-use templates for popular tech stacks
- 📝 Auto-generated README with your project name and description
- 📂 Custom output directory — choose exactly where to create your project
- 🔍 Duplicate project detection — prevents overwriting existing folders
- ⚡ Instant boilerplate — from zero to structured project in under 5 seconds
- 🧼 No terminal needed — fully GUI-driven experience
project/
├── src/
│ ├── __init__.py
│ └── main.py
├── tests/
│ └── __init__.py
├── .gitignore
├── requirements.txt
└── README.md
project/
├── app/
│ ├── __init__.py
│ ├── routes/
│ ├── models/
│ ├── services/
│ ├── database/
│ └── main.py
├── tests/
│ └── __init__.py
├── .env
├── .gitignore
├── requirements.txt
└── README.md
project/
├── src/
│ ├── components/
│ ├── pages/
│ ├── hooks/
│ ├── assets/
│ ├── App.jsx
│ └── main.jsx
├── public/
│ └── index.html
├── .gitignore
├── package.json
└── README.md
project/
├── commands/
├── events/
├── utils/
├── .env
├── .gitignore
├── main.py
└── requirements.txt
┌─────────────────────────────────┐
│ ⚙️ RepoForge │
│ │
│ [ New Project [+] ] │
│ │
│ Project name │
│ ┌───────────────────────────┐ │
│ │ insert the name │ │
│ └───────────────────────────┘ │
│ │
│ Project description │
│ ┌───────────────────────────┐ │
│ │ insert the description │ │
│ └───────────────────────────┘ │
│ │
│ [ 📂 Choose folder ] │
│ ~/Documents/projects │
│ │
│ Select your technology │
│ ┌──────────────────────────┐ │
│ │ Python CLI │ │
│ ├──────────────────────────┤ │
│ │ FastAPI │ │
│ ├──────────────────────────┤ │
│ │ React │ │
│ ├──────────────────────────┤ │
│ │ Discord Bot │ │
│ └──────────────────────────┘ │
│ │
│ [ ✅ Create FastAPI repo ] │
│ │
│ Project my-api created! ✓ │
└─────────────────────────────────┘
| Technology | Purpose |
|---|---|
| Python 3.10+ | Core language |
| CustomTkinter | Modern GUI framework |
| pathlib | Filesystem operations |
RepoForge keeps it simple under the hood:
- Template definitions — each tech stack is mapped to a list of files and folders inside a Python dictionary
- Folder selection — the user picks the destination directory via a native OS folder picker
- Path resolution —
pathlib.Pathbuilds the full path for each item relative to the chosen folder and project name - Smart creation — items ending with
/are created as directories; everything else is created as a file - Auto README — the
README.mdis generated with the project name and description the user provided, instead of being left empty - Duplicate check — before creating anything, RepoForge verifies whether a folder with that name already exists in the chosen directory
- User feedback — a label updates in real time to confirm success or warn about errors
No magic. Just clean, readable Python.
Prerequisites: Python 3.10 or higher
# 1. Clone the repository
git clone <repository-url>
cd repoforge
# 2. Install dependencies
pip install customtkinter
# 3. Run the app
python main.pyNo virtual environment is required, but it's always a good practice to use one.
- Open the app with
python main.py - Click New Project [+]
- Enter your project name — this will be the folder name
- Enter an optional description — used to auto-generate the README
- Click Choose folder and select where to create the project
- Select your technology template
- Click the Create repo button
- Your project structure is ready in the folder you chose ✅
Given project name my-fastapi-app, description A REST API built with FastAPI, destination ~/Documents/projects, and the FastAPI template selected, RepoForge will generate:
~/Documents/projects/my-fastapi-app/
├── app/
│ ├── __init__.py
│ ├── routes/
│ ├── models/
│ ├── services/
│ ├── database/
│ └── main.py
├── tests/
│ └── __init__.py
├── .env
├── .gitignore
├── requirements.txt
└── README.md ← contains "# my-fastapi-app" and your description
Ready to cd into and start coding immediately.
repoforge/
├── main.py # Entry point — UI and all logic
├── requirements.txt # Project dependencies
└── README.md # This file
The project is intentionally kept simple and single-file for now. Refactoring into modules (
core/,ui/) is planned for a future version.
- Dark mode UI with CustomTkinter
- 4 project templates
- Automatic folder and file generation
- Custom output directory selector
- Auto-generated README with project name and description
- Duplicate project detection
- User feedback labels
- GitHub API integration — create remote repo automatically
- Optional GitHub push via checkbox
- Token-based authentication with secure local storage
- Token validation before saving
- AI-powered README generation based on project name, description and template
- Custom template creator — define your own folder structures
- Templates stored as external JSON files — community-extensible
- Settings screen with persistent configuration
- Git operations without Git installed (pure Python via Dulwich)
- One-click: local structure + GitHub repo + first push
- Multi-platform hosting support (GitHub, Codeberg, GitLab)
- Executable distribution via PyInstaller
Contributions are welcome! If you have ideas for new templates, features, or bug fixes:
- Fork the repository
- Create a new branch (
git checkout -b feature/your-feature) - Commit your changes (
git commit -m 'Add your feature') - Push to the branch (
git push origin feature/your-feature) - Open a Pull Request
Please keep PRs focused and well-described.
This project is licensed under the MIT License — feel free to use, modify, and distribute it.
See the LICENSE file for details.
Built with focus, curiosity, and a genuine desire to solve a real developer problem.
Special thanks to:
- Tom Schimansky for the excellent CustomTkinter library
- The Python community for
pathliband the broader standard library
Made with ☕ and Python
⭐ If RepoForge saved you time, consider starring the repo!