{"id":31812824,"url":"https://github.com/vaibhav2002/docubox","last_synced_at":"2025-10-11T07:42:55.731Z","repository":{"id":41114699,"uuid":"499822014","full_name":"Vaibhav2002/DocuBox","owner":"Vaibhav2002","description":"DocuBox is an android app 📱in which you can securely upload your files on the cloud– from family pictures and audio recordings to spreadsheets, presentations and other confidential documents.","archived":false,"fork":false,"pushed_at":"2022-11-08T11:29:01.000Z","size":27520,"stargazers_count":47,"open_issues_count":0,"forks_count":8,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-29T07:28:30.551Z","etag":null,"topics":["android","clean-code","coroutines-flow","daggerhilt","datastore","hacktoberfest","hacktoberfest2022","kotlin","linode","mvvm","retrofit2","solid-principles"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Vaibhav2002.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-06-04T12:37:49.000Z","updated_at":"2025-08-31T14:52:18.000Z","dependencies_parsed_at":"2023-01-22T11:30:53.043Z","dependency_job_id":null,"html_url":"https://github.com/Vaibhav2002/DocuBox","commit_stats":null,"previous_names":["vaibhav2002/docubox"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Vaibhav2002/DocuBox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vaibhav2002%2FDocuBox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vaibhav2002%2FDocuBox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vaibhav2002%2FDocuBox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vaibhav2002%2FDocuBox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Vaibhav2002","download_url":"https://codeload.github.com/Vaibhav2002/DocuBox/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vaibhav2002%2FDocuBox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279006624,"owners_count":26084131,"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","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["android","clean-code","coroutines-flow","daggerhilt","datastore","hacktoberfest","hacktoberfest2022","kotlin","linode","mvvm","retrofit2","solid-principles"],"created_at":"2025-10-11T07:42:53.343Z","updated_at":"2025-10-11T07:42:55.696Z","avatar_url":"https://github.com/Vaibhav2002.png","language":"Kotlin","funding_links":["https://www.buymeacoffee.com/VaibhavJaiswal","https://img.buymeacoffee.com/button-api/?text=Buy"],"categories":[],"sub_categories":[],"readme":"![](media/cover.png)\n\n# **DocuBox** \n\n### **DocuBox** is a cloud based file storing app where you can securely store and access your documents from anywhere around the world!\n\nThis project is developed by **Team 404** for Hashnode x Linode hackathon. This team comprises of [Ishant](https://github.com/ishantchauhan710/) and [Vaibhav](https://github.com/Vaibhav2002).\n\n# Blog ✍\n\nTo know more about how I build this project, read my article on https://ishantchauhan.hashnode.dev/docubox-securely-store-access-and-share-your-files-on-cloud\n\n## Application Install\n\n***You can Install and test latest DocuBox app from below 👇***\n\n[![DocuBox](https://img.shields.io/badge/DocuBox✅-APK-red.svg?style=for-the-badge\u0026logo=android)](https://github.com/Vaibhav2002/DocuBox-AndroidApp/releases/tag/v1.0.0)\n\n### How to use this app\nTo know how to use this app [read this](HOW%20TO%20USE.md) or watch this [video](https://youtu.be/z94j9FA-5oY)\n\n## Setup\n- Clone the repository on your machine.\n- Clone the [backend code](https://github.com/ishantchauhan710/DocuBox) and set it up by following its README.\n- After setting up the backend, do the following:\n\nOpen Secrets.kt in util package and add your backend Base URL\n\n```kotlin\n//Add your base url here\nconst val BASE_URL = \"http://[your server url]/api/\"\n```\n\n## About\n\nIt uses a nodejs backend which is deployed on an ubuntu server running on [Linode](https://www.linode.com).\n\n- Fully functionable. \n- Clean and Simple Material UI.\n- Best and Clean Code Quality following Modern Android Development, SOLID Principles and much more.\n\n## App Features\n\n- **User Authentication** - Supports email based authentication\n- **Saving Files** - You can upload your files to DocuBox's cloud storage and access it anywhere.\n- **File Encryption** - Files stored on DocuBox is secure and encrypted, so your data is securely stored.\n- **Sharing File Access** - You can share view access of your files to other users.\n- **File Management** - You can create multiple folders to organize your storage just as you want it.\n- **File Download** - You can even download your files and save them locally for offline access.\n- **Enhanced File Search** - Super fast file searching which can search files instantly.\n\n## Insights into the app 🔎\n\n![](media/graphicA.png)\n![](media/graphicB.png)\n![](media/graphicC.png)\n## 📸 Screenshots \n\n|   |   |   |\n|---|---|---|\n|![](media/screenshots/getting_started.jpg)| ![](media/screenshots/login.jpg) | ![](media/screenshots/register.jpg)\n|![](media/screenshots/home.jpg) | ![](media/screenshots/document.jpg) |![](media/screenshots/shared_to_me.jpg) \n|![](media/screenshots/shared_by_you.jpg)|![](media/screenshots/profile.jpg) | ![](media/screenshots/about_us.jpg)\n|![](media/screenshots/videos.jpg) | ![](media/screenshots/documents_2.jpg) | ![](media/screenshots/splash.jpg)\n\n### Technical details \n\n- DocuBox uses custom NodeJS Server running on Linode as its backend.\n- DocuBox uses Retrofit to make all REST API calls to the NodeJS backend.\n- DocuBox is made using Kotlin and following Modern Android Development practices.\n- DocuBox uses Kotlin Coroutines and Flow to handle all asynchronous tasks.\n- DocuBox uses all Jetpack libraries and follows MVVM architecture. It also has a G.O.A.T rating in Android's  M.A.D scorecard.\n- DocuBox's code follows all the best practices and software development principles like SOLID which make it a very good learning resource for beginners as well as for people looking to improve thier software design skills.\n- DocuBox's code is properly linted using Ktlint.\n\n![summary.jpg](media/summary.png)\n\n\n## Built With 🛠\n- [Kotlin](https://kotlinlang.org/) - First class and official programming language for Android development.\n- [Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html) - For asynchronous and more..\n- [Flow](https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/) - A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.\n - [StateFlow](https://developer.android.com/kotlin/flow/stateflow-and-sharedflow) - StateFlow is a state-holder observable flow that emits the current and new state updates to its collectors.\n - [SharedFlow](https://developer.android.com/kotlin/flow/stateflow-and-sharedflow) - A SharedFlow is a highly-configurable generalization of StateFlow.\n- [Android Architecture Components](https://developer.android.com/topic/libraries/architecture) - Collection of libraries that help you design robust, testable, and maintainable apps.\n  - [ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel) - Stores UI-related data that isn't destroyed on UI changes. \n  - [ViewBinding](https://developer.android.com/topic/libraries/view-binding) - Generates a binding class for each XML layout file present in that module and allows you to more easily write code that interacts with views.\n  - [DataBinding](https://developer.android.com/topic/libraries/data-binding) - Binds data directly into XML layouts\n  - [DataStore](https://developer.android.com/topic/libraries/architecture/datastore) - Jetpack DataStore is a data storage solution that allows you to store key-value pairs or typed objects with protocol buffers.\n- [Dependency Injection](https://developer.android.com/training/dependency-injection) - \n  - [Hilt-Dagger](https://dagger.dev/hilt/) - Standard library to incorporate Dagger dependency injection into an Android application.\n  - [Hilt-ViewModel](https://developer.android.com/training/dependency-injection/hilt-jetpack) - DI for injecting `ViewModel`.\n- [GSON](https://github.com/google/gson) - A modern JSON library for Kotlin and Java.\n- [Timber](https://github.com/JakeWharton/timber) - A simple logging library for android.\n- [Retrofit](https://square.github.io/retrofit/) - A type-safe HTTP client for Android and Java.\n- [GSON Converter](https://github.com/square/retrofit/tree/master/retrofit-converters/gson) - A Converter which uses Moshi for serialization to and from JSON.\n- [Coil](https://github.com/coil-kt/coil) - An image loading library for Android backed by Kotlin Coroutines.\n- [Material Components for Android](https://github.com/material-components/material-components-android) - Modular and customizable Material Design UI components for Android.\n\n## Package Structure\n\n![](media/package%20structure.png)\n    \n    com.docubox             # Root Package\n    .\n    ├── data                # For data handling.\n    |   ├── local           # Local Datasource and classes\n    |   ├── remote          # Remote datasources and API Service\n    │   ├── model           # Model data classes and mapper classes, both remote and local entities\n    │   └── repo            # Single source of data.\n    |\n    ├── service             # Foreground Service to upload File to server\n    |\n    ├── di                  # Dependency Injection             \n    │   └── module          # DI Modules\n    |\n    ├── ui                  # UI/View layer\n    |   ├── adapters        # Adapter, ViewHolder and DiffUtil\n    |   └── screens         # All App Screens \n    |\n    └── utils               # Utility Classes / Kotlin extensions\n\n\n## Architecture\nThis app uses [***MVVM (Model View View-Model)***](https://developer.android.com/jetpack/docs/guide#recommended-app-arch) architecture.\n\n![](media/architecture.png)\n  \n\n\n---\n\n## If you like my projects and want to support me to build more cool open source projects\n  \n\u003ca href=\"https://www.buymeacoffee.com/VaibhavJaiswal\"\u003e\u003cimg src=\"https://img.buymeacoffee.com/button-api/?text=Buy me a coffee\u0026emoji=\u0026slug=VaibhavJaiswal\u0026button_colour=FFDD00\u0026font_colour=000000\u0026font_family=Cookie\u0026outline_colour=000000\u0026coffee_colour=ffffff\"\u003e\u003c/a\u003e\n\n## Attribution\nThe project uses [backend](https://github.com/ishantchauhan710/DocuBox) which is deployed on [Linode](https://www.linode.com) for the [Hashnode X Linode Hackathon](https://townhall.hashnode.com/build-with-linode-hackathon-june-2022).\n\n\n---\n\n ## Contact\nIf you need any help, you can connect with me.\n\nVisit:- [Vaibhav Jaiswal](https://vaibhavjaiswal.vercel.app/#/)\n  \n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvaibhav2002%2Fdocubox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvaibhav2002%2Fdocubox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvaibhav2002%2Fdocubox/lists"}