Description
This project aims to address the challenge of automating regular data backups from Android phones to a Nextcloud server, leveraging the Folder Sync application. While Nextcloud’s official Android client struggles with scaling large amounts of files and negatively impacts phone performance, Folder Sync offers robust and flexible syncing capabilities. However, it lacks a builtin import/export configuration feature. Even in its paid versions, Folder Sync only supports importing JSON configurations for business setups, which isn't suitable for personal use cases with Nextcloud.
Initially, the Syncthing project was considered as an alternative for this use case. Syncthing, an open source continuous file synchronization tool, is robust and reliable but lacks the fine grained flexibility that Folder Sync provides. Folder Sync supports a wider variety of backup configurations, including specific scheduling, advanced file filtering, and integration with multiple cloud providers like Nextcloud, making it the preferred choice for this project.
However, Folder Sync’s lack of an import/export feature for its SQLite3 based configurations makes managing complex setups challenging. This project aims to bridge that gap by developing an open source Python solution to export Folder Sync configurations from its SQLite3 database into a portable format (e.g., YAML or JSON) and reimport them back into the database. AI tools like Gemini and ChatGPT-4o will be utilized to assist with the design, coding, and testing process.
The outcome will help users maintain and replicate Folder Sync configurations efficiently, reducing manual setup time and increasing flexibility. This project builds on prior Hackweek efforts that focused on setting up a Nextcloud server on Kubernetes (k3s) and exploring syncing solutions.
Goals
Analyze SQLite3 Database Structure
- Understand Folder Sync’s SQLite3 database schema.
- Identify key tables and fields for configuration storage.
- Use AI for Development
- Utilize Gemini AI and ChatGPT-4o for:
- Code generation and debugging.
- Optimizing scripts for performance and scalability.
- Develop an Export Script
- Create a Python script to extract Folder Sync configurations into a user friendly format (YAML or JSON).
- Develop an Import Script
- Write a complementary script to read the exported configuration files and reapply them to the SQLite3 database.
- Testing and Validation
- Validate the scripts with real world Folder Sync configurations.
- Ensure they function seamlessly with the Nextcloud server setup.
- Publish and Share Open source the scripts on GitHub with detailed documentation to help others facing similar challenges.
Resources
- Nextcloud Server: Preconfigured server running on Kubernetes (k3s) for testing backup configurations.
- Folder Sync App: Android application with SQLite3 database access.
- Existing SQLite3 Database: Real world example configurations for analysis and testing.
- Syncthing: Open source synchronization software to evaluate and compare with Folder Sync.
- Python: Programming language for writing the scripts, with libraries like sqlite3 and ruamel.yaml for database and configuration handling.
- AI Resources
- Gemini AI: To assist with writing, reviewing, and optimizing code.
- ChatGPT 4o: As a secondary AI resource for brainstorming, coding help, and debugging.
- Knowledge and Skills
- SQLite3 database knowledge to understand Folder Sync’s configuration storage.
- Python programming expertise for database manipulation and file handling.
- YAML/JSON handling to design a user friendly configuration format.
- Documentation Tools
- GitHub for version control and sharing the scripts.
- Markdown for writing README files and project documentation.
- Testing Devices
- Android phones with Folder Sync installed for validating the export/import scripts.
- Access to the Nextcloud server for functional testing.
No Hackers yet
Looking for hackers with the skills:
Nothing? Add some keywords!
This project is part of:
Hack Week 24
Comments
Be the first to comment!
Similar Projects
This project is one of its kind!