{"id":13757761,"url":"https://github.com/numbersprotocol/capture-lite","last_synced_at":"2025-04-12T04:31:30.086Z","repository":{"id":36959036,"uuid":"268411201","full_name":"numbersprotocol/capture-lite","owner":"numbersprotocol","description":"A photo-sharing app with only verifiable photos and videos.","archived":false,"fork":false,"pushed_at":"2025-03-25T03:10:05.000Z","size":32189,"stargazers_count":26,"open_issues_count":379,"forks_count":7,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-03-25T03:28:55.330Z","etag":null,"topics":["capture-cam"],"latest_commit_sha":null,"homepage":"https://numbersprotocol.github.io/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/numbersprotocol.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2020-06-01T02:57:17.000Z","updated_at":"2025-03-25T03:10:09.000Z","dependencies_parsed_at":"2023-01-17T08:31:28.478Z","dependency_job_id":"ae758472-0aff-4dda-84e9-16c482dca5e9","html_url":"https://github.com/numbersprotocol/capture-lite","commit_stats":null,"previous_names":[],"tags_count":267,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/numbersprotocol%2Fcapture-lite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/numbersprotocol%2Fcapture-lite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/numbersprotocol%2Fcapture-lite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/numbersprotocol%2Fcapture-lite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/numbersprotocol","download_url":"https://codeload.github.com/numbersprotocol/capture-lite/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248517150,"owners_count":21117396,"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":["capture-cam"],"created_at":"2024-08-03T12:00:49.134Z","updated_at":"2025-04-12T04:31:25.061Z","avatar_url":"https://github.com/numbersprotocol.png","language":"TypeScript","funding_links":[],"categories":["Projects"],"sub_categories":[],"readme":"# Capture Lite\n\n\u003ca href='https://play.google.com/store/apps/details?id=io.numbersprotocol.capturelite'\u003e\u003cimg alt='Get it on Google Play' src='https://i.imgur.com/nqDY3fd.png' height=\"64\"/\u003e\u003c/a\u003e\n\u003ca href='https://apps.apple.com/tw/app/capture-app/id1536388009'\u003e\u003cimg alt='Get it on Google Play' src='https://i.imgur.com/OdHCgWO.png' height=\"64\"/\u003e\u003c/a\u003e\n\n| branch  |                                                                                        build                                                                                         |                                                                                                                                        coverage                                                                                                                                         |                                                                                                                                      quality                                                                                                                                      |\n| :-----: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |\n| master  |        [![build](https://github.com/numbersprotocol/capture-lite/workflows/build/badge.svg)](https://github.com/numbersprotocol/capture-lite/actions?query=workflow%3Abuild)         |        [![Codacy Badge](https://app.codacy.com/project/badge/Coverage/45ae18aaa6a7474497e0efd818452a46)](https://www.codacy.com/gh/numbersprotocol/capture-lite?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=numbersprotocol/capture-lite\u0026utm_campaign=Badge_Coverage)         |        [![Codacy Badge](https://app.codacy.com/project/badge/Grade/45ae18aaa6a7474497e0efd818452a46)](https://www.codacy.com/gh/numbersprotocol/capture-lite?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=numbersprotocol/capture-lite\u0026utm_campaign=Badge_Grade)         |\n| develop | [![build](https://github.com/numbersprotocol/capture-lite/workflows/build/badge.svg?branch=develop)](https://github.com/numbersprotocol/capture-lite/actions?query=workflow%3Abuild) | [![Codacy Badge](https://app.codacy.com/project/badge/Coverage/45ae18aaa6a7474497e0efd818452a46?branch=develop)](https://www.codacy.com/gh/numbersprotocol/capture-lite?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=numbersprotocol/capture-lite\u0026utm_campaign=Badge_Coverage) | [![Codacy Badge](https://app.codacy.com/project/badge/Grade/45ae18aaa6a7474497e0efd818452a46?branch=develop)](https://www.codacy.com/gh/numbersprotocol/capture-lite?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=numbersprotocol/capture-lite\u0026utm_campaign=Badge_Grade) |\n\n## Getting Started\n\nNode 16.2.0+ and NPM 7.13.0+ is required.\n\nInstall the dependencies.\n\n```bash\nnpm i\n```\n\nSet the system environment variables `NUMBERS_STORAGE_BASE_URL`, `NUMBERS_STORAGE_TRUSTED_CLIENT_KEY`, `NUMBERS_BUBBLE_DB_URL`, `BUBBLE_API_URL` and `APPS_FLYER_DEV_KEY` before building the app by appending the following string in `~/.profile`:\n\n```txt\nexport NUMBERS_STORAGE_BASE_URL=\"THE PRIVATE BASE URL\"\nexport NUMBERS_STORAGE_TRUSTED_CLIENT_KEY=\"THE TRUSTED CLIENT KEY\"\nexport NUMBERS_BUBBLE_DB_URL=\"THE BUBBLE DB URL\"\nexport BUBBLE_API_URL=\"BUBBLE API URL\"\nexport APPS_FLYER_DEV_KEY=\"APPS FLYER DEV KEY\n```\n\nPreview the app in web browser.\n\n```bash\nnpm run serve\n```\n\n## Development\n\nStart a local dev server for app dev/testing.\n\n```bash\nnpm run serve\n```\n\nRun tests.\n\n```bash\nnpm run test\n```\n\nRun tests in headless mode.\n\n```bash\nnpm run test.ci\n```\n\nLint the projects.\n\n```bash\nnpm run lint\n```\n\n[Update `cordova-res` (splash screens and launcher icons)](https://capacitorjs.com/docs/guides/splash-screens-and-icons).\n\n```bash\ncordova-res android --skip-config --copy\n```\n\n### Contribution\n\n- Run `npm run lint` before each commit.\n- The committed codes should pass all GitHub checks.\n- Use [Visual Studio Code](https://code.visualstudio.com/) with workspace settings for consistent coding style.\n- Use [Prettier extension](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) to auto format on save.\n- Prefer `Promise` than `Observable` when only emitting one value. See [issue #233](https://github.com/numbersprotocol/capture-lite/issues/233).\n- Avoid using `toPromise()` to convert `Observable` to `Promise` as [it is an anti-pattern](https://stackoverflow.com/a/49596716/8789738).\n\n### Platform\n\n#### Android\n\nIf your operating system is Linux, set the environment variable `CAPACITOR_ANDROID_STUDIO_PATH` for your Android Studio. The default value is `/usr/local/android-studio/bin/studio.sh`.\n\n```sh\nexport CAPACITOR_ANDROID_STUDIO_PATH=\"/home/username/android-studio/bin/studio.sh\"\n```\n\nBefore running the app with Android Studio, build and sync the dependencies and web assets.\n\n```bash\nnpm run build\nnpx cap sync android\n```\n\nOpen the project in Android Studio.\n\n```bash\nnpx cap open android\n```\n\nThe script does the same thing for you.\n\n```bash\nnpm run build.android\n```\n\n### Caveat\n\n- This app is still in the experimental stage.\n- This app uses raw file system to save proofs, and thus the performance is not optimized.\n\n### Release\n\nSee the [Capture App release flow (Miro)](https://miro.com/app/board/o9J_knEiIYo=/?moveToWidget=3458764542656055086\u0026cot=14).\n\nSome nodes below:\n\nBump version in `package.json`.\n\n```json\n{\n  \"version\": \"a.b.c\"\n}\n```\n\nBump version in `android/app/build.gradle`.\n\n```gradle\nandroid {\n    defaultConfig {\n        versionCode \u003cversionCode++\u003e\n        versionName \"a.b.c\"\n    }\n}\n```\n\nRun `npm i` to update `package-lock.json`.\n\nWrite the changelog in `CHANGELOG.md`.\n\nWhen push to the `master` branch with new version tag, GitHub Action would automatically do the following jobs:\n\n1. Create release GitHub page with debug APK.\n1. Publish the app to Play Console on alpha track and Apple Store.\n1. Send notification to the private `reminder-releases` slack channel.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnumbersprotocol%2Fcapture-lite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnumbersprotocol%2Fcapture-lite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnumbersprotocol%2Fcapture-lite/lists"}