========== Dev Guide ========== General ================= **Abstract:** Open Drive is an open source, self hosting alternative to GoogleDrive **Problem:** Many people need a kind of backup system and want data to be synchronized. They don't want their data to be stored at servers in america or in general any third party. **Solution:** Use your own server and OpenDrive. **Target Group:** People with different devices. People with critical/important data. People who want to make a backup. **Core functionality:** - Automatically sync your files between multiple devices - Define which file/folders to sync - No third parties have access to your data **Possible features:** - Share your files and make them available for other people - Access your files from everywhere, where you have internet access - Smartphone app Details: ======== **Software:** - Core: python (with pynetworking library) - GUI: python with Kivy, maybe later on a website? **Project structure:** :: OpenDrive | README.md | setup.py | |___assets | logo.png | |___docs | | index.rst | | | |____build | | | |___internal | | | |___external | |___src | | | |___OpenDrive | | | net_interface.py | | | start.py ? | | | | | |___client_side | | | | | |___server_side | | | | | |___general | | | |___tests | | | | | |___client_side | | | | | |___server_side | | | | | |___general Style-guide: ============= This guide defines naming conventions: - *Package*: snake_case - *Python file*: snake_case - *Class*: CamelCase - *Function*: snake_case - *Variables*: snake_case - *rst file* snake_case Milestones =========== - Exchange files based on actions: 26.04.19 - System for storing changes: 03.05.19 - Merge changes between server and client. Result in actions: 12.05.19 - Merge two existing folders. (Result in actions?): 19.05.19 - GUI Layouts: 25.05.19 - Connection between GUI and backend: 02.06.19 - (Installable) - (Start on system start) Tasks ======= - GUI - input validation - beautiful design - TextInput without tabs (TF basic class) (- UI - Console interface - Same interface between console and gui) - Backend - folders - Remove folder synchronization - Remove server folder (danger) - implement all merge_methods - Edit folder privileges - Share link - Add user - Privileges - Edit - View - Full access (edit, view, delete) - synchronization - test: distribute actions to other changes files TODO next: ========== - Explorer: - validate patterns - process patterns - add sync with: paths, patterns and merge_method - hide merge_method, when a new server folder is created - option to delete server folder permanently - test synchronization with multiple devices