All Projects → aditeyabaral → togepi

aditeyabaral / togepi

Licence: other
A version control system built using Python and DropBox API

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to togepi

PySimpleGUI
Launched in 2018. It's 2022 and PySimpleGUI is actively developed & supported. Create complex windows simply. Supports tkinter, Qt, WxPython, Remi (in browser). Create GUI applications trivially with a full set of widgets. Multi-Window applications are also simple. 3.4 to 3.11 supported. 325+ Demo programs & Cookbook for rapid start. Extensive d…
Stars: ✭ 10,846 (+47056.52%)
Mutual labels:  tkinter, tkinter-gui
ttkbootstrap
A supercharged theme extension for tkinter that enables on-demand modern flat style themes inspired by Bootstrap.
Stars: ✭ 512 (+2126.09%)
Mutual labels:  tkinter, tkinter-gui
Tkinter-Designer
An easy and fast way to create a Python GUI 🐍
Stars: ✭ 4,697 (+20321.74%)
Mutual labels:  tkinter, tkinter-gui
TKinterDesigner
TKinterDesigner is a tool software to develop the Python User Interface for Python programmer.
Stars: ✭ 663 (+2782.61%)
Mutual labels:  tkinter, tkinter-gui
Python-Media-Player
Simple Music Player Written in Python And Tkinter
Stars: ✭ 40 (+73.91%)
Mutual labels:  tkinter, tkinter-gui
tkmacosx
Tkmacosx is a Python library extension to the Tkinter module. Change background and foreground colors of a Button, Use ColorVar to change colors of multiple widgets just like StringVar, and much more.
Stars: ✭ 48 (+108.7%)
Mutual labels:  tkinter, tkinter-gui
Form-Labeller
Use this tool to label forms, bounding boxes, and assigning types to annotations
Stars: ✭ 17 (-26.09%)
Mutual labels:  tkinter, tkinter-gui
tkinter-tabview
tkinter-tabview
Stars: ✭ 41 (+78.26%)
Mutual labels:  tkinter, tkinter-gui
EncrypC
🔑 File Encryption Application using Python.
Stars: ✭ 14 (-39.13%)
Mutual labels:  tkinter, tkinter-gui
python-gui-demos
This repo contains the basic demonstration of python gui
Stars: ✭ 31 (+34.78%)
Mutual labels:  tkinter, tkinter-gui
CustomTkinter
A modern and customizable python UI-library based on Tkinter
Stars: ✭ 1,626 (+6969.57%)
Mutual labels:  tkinter, tkinter-gui
dboxpaper
client for Dropbox Paper
Stars: ✭ 90 (+291.3%)
Mutual labels:  dropbox, dropbox-api
dropbox-api-spec
The Official API Spec for Dropbox API V2 SDKs.
Stars: ✭ 36 (+56.52%)
Mutual labels:  dropbox, dropbox-api
Sparkleshare
Share and collaborate by syncing with any Git repository instantly. Linux, macOS, and Windows.
Stars: ✭ 4,661 (+20165.22%)
Mutual labels:  dropbox, version-control
Dropbox Filesystem Fix
Fix the filesystem detection in the Linux Dropbox client
Stars: ✭ 144 (+526.09%)
Mutual labels:  dropbox
Sublimenotebook
📝 Make Sublime Text your favorite note taking/journal application
Stars: ✭ 203 (+782.61%)
Mutual labels:  dropbox
Dropbox api
Ruby client library for Dropbox API v2
Stars: ✭ 142 (+517.39%)
Mutual labels:  dropbox
Ytdlrc
☁️ Downloads videos and metadata with youtube-dl and moves each file on completion to an rclone remote
Stars: ✭ 140 (+508.7%)
Mutual labels:  dropbox
Sharex
ShareX is a free and open source program that lets you capture or record any area of your screen and share it with a single press of a key. It also allows uploading images, text or other types of files to many supported destinations you can choose from.
Stars: ✭ 18,143 (+78782.61%)
Mutual labels:  dropbox
Cakephp File Storage
Abstract file storage and upload plugin for CakePHP. Write to local disk, FTP, S3, Dropbox and more through a single interface. It's not just yet another uploader but a complete storage solution.
Stars: ✭ 202 (+778.26%)
Mutual labels:  dropbox

Togepi

A version control system built using Python and DropBox API

Togepi can be used both on command line as well as through a GUI window, however we do suggest using the CLI to access all of Togepi's features, due to certain implementation based restrictions in the GUI.

Togepi supports most major version control features such as add, commit, pull, push, status, clone to name a few. The CLI also features prominent CLI utility tools to help out such as clear, cd, mkdir, rmdir, nano, ls and cat.

The GUI interface is basic and supports only the core features. There are no plans to extend work on the GUI since the interface was included as a course deliverable.

Setting up Togepi

  1. Create a virtual environment using virtualenv
virtualenv togepi
source togepi/bin/activate
  1. Install the dependencies using pip3 install -r requirements.txt
  2. Create a .env file and add the following keys
DATABASE_URL=
DB_URL=(same as above)
DROPBOX_API_KEY=
DROPBOX_API_SECRET=
DROPBOX_ACC_TOK=
  1. Create the database schema for Togepi

You can create the schema for the database using database.py inside the app directory. Navigate into the folder, run python3 and execute the following commands

>>> from database import db
>>> db.create_all()

Note that if you are running it via an online database such as Heroku-PostgreSQL, you will need to run the above commands on the hosted Python environment.

How to use Togepi

Command Line Interface

To run Togepi on command-line, run python3 src/main.py

If you would like to run with the debugger, use python3 src/main.py debug

Welcome to Togepi!
>>>

User Level Functions

Create User

You can create users using tgp user create. This will create user specific directories on DropBox as well.

>>> tgp user create
Enter username: aronyabaksy
Enter email: [email protected]
Enter password:
Creating ID: USER000003
New user successfully created.

Login as User

You can create users using tgp user login

>>> tgp user login
Enter username: aditeyabaral
Enter password: 
Welcome back, aditeyabaral

Logout

You can logout using tgp user logout

>>> tgp user logout
You have logged out.

Repository Level Functions

To access repository functions, you need to be inside a directory with a .togepi subfolder. The .togepi subfolder handles all commit history, and stores the diffs in tracked files across commits.

You can either navigate to a directory with cd or clone or create a repository as required.

Creating Repositories

You can create a repository using tgp init [REPOSITORY NAME]. This will create a local directory with a .togepi subfolder to handle commit history. The repository will also gets created on DropBox.

>>> tgp init myfirstrepo
Enter repository description? [y/n]: y
Enter repository description (under 150 chars): this is myfirstrepo
Enter repository visibility [public/private]: public
New repository successfully created.
Uploading .togepi/tgpinfo.txt

Cloning a Repository

To clone a repository, it either needs to be public or you need to have collaborator access to it. Clone a repository using tgp clone [USERNAME]/[REPOSITORY NAME]

>>> tgp clone aditeyabaral/helloworld
Cloning repository helloworld...
Archive:  helloworld.zip
   creating: helloworld/
   creating: helloworld/.togepi/
 extracting: helloworld/.togepi/tgpinfo.txt

Tracking Files

You can track files using the tgp add [.|FILEPATH FILEPATH ...]. Using a . will track all files inside the directory recursively.

>>> tgp add .
File ./helloworld.txt successfully tracked.
File ./.togepi/tgpinfo.txt successfully tracked.

Making Commits

You can create commits using tgp commit [COMMIT MESSAGE]. Once committed, diff files are generated and commit history is created in .togepi.

>>> tgp commit add helloworld.txt           
added changes: ./helloworld.txt
1 files changed: 1 addtions(+) 0 deletions(-)

Fetching and Displaying Status

You can fetch the commit history on the remote and compare it with your local working copy. To perform a check, run tgp status

>>> tgp status
modified: ./.togepi/tgpinfo.txt
modified: ./helloworld.txt

Pushing Changes

You can push your changes to the remote using tgp push. This will update the repository directory on DropBox with the files in your local repository directory.

>>> tgp push
Uploading helloworld.txt
Uploading .togepi/tgpinfo.txt
Uploading .togepi/COMMIT000005--2021-04-11-16:42:57/FILE000008.txt

Pulling Changes from Remote

You can pull changes from remote using tgp pull. Internally, a tgp status is also performed to check for diffs in each file.

>>> tgp pull
Pulling changes...
Archive:  myfirstrepo.zip
 extracting: myfirstrepo/hi.txt      
 extracting: myfirstrepo/helloworld.txt  
 extracting: myfirstrepo/.togepi/tgpinfo.txt  
   creating: myfirstrepo/.togepi/COMMIT000006--2021-04-11-18:49:18/
 extracting: myfirstrepo/.togepi/COMMIT000005--2021-04-11-16:42:57/FILE000008.txt  
 extracting: myfirstrepo/.togepi/COMMIT000006--2021-04-11-18:49:18/FILE000010.txt 

Adding Collaborators

To add a collaborator, you need to be the owner of the repository. Add a collaborator using tgp repo add collab [USERNAME]

>>> tgp repo add collab aronyabaksy
User aronyabaksy successfully added as collaborator.

Command Line Tools

Togepi also features prominent command line utilities to allow users to quickly made file edits as well as move files and folders without leaving the application.

  1. cd [PATH]
  2. ls [OPTIONAL=DIRECTORY PATH]
  3. cat [FILE PATH]
  4. mkdir [DIRECTORY PATH]
  5. rmdir [DIRECTORY PATH]
  6. nano [FILE PATH]
  7. clear or cls

Help

Togepi also features a convenient help command to assist you in times of need.

>>> help
TOGEPI

Togepi is a version control system built using Python3 and DropBox API

1. User Commands

tgp create user -- Create an account
tgp user login username password -- Login to existing account

2. Repository Commands

tgp init repository_name -- Create a new repository
...

Togepi

If you would like to see a cute Togepi, just type togepi

>>> togepi
                            ...:`                 
           `....         ...    /                 
           /   `....` ...    `  `/                
          --        `-`     ``````:  .-.--......  
          /`               ```````:-.```````  `/  
          /`     ``.-.    ``..```````         .:  
 `..     `/`    --:d/    ```oo`:``````````````/   
-```--. .-`     -.:- +o+/```h+`/`````````````-`   
:`   `.:-: `.`   `` `sss-`````.`````````````-.    
`-`    `::..`:   .` .so/```````````````````.-     
 :```  `-    `:`-.-../-.-.``````````````````-     
  :````:`.`   -.     ``  :-```..-.   `.--...:....`
  `:----+o:               .-..`` :.`.---.`      --
   :..`:os`    :-..`       `` `.:/+-``-       `.: 
   /````..     :`...--`      -+o-/s- :```````.--  
   /```        +-+`-::/:-`   .so`/o+ -/.```./-`   
   +`::`   ````+/o`  -+:+-    +o+o/.``.---../     
   /soso-``  ``-++/./+++-``````-.``````````:`     
    oooos+.   ``/+++++:``````````..````````:      
    `/`/sos:`  ``//:-`````````.:+++/```` `:       
     `:`-oos+```````````````./++/o+:`  ``:        
       --.sos/`````````````:+o/.:+o`  `-.         
        `/os+`````````````+++o//+o-`.-.           
     `-..``.:---```````````-::///+:-/--`          
    :--`    `..:+-.----..----:/::.`   `.-.        
    -+....----.               `--.     .-:.       
                                 `....----

Graphical User Interface

To run Togepi using a GUI, run python3 src/gui.py. The interface itself is easy and intuitive to use and should not take too much time understanding your way around it.

After Registering or Logging In

Creating a Repository

After Choosing a Repository

Additional screenshots have been added to img/gui for reference.

Contributing to Togepi

Contributions to Togepi are welcome, in the form of bug fixes as well as feature enhancements. We look forward to adding more features to the CLI, such as forks and branches.

Acknowledgements

This project was made as a part of the Object Oriented Analysis and Design & Software Engineering Laboratory Course (UE18CS355) at PES University.

Aditeya Baral
Aronya Baksy
Ansh Sarkar

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].