{"id":20642523,"url":"https://github.com/aditeyabaral/togepi","last_synced_at":"2025-06-26T07:33:56.546Z","repository":{"id":42005085,"uuid":"350223829","full_name":"aditeyabaral/togepi","owner":"aditeyabaral","description":"A version control system built using Python and DropBox API","archived":false,"fork":false,"pushed_at":"2022-04-25T15:29:07.000Z","size":23414,"stargazers_count":26,"open_issues_count":4,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-29T03:32:15.681Z","etag":null,"topics":["dropbox","dropbox-api","python","python3","tkinter","tkinter-gui","version-control"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aditeyabaral.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-03-22T05:54:20.000Z","updated_at":"2024-05-02T20:19:48.000Z","dependencies_parsed_at":"2022-08-12T02:01:23.106Z","dependency_job_id":null,"html_url":"https://github.com/aditeyabaral/togepi","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aditeyabaral%2Ftogepi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aditeyabaral%2Ftogepi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aditeyabaral%2Ftogepi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aditeyabaral%2Ftogepi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aditeyabaral","download_url":"https://codeload.github.com/aditeyabaral/togepi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249182799,"owners_count":21226123,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dropbox","dropbox-api","python","python3","tkinter","tkinter-gui","version-control"],"created_at":"2024-11-16T16:09:21.498Z","updated_at":"2025-04-16T01:41:44.554Z","avatar_url":"https://github.com/aditeyabaral.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Togepi\n\nA version control system built using Python and DropBox API\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"img/togepi.jpg\"\u003e\n\u003c/p\u003e\n\nTogepi 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.\n\nTogepi 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`.\n\nThe 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.\n\n# Setting up Togepi\n1. Create a virtual environment using `virtualenv`\n```bash\nvirtualenv togepi\nsource togepi/bin/activate\n```\n2. Install the dependencies using `pip3 install -r requirements.txt`\n3. Create a `.env` file and add the following keys\n```env\nDATABASE_URL=\nDB_URL=(same as above)\nDROPBOX_API_KEY=\nDROPBOX_API_SECRET=\nDROPBOX_ACC_TOK=\n```\n4. Create the database schema for Togepi\n\nYou 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\n```Python\n\u003e\u003e\u003e from database import db\n\u003e\u003e\u003e db.create_all()\n```\nNote 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.\n\n# How to use Togepi\n\n## Command Line Interface\n\nTo run Togepi on command-line, run `python3 src/main.py`\n\nIf you would like to run with the debugger, use `python3 src/main.py debug`\n\n```bash\nWelcome to Togepi!\n\u003e\u003e\u003e\n```\n\n### User Level Functions\n\n#### Create User\n\nYou can create users using `tgp user create`. This will create user specific directories on DropBox as well.\n\n```bash\n\u003e\u003e\u003e tgp user create\nEnter username: aronyabaksy\nEnter email: abaksy@gmail.com\nEnter password:\nCreating ID: USER000003\nNew user successfully created.\n```\n\n#### Login as User\n\nYou can create users using `tgp user login`\n```bash\n\u003e\u003e\u003e tgp user login\nEnter username: aditeyabaral\nEnter password: \nWelcome back, aditeyabaral\n```\n\n#### Logout\n\nYou can logout using `tgp user logout`\n```bash\n\u003e\u003e\u003e tgp user logout\nYou have logged out.\n```\n\n### Repository Level Functions\n\nTo 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.\n\nYou can either navigate to a directory with `cd` or clone or create a repository as required.\n\n#### Creating Repositories\n\nYou 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.\n\n```bash\n\u003e\u003e\u003e tgp init myfirstrepo\nEnter repository description? [y/n]: y\nEnter repository description (under 150 chars): this is myfirstrepo\nEnter repository visibility [public/private]: public\nNew repository successfully created.\nUploading .togepi/tgpinfo.txt\n```\n\n#### Cloning a Repository\nTo 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]`\n\n```bash\n\u003e\u003e\u003e tgp clone aditeyabaral/helloworld\nCloning repository helloworld...\nArchive:  helloworld.zip\n   creating: helloworld/\n   creating: helloworld/.togepi/\n extracting: helloworld/.togepi/tgpinfo.txt\n```\n\n#### Tracking Files\n\nYou can track files using the `tgp add [.|FILEPATH FILEPATH ...]`. Using a `.` will track all files inside the directory recursively. \n\n```bash\n\u003e\u003e\u003e tgp add .\nFile ./helloworld.txt successfully tracked.\nFile ./.togepi/tgpinfo.txt successfully tracked.\n```\n\n#### Making Commits\n\nYou can create commits using `tgp commit [COMMIT MESSAGE]`. Once committed, diff files are generated and commit history is created in `.togepi`.\n\n```bash\n\u003e\u003e\u003e tgp commit add helloworld.txt           \nadded changes: ./helloworld.txt\n1 files changed: 1 addtions(+) 0 deletions(-)\n```\n\n#### Fetching and Displaying Status\n\nYou can fetch the commit history on the remote and compare it with your local working copy. To perform a check, run `tgp status`\n\n```bash\n\u003e\u003e\u003e tgp status\nmodified: ./.togepi/tgpinfo.txt\nmodified: ./helloworld.txt\n```\n\n#### Pushing Changes\n\nYou 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.\n\n```bash\n\u003e\u003e\u003e tgp push\nUploading helloworld.txt\nUploading .togepi/tgpinfo.txt\nUploading .togepi/COMMIT000005--2021-04-11-16:42:57/FILE000008.txt\n```\n\n#### Pulling Changes from Remote\n\nYou can pull changes from remote using `tgp pull`. Internally, a `tgp status` is also performed to check for diffs in each file.\n\n```bash\n\u003e\u003e\u003e tgp pull\nPulling changes...\nArchive:  myfirstrepo.zip\n extracting: myfirstrepo/hi.txt      \n extracting: myfirstrepo/helloworld.txt  \n extracting: myfirstrepo/.togepi/tgpinfo.txt  \n   creating: myfirstrepo/.togepi/COMMIT000006--2021-04-11-18:49:18/\n extracting: myfirstrepo/.togepi/COMMIT000005--2021-04-11-16:42:57/FILE000008.txt  \n extracting: myfirstrepo/.togepi/COMMIT000006--2021-04-11-18:49:18/FILE000010.txt \n```\n\n#### Adding Collaborators\nTo add a collaborator, you need to be the owner of the repository. Add a collaborator using `tgp repo add collab [USERNAME]`\n\n```bash\n\u003e\u003e\u003e tgp repo add collab aronyabaksy\nUser aronyabaksy successfully added as collaborator.\n```\n\n### Command Line Tools\nTogepi 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.\n\n1. `cd [PATH]`\n2. `ls [OPTIONAL=DIRECTORY PATH]`\n3. `cat [FILE PATH]`\n4. `mkdir [DIRECTORY PATH]`\n5. `rmdir [DIRECTORY PATH]`\n6. `nano [FILE PATH]`\n7. `clear` or `cls`\n\n### Help\nTogepi also features a convenient `help` command to assist you in times of need.\n\n```bash\n\u003e\u003e\u003e help\nTOGEPI\n\nTogepi is a version control system built using Python3 and DropBox API\n\n1. User Commands\n\ntgp create user -- Create an account\ntgp user login username password -- Login to existing account\n\n2. Repository Commands\n\ntgp init repository_name -- Create a new repository\n...\n```\n\n### Togepi\n\nIf you would like to see a cute Togepi, just type `togepi` \n\n```bash\n\u003e\u003e\u003e togepi\n                            ...:`                 \n           `....         ...    /                 \n           /   `....` ...    `  `/                \n          --        `-`     ``````:  .-.--......  \n          /`               ```````:-.```````  `/  \n          /`     ``.-.    ``..```````         .:  \n `..     `/`    --:d/    ```oo`:``````````````/   \n-```--. .-`     -.:- +o+/```h+`/`````````````-`   \n:`   `.:-: `.`   `` `sss-`````.`````````````-.    \n`-`    `::..`:   .` .so/```````````````````.-     \n :```  `-    `:`-.-../-.-.``````````````````-     \n  :````:`.`   -.     ``  :-```..-.   `.--...:....`\n  `:----+o:               .-..`` :.`.---.`      --\n   :..`:os`    :-..`       `` `.:/+-``-       `.: \n   /````..     :`...--`      -+o-/s- :```````.--  \n   /```        +-+`-::/:-`   .so`/o+ -/.```./-`   \n   +`::`   ````+/o`  -+:+-    +o+o/.``.---../     \n   /soso-``  ``-++/./+++-``````-.``````````:`     \n    oooos+.   ``/+++++:``````````..````````:      \n    `/`/sos:`  ``//:-`````````.:+++/```` `:       \n     `:`-oos+```````````````./++/o+:`  ``:        \n       --.sos/`````````````:+o/.:+o`  `-.         \n        `/os+`````````````+++o//+o-`.-.           \n     `-..``.:---```````````-::///+:-/--`          \n    :--`    `..:+-.----..----:/::.`   `.-.        \n    -+....----.               `--.     .-:.       \n                                 `....----\n```\n\n\n## Graphical User Interface\n\nTo 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.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"img/gui/gui-home.png\"\u003e\n\u003c/p\u003e\n\n### After Registering or Logging In\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"img/gui/gui-main.png\"\u003e\n\u003c/p\u003e\n\n### Creating a Repository\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"img/gui/gui-createrepo.png\"\u003e\n\u003c/p\u003e\n\n### After Choosing a Repository\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"img/gui/gui-repo.png\"\u003e\n\u003c/p\u003e\n\nAdditional screenshots have been added to `img/gui` for reference.\n\n# Contributing to Togepi\n\nContributions 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`.\n\n# Acknowledgements\n\nThis project was made as a part of the Object Oriented Analysis and Design \u0026 Software Engineering Laboratory Course (UE18CS355) at PES University. \n\n[Aditeya Baral](https://github.com/aditeyabaral)\u003cbr\u003e\n[Aronya Baksy](https://github.com/abaksy)\u003cbr\u003e\n[Ansh Sarkar](https://github.com/anshsarkar)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faditeyabaral%2Ftogepi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faditeyabaral%2Ftogepi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faditeyabaral%2Ftogepi/lists"}