{"id":15131448,"url":"https://github.com/lwcarani/dropbox-clone","last_synced_at":"2026-02-07T05:02:13.683Z","repository":{"id":255732011,"uuid":"849539477","full_name":"lwcarani/dropbox-clone","owner":"lwcarani","description":"CLI Dropbox clone, written in Java, using Spring, AWS (Cognito and S3)","archived":false,"fork":false,"pushed_at":"2024-09-06T20:01:39.000Z","size":47,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-26T00:29:10.439Z","etag":null,"topics":["aws","aws-cognito","aws-s3","java","spring"],"latest_commit_sha":null,"homepage":"","language":"Java","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/lwcarani.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-29T19:16:04.000Z","updated_at":"2024-10-03T19:53:50.000Z","dependencies_parsed_at":"2024-09-06T23:09:08.717Z","dependency_job_id":null,"html_url":"https://github.com/lwcarani/dropbox-clone","commit_stats":null,"previous_names":["lwcarani/dropbox-clone"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lwcarani/dropbox-clone","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lwcarani%2Fdropbox-clone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lwcarani%2Fdropbox-clone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lwcarani%2Fdropbox-clone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lwcarani%2Fdropbox-clone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lwcarani","download_url":"https://codeload.github.com/lwcarani/dropbox-clone/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lwcarani%2Fdropbox-clone/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29186742,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T03:35:06.566Z","status":"ssl_error","status_checked_at":"2026-02-07T03:34:57.604Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["aws","aws-cognito","aws-s3","java","spring"],"created_at":"2024-09-26T03:42:13.050Z","updated_at":"2026-02-07T05:02:13.666Z","avatar_url":"https://github.com/lwcarani.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dropbox Clone\n\nThis project is a command-line interface (CLI) application (written in Java) that mimics some of the core functionalities of Dropbox, allowing users to synchronize files between their local machine and cloud storage (in this particular implementation, Amazon Web Services (AWS) Simple Storage Service (S3)).\n\n## Features\n\n- User authentication\n    - new account: `signup`\n    - login: `login`\n    - logout: `logout`\n    - delete account: `delete_account`\n- File and folder operations \n    - change current working directory: `cd` \n    - create: `mkdir`\n    - delete: `rm`\n    - list: `ls`\n- Sync files between local machine and cloud storage (`push`, `pull`)\n- Change root directory (`change_root`)\n- User preferences storage\n\n## Technology Stack\n\n- Java 17\n- Spring Boot 3.1.0\n- AWS SDK for Java 1.12.465\n- AWS S3 for file storage\n- AWS Cognito for user authentication\n\n## Project Structure\n\nThe project is organized into several packages:\n\n- `io.github.lwcarani`: Main application package\n- `io.github.lwcarani.cli`: Contains the CLI runner\n- `io.github.lwcarani.config`: AWS configuration\n- `io.github.lwcarani.model`: Data models\n- `io.github.lwcarani.service`: Service interfaces and implementations\n- `io.github.lwcarani.util`: Utility classes\n\n## Setup\n\n1. Ensure you have Java 17 installed.\n2. Clone the repository:\n   ```\n   git clone https://github.com/lwcarani/dropbox-clone.git\n   ```\n3. Navigate to the project directory:\n   ```\n   cd dropbox-clone\n   ```\n4. Create an `application.properties` file in the `src/main/resources` directory with the following content:\n   ```\n   aws.s3.bucket-user-preferences=\u003cyour_s3_bucket_name_for_user_preferences\u003e\n   aws.s3.bucket-user-storage=\u003cyour_s3_bucket_name_for_user_storage\u003e\n   aws.accessKey=\u003cyour_aws_access_key\u003e\n   aws.secretKey=\u003cyour_aws_secret_key\u003e\n   aws.region=\u003cyour_aws_region\u003e\n   aws.cognito.userPoolId=\u003cyour_cognito_user_pool_id\u003e\n   aws.cognito.clientId=\u003cyour_cognito_client_id\u003e\n   aws.cognito.clientSecret=\u003cyour_cognito_client_secret\u003e\n   spring.main.banner-mode=console\n   logging.level.root=ERROR\n   ```\n\n   Replace the placeholder values with your actual AWS credentials and resource identifiers.\n\n## Dependencies\n\nThe project uses the following main dependencies:\n\n- Spring Boot Starter Web\n- Spring Boot Starter Security\n- AWS Java SDK for Amazon Cognito Identity Provider\n- AWS Java SDK for Amazon S3\n\nFor a full list of dependencies, please refer to the `pom.xml` file.\n\n## Building\n\nThe project uses the Spring Boot Maven plugin for building. The main class is set to `io.github.lwcarani.DropboxCloneApplication`.\n\nTo build a JAR file in Eclipse IDE using Maven, follow these steps:\n\n1. Ensure your project is set up as a Maven project in Eclipse.\n2. Open the project in Eclipse.\n3. Right-click on the project in the Package Explorer.\n4. Navigate to \"Run As\" \u003e \"Maven build...\"\n5. In the \"Goals\" field, enter \"clean package\"\n6. Click \"Run\"\n\nMaven will then compile your code, run any tests, and package your application into a JAR file. The JAR file will typically be created in the `target` directory of your project.\n\n## Running the Application\n\nOnce you've built a JAR file, you can run the application from the command line, like so:\n\n```\njava -jar target\\dropbox-clone-0.0.2.jar\n```\n\n## Usage\n\nOnce the application is running, you can use the following commands:\n\n- `signup`: Create a new user account\n- `login`: Log in to your account\n- `logout`: Log out of your account\n- `delete_account`: Permanently delete your account\n- `push`: Upload all local files and folders to cloud storage\n- `pull`: Download all files and folders from cloud to local machine\n- `mkdir \u003cfolder_name\u003e`: Create a new directory\n- `cd \u003cpath\u003e`: Change current directory\n- `ls \u003cpath\u003e`: List contents of current or specified directory\n- `rm \u003cpath\u003e`: Delete a directory and its contents (both locally and in cloud)\n- `change_root \u003cpath\u003e`: Set a new root directory for your Dropbox Clone files\n- `help`: Display available commands\n- `exit`: Exit the application\n\n## Contributing\n\nFeedback, bug reports, issues, and pull requests welcome!\n\n## Acknowledgements\nThanks to [John Crickett](https://github.com/JohnCrickett) for the idea from his site, [Coding Challenges](https://codingchallenges.fyi/challenges/challenge-dropbox/)!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flwcarani%2Fdropbox-clone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flwcarani%2Fdropbox-clone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flwcarani%2Fdropbox-clone/lists"}