{"id":28568457,"url":"https://github.com/sanmeet007/visionate","last_synced_at":"2026-04-10T21:47:11.794Z","repository":{"id":295318080,"uuid":"927371926","full_name":"Sanmeet007/visionate","owner":"Sanmeet007","description":"Chrome extension that automatically generates captions for images lacking alt text.","archived":false,"fork":false,"pushed_at":"2025-05-24T20:56:17.000Z","size":97929,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-24T21:33:22.638Z","etag":null,"topics":["ai","blip","chrome-extension","vision-api"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/Sanmeet007.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-02-04T21:03:46.000Z","updated_at":"2025-05-24T20:56:20.000Z","dependencies_parsed_at":"2025-05-24T21:45:30.347Z","dependency_job_id":null,"html_url":"https://github.com/Sanmeet007/visionate","commit_stats":null,"previous_names":["sanmeet007/visionate"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sanmeet007%2Fvisionate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sanmeet007%2Fvisionate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sanmeet007%2Fvisionate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sanmeet007%2Fvisionate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sanmeet007","download_url":"https://codeload.github.com/Sanmeet007/visionate/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sanmeet007%2Fvisionate/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259106733,"owners_count":22805941,"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","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":["ai","blip","chrome-extension","vision-api"],"created_at":"2025-06-10T16:12:22.247Z","updated_at":"2026-04-10T21:47:06.737Z","avatar_url":"https://github.com/Sanmeet007.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Visionate  \n**AI-Powered Image Captioning for the Web**\n\nVisionate is a Chrome extension that automatically generates captions for images lacking alt text. It enhances web accessibility by identifying such images on any webpage and providing meaningful, context-aware descriptions in real time.\n\n---\n\n## Features\n\n- **Automatic Image Scanning** – Detects images without alt text as you browse.\n- **AI-Based Captions** – Generates accurate and relevant descriptions for supported images.\n- **Real-Time Updates** – Instantly inserts generated captions back into the webpage.\n- **Flexible Usage Limits** – Caption quota is based on your pricing tier (free or premium).\n- **Privacy-Conscious** – Only processes publicly accessible images; private or restricted content is never accessed.\n\n---\n## Screenshots\n\n![Screenshot 1](https://sanmeet007.github.io/public/visionate/screenshot-1.png)\n![Screenshot 2](https://sanmeet007.github.io/public/visionate/screenshot-2.png)\n![Screenshot 3](https://sanmeet007.github.io/public/visionate/screenshot-3.png)\n\n---\n\n## How It Works\n\n1. **Install** the Visionate Chrome extension.\n2. While browsing, Visionate **automatically finds images with missing alt text**.\n3. It sends **supported and publicly accessible images** to the backend for caption generation.\n4. The generated caption is **applied to the image** on the page, improving accessibility and context.\n\n---\n\n## Limitations\n\n- Visionate **cannot generate captions** for:\n  - Images behind login walls or authentication\n  - CORS-protected blobs or browser-restricted resources\n- An **internet connection** is required for AI processing.\n- Caption accuracy may vary based on image quality.\n\n---\n\n## Getting Started (For Developers)\n\n### Prerequisites\n- **Python 3.8+** – For the backend captioning model.\n- **Node.js 22+** – For the frontend and proxy server.\n- **Yarn** – For managing frontend dependencies.\n\n### Environment Variables Setup\n\nTo ensure proper functionality, make sure the following environment variables are configured. You can either set them directly in your environment or store them in a `.env` file in the respective directories.\n\n\n#### For captioning model\nTo be placed in the **caption-model** directory.\n\n```bash\nTF_ENABLE_ONEDNN_OPTS=\"0\"\nPORT=\"8000\"\nDEBUG=\"false\"\n```\n\n#### For website\nTo be placed in the **website** directory.\n\n```bash\n# DB SETTINGS\nDB_HOSTNAME=\"\u003cDB_HOSTNAME\u003e\"\nDB_PORT=\"\u003cDB_PORT\u003e\"\nDB_USERNAME=\"\u003cDB_USERNAME\u003e\"\nDB_PASSWORD=\"\u003cDB_PASSWORD\u003e\"\nDB_NAME=\"\u003cDB_NAME\u003e\"\n\n# MAIL SETTINGS\nSMTP_USER=\"\u003cSMTP_USER\u003e\"\nSMTP_PASSWORD=\"\u003cSMTP_PASSWORD\u003e\"\nMAIL_VARIABLES_JSON=\"{\"APPNAME\":\"Visionate\",\"OFFICE_ADDRESS\":\"\u003cOFFICE_ADDRESS\u003e\",\"WEBSITE_URL\":\"http://localhost\",\"SOCIAL_LINKS\":{\"GITHUB\":\"\u003cGITHUB_URL\u003e\",\"YOUTUBE\":\"\u003cYOUTUBE_URL\u003e\",\"LINKEDIN\":\"\u003cLINKEDIN_URL\u003e\",\"FACEBOOK\":\"\u003cFACEBOOK_URL\u003e\"},\"ABOUT_US\":\"http://localhost/about\",\"CONTACT_US\":\"http://localhost/support\",\"SUPPORT_EMAIL\":\"\u003cSUPPORT_EMAIL\u003e\"}\"\nMAIL_TEMPLATES_DIR=\"src/utils/mailer/templates\"\n\n# RAZORPAY SETTINGS\nRAZORPAY_KEY_SECRET=\"\u003cRAZORPAY_KEY_SECRET\u003e\"\nNEXT_PUBLIC_RAZORPAY_KEY_ID=\"\u003cRAZORPAY_KEY_ID\u003e\"\n\n# MODEL SETTINGS\nCAPTION_API_ENDPOINT=\"http://localhost:8000/generate-caption\"\n\n# APP SETTINGS\nLOGGING_LEVEL=\"0\"\nENABLE_CSRF=\"false\"\nSECURITY_STRING=\"\u003cSECURITY_STRING_RANDOM_STRING\u003e\"\n\n# GOOGLE OAUTH SETTINGS\nGOOGLE_OAUTH_CLIENT_ID=\"\u003cGOOGLE_OAUTH_CLIENT_ID\u003e\"\nGOOGLE_OAUTH_CLIENT_SECRET=\"\u003cGOOGLE_OAUTH_CLIENT_SECRET\u003e\"\n\n# CLOUDINARY CONFIGURATION\nNEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=\"\u003cNEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\u003e\"\nCLOUDINARY_API=\"\u003cCLOUDINARY_API\u003e\"\nCLOUDINARY_API_SECRET=\"\u003cCLOUDINARY_API_SECRET\u003e\"\n\n# RECAPTCHA SETTINGS\nNEXT_PUBLIC_RECAPTCHA_SITE_KEY=\"\u003cRECAPTCHA_SITE_KEY\u003e\"\nRECAPTCHA_SECRET_KEY=\"\u003cRECAPTCHA_SECRET_KEY\u003e\"\n\n# REACT QUERY SETTINGS\nNEXT_PUBLIC_DISABLE_REACT_QUERY_DEV_TOOLS=\"true\"\n\n\n# PROXY SETTINGS \nTARGET_PORT=\"3000\"\n\n# IP API KEY\nAPIIP_API_KEY=\"\u003cAPIIP_API_KEY\u003e\"\n\n# REDIS SETTINGS\nREDIS_URL=\"\u003cYOUR_REDIS_URL\u003e\"\n\n# PUBLIC VARS\nNEXT_PUBLIC_DIST_URL=\"http://localhost/dist/local/visionate-chrome-extension.crx\"\nNEXT_PUBLIC_ORIGIN=\"http://localhost\"\nNEXT_PUBLIC_WEB_DEV_URL=\"http://sanmeet007.github.io\"\nNEXT_PUBLIC_WEB_DEV_NAME=\"Team Ozymandias\"\nNEXT_PUBLIC_WEBSITE_SOCIAL_LINK_1=\"/\"\nNEXT_PUBLIC_WEBSITE_SOCIAL_LINK_2=\"https://github.com/Sanmeet007/project-f\"\nNEXT_PUBLIC_WEBSITE_SOCIAL_LINK_3=\"https://linkedin.com/in/sanmeet007\"\n```\n\n\n\u003e **Note:** The CAPTION_API_ENDPOINT variable should point to the captioning model server. If you are running the model locally, use http://localhost:8000/generate-caption. If you are using a cloud service, replace it with the appropriate URL.\n\n\u003e **Note:** The TARGET_PORT variable should point to the port where the website is running. If you are running the website locally, use 3000. If you are using a cloud service, replace it with the appropriate port.\n\n\u003e **Note:** The APIIP_API_KEY variable is required for the IP geolocation service. You can get a free API key from [apiip.net](https://apiip.net/).\n\n\u003e**Note:** Redis database is required for the website to run. You can use any Redis database service or run it locally.\n\n\n### System setup\n1. **Clone the repository**\n\n   ```bash\n   git clone https://github.com/Sanmeet007/project-f.git\n   ```\n\n2. **Install dependencies**\n\n* **Captioning model**\n\n  ```bash\n  cd caption-model\n  pip install -r requirements.txt\n  ```\n\n* **Frontend (Website)**\n\n  ```bash\n  cd website\n  yarn install\n  ```\n\n3. **Database Setup** \n  From the project root, run the following commands: \n  \u003e _Ensure that your database has been created and is currently empty before proceeding._\n   ```bash\n   cd website\n   yarn run db:push\n   ```\n   \n\n4. **Run the system** *(Windows only for now)*\n   From the project root, run the following commands:\n\n   ```bash\n   cd website\n   mkdir .requests_data\n   touch .requests_data/db.sqlite\n   yarn run build      # Build the frontend\n   yarn run start      # Start the frontend server\n   yarn run model      # Launch the captioning model server\n   yarn run proxy      # Start the proxy server\n   ```\n\n5. **Load the Chrome extension**\n\n* Open `chrome://extensions/`\n* Enable **Developer Mode**\n* Click **Load unpacked**\n* Select the `extension/` directory from the project\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanmeet007%2Fvisionate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsanmeet007%2Fvisionate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanmeet007%2Fvisionate/lists"}