https://github.com/rohankishore/pushbox
PushBox is a desktop application that cleverly transforms your GitHub account into a personal cloud storage and backup solution
https://github.com/rohankishore/pushbox
backup cloud cloudstorage gitbackup github githubstorage pushbox pyqt5 pyqt5-desktop-application pyqt6 python
Last synced: 5 months ago
JSON representation
PushBox is a desktop application that cleverly transforms your GitHub account into a personal cloud storage and backup solution
- Host: GitHub
- URL: https://github.com/rohankishore/pushbox
- Owner: rohankishore
- Created: 2025-09-28T15:06:35.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2025-09-28T17:06:07.000Z (6 months ago)
- Last Synced: 2025-09-28T17:37:07.387Z (6 months ago)
- Topics: backup, cloud, cloudstorage, gitbackup, github, githubstorage, pushbox, pyqt5, pyqt5-desktop-application, pyqt6, python
- Language: Python
- Homepage:
- Size: 69.3 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# PushBox 🚀
**PushBox: Your personal, secure cloud backup powered by GitHub.**
PushBox is a desktop application that lets you use your GitHub account as a free, fast, and reliable cloud backup solution. Create virtual folders, add your important files, and push them to private GitHub repositories with a single click.
---
## Features
- **GitHub Integration**: Leverages your GitHub account to create and manage private repositories for backups.
- **Virtual Folders**: Organize local files from different locations into logical "virtual folders" within the app without moving the original files.
- **Direct Uploads**: Pushes your virtual folders to GitHub, creating a new private repository for each one.
- **Asynchronous Thumbnails**: Fetches image thumbnails directly from GitHub in the background, ensuring the UI remains responsive and functional even after local files are deleted.
- **Persistent Caching**: Caches thumbnails locally to speed up loading times and reduce API calls on subsequent launches.
- **Secure Credential Storage**: Saves your GitHub username and Personal Access Token (PAT) locally for easy access.
- **Simple Onboarding**: A quick and easy setup process to get you started.
---
## Screenshots

---
## How It Works
PushBox simplifies the backup process by automating Git and GitHub API interactions.
1. **Authenticate**: You start by providing your GitHub username and a Personal Access Token (PAT) with `repo` permissions. These are stored locally for future use.
2. **Organize**: Create a "virtual folder" inside the app. This is just a list that points to your local files; it doesn't move or duplicate them on your machine.
3. **Add Files**: Add any files from your computer to your virtual folders.
4. **Push to GitHub**: When you're ready, click "Push to GitHub." PushBox uses the GitHub API to:
- Create a new **private** repository on your GitHub account named after your virtual folder.
- Upload each file from your virtual folder into that repository.
5. **View Backups**: Your files are now safely stored on GitHub. The app loads thumbnails directly from the repository, so you always have a visual confirmation of your backup.
---
## Getting Started
Follow these instructions to get a local copy up and running.
### Prerequisites
- Python 3.8+
- A GitHub Account
- A GitHub Personal Access Token (PAT) with `repo` scope. You can create one [here](https://github.com/settings/tokens/new).
### Installation
1. **Clone the repository:**
```sh
git clone https://github.com/rohankishore/PushBox.git
cd pushbox
```
2. **Create a virtual environment (recommended):**
```sh
python -m venv venv
source venv/bin/activate # On Windows, use `venv\Scripts\activate`
```
3. **Install the required packages:**
```sh
pip install -r requirements.txt
```
---
## Usage
1. **Run the application:**
```sh
python main.py
```
2. **Onboarding**: The first time you launch, you'll see a brief onboarding guide.
3. **Authentication**: Enter your GitHub username and Personal Access Token.
4. **Create and Manage Backups**: Use the dashboard to create virtual folders, add files, and push them to GitHub.
---
## Configuration
The application stores its configuration and thumbnail cache in your user home directory:
- **Config File (`.pushbox_config.json`)**: Stores your GitHub credentials and virtual folder structure.
- **Cache Directory (`.pushbox_cache/`)**: Stores downloaded thumbnails to improve performance.
---
## Contributing
Contributions are welcome! Please feel free to fork the repository, make changes, and submit a pull request.
1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
---
## License
Distributed under the MIT License. See `LICENSE` for more information.