{"id":13880689,"url":"https://github.com/Cap-go/capgo","last_synced_at":"2025-07-16T17:30:54.726Z","repository":{"id":39517519,"uuid":"442321089","full_name":"Cap-go/capgo","owner":"Cap-go","description":"Instant update for capacitor apps","archived":false,"fork":false,"pushed_at":"2025-07-14T17:28:42.000Z","size":192211,"stargazers_count":143,"open_issues_count":28,"forks_count":61,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-07-14T17:34:16.178Z","etag":null,"topics":["android","capacitor","cordova","ios"],"latest_commit_sha":null,"homepage":"https://capgo.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Cap-go.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","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},"funding":{"github":"Cap-go","patreon":null,"open_collective":"capgo","ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2021-12-28T01:55:37.000Z","updated_at":"2025-07-14T17:28:46.000Z","dependencies_parsed_at":"2023-09-22T01:03:58.319Z","dependency_job_id":"a83683af-679e-46f5-93d8-1581aa042420","html_url":"https://github.com/Cap-go/capgo","commit_stats":{"total_commits":7051,"total_committers":27,"mean_commits":"261.14814814814815","dds":0.5409161821018296,"last_synced_commit":"e2d0b269941dafb8fb96a5b608269bdd2eddd81e"},"previous_names":[],"tags_count":3581,"template":false,"template_full_name":null,"purl":"pkg:github/Cap-go/capgo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cap-go%2Fcapgo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cap-go%2Fcapgo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cap-go%2Fcapgo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cap-go%2Fcapgo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Cap-go","download_url":"https://codeload.github.com/Cap-go/capgo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cap-go%2Fcapgo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265527447,"owners_count":23782480,"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":["android","capacitor","cordova","ios"],"created_at":"2024-08-06T08:03:23.916Z","updated_at":"2025-07-16T17:30:54.698Z","avatar_url":"https://github.com/Cap-go.png","language":"TypeScript","funding_links":["https://github.com/sponsors/Cap-go","https://opencollective.com/capgo"],"categories":["TypeScript"],"sub_categories":[],"readme":"\u003cp align='center'\u003e\n  \u003cimg src='https://raw.githubusercontent.com/Cap-go/capgo/main/assets/capgo_banner.png' alt='Capgo - Instant updates for capacitor'/\u003e\n\u003c/p\u003e\n\n[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=Cap-go_capgo\u0026metric=bugs)](https://sonarcloud.io/summary/new_code?id=Cap-go_capgo)\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=Cap-go_capgo\u0026metric=security_rating)](https://sonarcloud.io/summary/new_code?id=Cap-go_capgo)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=Cap-go_capgo\u0026metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=Cap-go_capgo)\n[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=Cap-go_capgo\u0026metric=code_smells)](https://sonarcloud.io/summary/new_code?id=Cap-go_capgo)\n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=Cap-go_capgo\u0026metric=ncloc)](https://sonarcloud.io/summary/new_code?id=Cap-go_capgo)\n[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=Cap-go_capgo\u0026metric=sqale_index)](https://sonarcloud.io/summary/new_code?id=Cap-go_capgo)\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=Cap-go_capgo\u0026metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=Cap-go_capgo)\n[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=Cap-go_capgo\u0026metric=duplicated_lines_density)](https://sonarcloud.io/summary/new_code?id=Cap-go_capgo)\n[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=Cap-go_capgo\u0026metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=Cap-go_capgo)\n[![Known Vulnerabilities](https://snyk.io/test/github/Cap-go/capgo/badge.svg)](https://snyk.io/test/github/Cap-go/capgo)\n![GitHub license](https://img.shields.io/github/license/Cap-go/capgo)\n[![Bump version](https://github.com/Cap-go/capgo/actions/workflows/bump_version.yml/badge.svg)](https://github.com/Cap-go/capgo/actions/workflows/bump_version.yml)\n[![Build source code and send to Capgo](https://github.com/Cap-go/capgo/actions/workflows/build_and_deploy.yml/badge.svg)](https://github.com/Cap-go/capgo/actions/workflows/build_and_deploy.yml)\n[![udd-update-dependencies](https://github.com/Cap-go/capgo/actions/workflows/udd.yml/badge.svg)](https://github.com/Cap-go/capgo/actions/workflows/udd.yml)\n[![Netlify Status](https://api.netlify.com/api/v1/badges/2ebcdd5c-362b-4135-8fac-9ce872309174/deploy-status)](https://app.netlify.com/sites/webcapgo/deploys)\n\u003ca href=\"#badge\"\u003e\n\u003cimg alt=\"semantic-release\" src=\"https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\"\u003e\n\u003c/a\u003e\n\u003ca href=\"http://commitizen.github.io/cz-cli/\"\u003e\u003cimg alt=\"Commitizen friendly\" src=\"https://img.shields.io/badge/commitizen-friendly-brightgreen.svg\"\u003e\u003c/a\u003e\n\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch2\u003e\u003ca href=\"https://capgo.app/?ref=plugin\"\u003e ➡️ Get Instant updates for your App with Capgo 🚀\u003c/a\u003e\u003c/h2\u003e\n  \u003ch2\u003e\u003ca href=\"https://capgo.app/consulting/?ref=plugin\"\u003e Fix your annoying bug now, Hire a Capacitor expert 💪\u003c/a\u003e\u003c/h2\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\n## Features\n\n- ⚡️ Test the web app directly on your phone using the native API\n\n- 😃 Share your new features with your teammates\n\n- ↕️ Manage your channels for auto-update system\n\n\u003cbr\u003e\n\n## Documentation\n\nhttps://github.com/Cap-go/capacitor-updater/wiki/Capgo-Sandbox-App\n\n- [Changing Supabase](supabase/migration_guide.md)\n\n## Plugins\n\nAll the following official plugins are already installed and pre-configured:\n\n- [Action Sheet](https://github.com/ionic-team/capacitor-plugins/tree/main/action-sheet) -\n  Provides access to native Action Sheets.\n- [App](https://github.com/ionic-team/capacitor-plugins/tree/main/app) - Handles\n  high level App state and events.\n- [App Launcher](https://github.com/ionic-team/capacitor-plugins/tree/main/app-launcher) -\n  Allows to check if an app can be opened and open it.\n- [Browser](https://github.com/ionic-team/capacitor-plugins/tree/main/browser) -\n  Provides the ability to open an in-app browser and subscribe to browser\n  events.\n- [Camera](https://github.com/ionic-team/capacitor-plugins/tree/main/camera) -\n  Provides the ability to take a photo with the camera or choose an existing one\n  from the photo album.\n- [Clipboard](https://github.com/ionic-team/capacitor-plugins/tree/main/clipboard) -\n  Enables copy and pasting to/from the system clipboard.\n- [Device](https://github.com/ionic-team/capacitor-plugins/tree/main/device) -\n  Exposes internal information about the device, such as the model and operating\n  system version, along with user information such as unique ids.\n- [Dialog](https://github.com/ionic-team/capacitor-plugins/tree/main/dialog) -\n  Provides methods for triggering native dialog windows for alerts,\n  confirmations, and input prompts.\n- [Filesystem](https://github.com/ionic-team/capacitor-plugins/tree/main/filesystem) -\n  Provides a NodeJS-like API for working with files on the device.\n- [Geolocation](https://github.com/ionic-team/capacitor-plugins/tree/main/geolocation) -\n  Provides simple methods for getting and tracking the current position of the\n  device using GPS, along with altitude, heading, and speed information if\n  available.\n- [Haptics](https://github.com/ionic-team/capacitor-plugins/tree/main/haptics) -\n  Provides physical feedback to the user through touch or vibration.\n- [Keyboard](https://github.com/ionic-team/capacitor-plugins/tree/main/keyboard) -\n  Provides keyboard display and visibility control, along with event tracking\n  when the keyboard shows and hides.\n- [Local Notifications](https://github.com/ionic-team/capacitor-plugins/tree/main/local-notifications) -\n  Provides a way to schedule device notifications locally (i.e. without a server\n  sending push notifications).\n- [Motion](https://github.com/ionic-team/capacitor-plugins/tree/main/motion) -\n  Tracks accelerometer and device orientation (compass heading, etc.).\n- [Network](https://github.com/ionic-team/capacitor-plugins/tree/main/network) -\n  Provides network and connectivity information.\n- [Push Notifications](https://github.com/ionic-team/capacitor-plugins/tree/main/push-notifications) -\n  Provides access to native push notifications.\n- [Screen Reader](https://github.com/ionic-team/capacitor-plugins/tree/main/screen-reader) -\n  Provides access to TalkBack/VoiceOver/etc. and Provides simple text-to-speech\n  capabilities for visual accessibility.\n- [Share](https://github.com/ionic-team/capacitor-plugins/tree/main/share) -\n  Provides methods for sharing content in any sharing-enabled apps the user may\n  have installed.\n- [Splash Screen](https://github.com/ionic-team/capacitor-plugins/tree/main/splash-screen) -\n  Provides methods for showing or hiding a Splash image.\n- [Status Bar](https://github.com/ionic-team/capacitor-plugins/tree/main/status-bar) -\n  Provides methods for configuring the style of the Status Bar, along with\n  showing or hiding it.\n- [Storage](https://github.com/ionic-team/capacitor-plugins/tree/main/storage) -\n  Provides a simple key/value persistent store for lightweight data.\n- [Text Zoom](https://github.com/ionic-team/capacitor-plugins/tree/main/text-zoom) -\n  Provides the ability to change Web View text size for visual accessibility.\n- [Toast](https://github.com/ionic-team/capacitor-plugins/tree/main/toast) -\n  Provides a notification pop up for displaying important information to a user.\n  Just like real toast!\n\n## Dev contribution\n\n### Coding Style\n\n- Use Composition API with\n  [`\u003cscript setup\u003e` SFC syntax](https://github.com/vuejs/rfcs/pull/227)\n- [ESLint](https://eslint.org/) with\n  [@antfu/eslint-config](https://github.com/antfu/eslint-config), single quotes,\n  no semi.\n\n### Dev tools\n\n- [TypeScript](https://www.typescriptlang.org/)\n- [bun](https://bun.sh/) - fast javascript runtime, package manager, bundler,\n  test runner an all-in-one toolkit\n- [critters](https://github.com/GoogleChromeLabs/critters) - Critical CSS\n- [Cloudflare](https://www.cloudflare.com/) - zero-config deployment\n- [VS Code Extensions](./.vscode/extensions.json)\n  - [Vite](https://marketplace.visualstudio.com/items?itemName=antfu.vite) -\n    Fire up Vite server automatically\n  - [Volar](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.volar) -\n    Vue 3 `\u003cscript setup\u003e` IDE support\n  - [Iconify IntelliSense](https://marketplace.visualstudio.com/items?itemName=antfu.iconify) -\n    Icon inline display and autocomplete\n  - [i18n Ally](https://marketplace.visualstudio.com/items?itemName=lokalise.i18n-ally) -\n    All in one i18n support\n  - [Windi CSS Intellisense](https://marketplace.visualstudio.com/items?itemName=voorjaar.windicss-intellisense) -\n    IDE support for Windi CSS\n  - [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)\n\n## Usage\n\nCapgo is deployed to production on Cloudflare workers, Netlify and Supabase.\n\nCloudflare workers take 99% of the traffic. Supabase is used for internal calls, for internal tasks such as CRON jobs that call functions. Netlify is used only as a backup for Cloudflare.\n\nWhen self-hosted, installing only Supabase is sufficient.\n\n### Deploy on Cloudflare Pages\n\nUse the CLI to deploy to preprod\n\n```bash\nbun run dev-build\n# then deploy\nbun run deploy:cloudflare_frontend:preprod\n```\n\nor Prod\n\n```bash\nbun run build\n# then deploy\nbun run deploy:cloudflare_frontend:prod\n```\n\n### Development\n\nYou will need to start each local server in separate terminals.\n\nBefore continuing, ensure you have the following installed:\n\n- [Docker](https://www.docker.com/)\n- [bun](https://bun.sh/)\n- [Supabase CLI](https://supabase.com/docs/guides/cli)\n\nYou can install the `supabase` CLI globally with `bun install supabase -g` and you'll be able to invoke `supabase` from anywhere.\n\nAlternatively, you can install the `supabase` CLI locally with\n`bun install supabase --save-dev` but, to invoke it, you have to use:\n`./node_modules/supabase/bin/supabase`.\n\nIn the following guideline, we will assume that you have installed the `supabase` CLI globally.\n\n#### Start Supabase DB Locally\n\nStart the Supabase DB:\n\n```bash\nsupabase start\n```\n\nIf the command is completed successfully, your console should output:\n\n```bash\nStarted supabase local development setup.\n\n         API URL: http://localhost:54321\n     GraphQL URL: http://localhost:54321/graphql/v1\n          DB URL: postgresql://postgres:postgres@localhost:54322/postgres\n      Studio URL: http://localhost:54323\n    Inbucket URL: http://localhost:54324\n      JWT secret: super-secret-jwt-token-with-at-least-32-characters-long\n        anon key: xxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXx.xxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXx\nservice_role key: xxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXx.xxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxXxxxxxXxxxxxX\n```\n\n#### Seed Supabase DB locally\n\n[!WARNING]\n⚠️ Ensure Docker is running.\n\n```bash\nsupabase db reset\n```\n\n#### Start Frontend locally\n\n```bash\nbun install\nbun serve:dev\n```\n\n#### Login\n\nVisit http://localhost:5173\n\nThere are two login credentials you can use:\n\n| Account    | Username        | Password   |\n| ---------- | --------------- | ---------- |\n| Demo User  | test@capgo.app  | testtest   |\n| Admin User | admin@capgo.app | adminadmin |\n\nThe _demo user_ account has some demo data in it. If the data is not fresh, just\nreset the db with `supabase db reset`. The seed has been made in a way that ensures the\ndata is always fresh.\n\nThe _admin user_ account has administration rights so the user can impersonate other users.\nYou can find the interface for that in the \"Account\" section.\n\n#### Supabase DB Reset\n\n[!WARNING]\n⚠️ Ensure Docker is running.\n\nThis will seed the DB with demo data.\n\n```bash\nsupabase db reset\n```\n\n### Deploy Supabase self hosted\n\nTo deploy the supabase instance in self-hosted, use the\n[Supabase official guide](https://supabase.com/docs/guides/self-hosting).\n\n### Deploy Supabase cloud\n\nTo deploy the Supabase instance on cloud, you need a paid account, which costs $25/month.\n\nLink the project to the cloud with the following command:\n\n```bash\nsupabase link\n```\n\nhttps://supabase.com/docs/reference/cli/supabase-link\n\nThen you need to push the migrations to the cloud with the following command:\n\n```bash\nsupabase db push --linked\n```\n\nhttps://supabase.com/docs/reference/cli/supabase-migration-up\n\nAnd seed the DB with demo data:\n\n```bash\nsupabase seed buckets\n```\n\nhttps://supabase.com/docs/reference/cli/supabase-seed-buckets\n\nSeed the secret for functions:\n\n```bash\nsupabase secrets set --env-file supabase/functions/.env\n```\n\nPush the functions to the cloud:\n\n```bash\nsupabase functions deploy\n```\n\n### Build\n\nTo build the web app in mobile, in order to push to mobile stores, run:\n\n```bash\nbun install\nbun mobile\n```\n\nAnd you will see the generated files in the `dist` directory, ready to be served on stores.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCap-go%2Fcapgo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCap-go%2Fcapgo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCap-go%2Fcapgo/lists"}