Quick access to the top 10 cloud storage providers (logos + links) from a compact browser toolbar popup.
Quickly open the most popular cloud storage services from your browser toolbar.
Cloud Finder is a small, zero-build Chrome extension that renders a compact, interactive popup listing the top 10 cloud storage providers. Each provider shows a logo and opens the provider's website in a new tab when clicked.
This repository contains the extension's static source files (HTML, CSS, JavaScript), icons and a minimal test suite.
- Language: JavaScript (ES modules)
- Markup & styling: HTML, CSS
- Chrome Extension Manifest: Manifest V3
- Package manager / tooling: npm (devDependencies include Jest, ESLint, Stylelint)
- Tests: Jest + jsdom
- No frontend framework (vanilla JS)
manifest.json— Chrome extension manifest (manifest_version: 3).action.default_popup->popup.html(popup entry point).- Declared icons:
icons/icon16.png,icons/icon48.png,icons/icon128.png. - Permissions:
activeTab(minimal permission set).
popup.html— Popup UI and includessrc/styles/*.cssandsrc/popup.js.src/popup.js— Main popup script that renders the interactive list. ExportsrenderCloudListandcloudsfor tests.src/styles/— CSS files:design_variables.css,style.css.
Present in the repository (useful for the Chrome Web Store and GitHub README):
- Icons:
icons/icon16.png,icons/icon48.png,icons/icon128.png(these satisfy the basic extension icon requirement). - Provider logos:
icons/google-drive.png,icons/onedrive.png,icons/icloud.png,icons/dropbox.png,icons/box.png,icons/mega.png,icons/aws-s3.png,icons/mediafire.png,icons/pcloud.png,icons/sync.png. - Screenshots:
icons/Screenshot.pngandicons/Screenshot 2025-07-12 170525.png(these can be used as screenshots in the store listing but may need resizing/cropping).
.
├── icons/ # Extension icons, provider logos, screenshots
├── public/ # SVG icons used for packaging (kept for reference)
├── src/ # Source files (popup HTML/CSS/JS)
│ ├── popup.js # Main popup logic (renderCloudList + clouds)
│ └── styles/ # CSS files
├── tests/ # Jest tests (jsdom environment)
│ └── popup.test.js
├── popup.html # Popup markup (included by `manifest.json`)
├── manifest.json # Chrome extension manifest (v3)
├── package.json # Project metadata, scripts, devDependencies
└── README.md # This file
- Node.js (recommended LTS, e.g. 18.x or later) and npm (npm comes with Node.js).
- Google Chrome or another Chromium-based browser for local testing.
Note: the commands below assume a Windows environment with cmd.exe. Replace with your preferred shell if needed.
-
Clone repository
git clone https://github.com/sasaisaschi/cloud_finder_extension.git cd cloud_finder_extension -
Install dev dependencies
npm install
There is no build step — the extension consists of static files that Chrome can load directly.
- Open Chrome and go to
chrome://extensions. - Enable "Developer mode" (toggle, top-right).
- Click "Load unpacked" / "Load unpacked extension" and select the repository root folder.
- Find the "Cloud Finder" extension in the list and pin it to the toolbar if desired.
npm test— Run the Jest unit tests (jsdom environment).npm run lint:js— Run ESLint onsrcJavaScript files.npm run lint:css— Run Stylelint onsrc/stylesCSS.
Example commands (Windows cmd.exe)
-
Run tests:
npm test -
Run linters:
npm run lint:js npm run lint:css
-
The repository includes a small Jest test suite at
tests/popup.test.jswhich:- verifies the
renderCloudList()function renders 10 provider entries, - verifies each entry contains a link and an image that reference the expected URL and icon.
- verifies the
-
Run the tests with
npm test.
- Declared permission in
manifest.json:activeTab(minimal). The extension itself does not request broad host permissions. - The extension contains static links to provider websites and does not make background network requests or collect user data (based on current source). If you add analytics, crash reporting, or remote assets, update the privacy policy and manifest permissions accordingly.
The following is a checklist for preparing a Chrome Web Store listing. Items marked "Present" were detected in the repository; items marked "Missing" should be added before publishing.
- Name: Present (
manifest.json->name: "Cloud Finder") — Consider localizing and using a store-optimized name. (Status: Present) - Short description (store): Present but currently the
manifest.jsonandpackage.jsondescriptionfields are in German. Provide an English short description for the store (max length enforced by the store). (Status: Present -> translate to English)- Suggested short description (EN): "Quick access to the top 10 cloud storage services with logos and links."
- Detailed description: Missing (you should prepare a clean, English detailed description for the Chrome Web Store). (Status: Missing)
- Extension icons (16/48/128): Present (
icons/icon16.png,icons/icon48.png,icons/icon128.png). (Status: Present) - Screenshots (at least one): Present (
icons/Screenshot.png,icons/Screenshot 2025-07-12 170525.png) — make sure they match the store's required sizes and show the popup in a real browser window. (Status: Present) - Promotional images / feature graphic (required for some stores): Missing (Status: Missing)
- Privacy policy URL: Missing — required if you process or transmit any user data; recommended even if you do not. (Status: Missing)
- Support / Help URL: Present via
package.json->bugs.urlandhomepage. Make sure these links point to a public repo or support page. (Status: Present) - Category selection, targeted countries, and pricing: store-managed and must be set at publish time.
- Compliance & content policies: Prepare a short privacy statement and ensure you comply with Chrome Web Store policies.
- Translate the extension
nameanddescriptionto English and other target locales. - Write a polished, store-ready Detailed description (English) that includes features, short usage steps, and support info.
- Create/resize screenshots to match store requirements (PNG, recommended dimensions). Provide at least one screenshot that clearly shows the popup UI in Chrome.
- Add a short privacy policy document (GitHub Pages or any public URL) and link it from the store listing. Even if you don't collect data, a short privacy note reduces friction.
- Add a promotional image / feature graphic if you want to appear in curated collections (check store requirements).
- Add CI (GitHub Actions) to run tests & linters on PRs and push badges to the repo README (optional but recommended).
Short description: Quick access to the top 10 cloud storage services with logos and direct links.
Detailed description (example):
Cloud Finder puts the most popular cloud storage providers one click away. Open the extension from the browser toolbar and choose a service — each entry shows the provider logo and opens the provider's site in a new tab. Cloud Finder is lightweight, requires no login, and requests minimal permissions.
Usage:
- Click the Cloud Finder icon in the Chrome toolbar.
- Select a cloud provider from the list to open it in a new tab.
- Issues and feature requests: https://github.com/sasaisaschi/cloud_finder_extension/issues
- Repository / homepage: https://github.com/sasaisaschi/cloud_finder_extension
- This extension does not require any environment variables to build or run locally.
- If you add third-party services or analytics, list required environment variables here and add instructions for secure handling (do not check secrets into source control).
Contributions are welcome. Please open issues for bugs or feature requests and send pull requests for fixes or improvements. Basic development flow:
- Fork the repo
- Create a feature branch
- Run tests and linters locally
- Open a PR with a clear description and link to relevant issues
This project is licensed under the MIT License (see package.json -> license).
- Author: Sascha Riemenschneider (as listed in
package.json).
- Add a GitHub Actions workflow to run
npm testandnpm run lint:js/npm run lint:csson pull requests. - Add README badges for CI, test status and npm version once CI is set up.
- Translate
manifest.jsonandpackage.jsondescription fields to English for the store listing. - Write a store-ready Detailed Description (English).
- Add or host a Privacy Policy and provide its public URL on the store listing.
- Prepare at least 1 store-ready screenshot (1280×800 recommended) and an optional promotional image.
- Consider adding CI (GitHub Actions) to run tests & linters and publish badges.
- Add an options page if you want users to configure default behavior.
- Add localization / i18n for multiple languages.
- Add analytics only with explicit user consent and document the data flow in a privacy policy.
- Minimal manifest (v3) present.
- Popup UI present and interactive (links open in new tab).
- Icons and screenshots included in the repo.
- Minimal permissions requested.
If you want, I can also:
- Draft a polished English Detailed Description for the Chrome Web Store listing.
- Generate suggested privacy policy text you can host on GitHub Pages.
- Produce resized, store-ready screenshots from the existing images (I can provide image specs and recommended crop suggestions).
Last inspected files used to generate this README:
package.json(name, version, scripts, author, license)manifest.json(name, version, description, permissions, icons, popup)popup.html,src/popup.js,src/styles/*,icons/*,tests/popup.test.js
License: MIT