{"id":19335098,"url":"https://github.com/pocket/pocket-android","last_synced_at":"2025-04-23T00:31:54.179Z","repository":{"id":259247734,"uuid":"876665678","full_name":"Pocket/pocket-android","owner":"Pocket","description":"Pocket Android app","archived":false,"fork":false,"pushed_at":"2025-04-21T21:00:25.000Z","size":44274,"stargazers_count":11,"open_issues_count":4,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-21T22:20:00.704Z","etag":null,"topics":["android","kotlin"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Pocket.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2024-10-22T11:04:11.000Z","updated_at":"2025-04-21T21:00:27.000Z","dependencies_parsed_at":"2025-04-09T22:33:59.664Z","dependency_job_id":null,"html_url":"https://github.com/Pocket/pocket-android","commit_stats":null,"previous_names":["pocket/pocket-android"],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pocket%2Fpocket-android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pocket%2Fpocket-android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pocket%2Fpocket-android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pocket%2Fpocket-android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Pocket","download_url":"https://codeload.github.com/Pocket/pocket-android/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250348290,"owners_count":21415893,"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","kotlin"],"created_at":"2024-11-10T03:05:11.288Z","updated_at":"2025-04-23T00:31:49.163Z","avatar_url":"https://github.com/Pocket.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pocket Android\n\n### Modules\n\nThere are a few modules in this project:\n\n[Pocket](/Pocket) The Pocket app\n\n[pocket-ui](/pocket-ui) Reusable Pocket UI/UX components and views.\n\n[utils](/utils) and [utils-android](/utils-android) Utilities and classes that several modules share.\n\n[sync-parser](/sync-parser) Parses GraphQL schema and creates an in-memory model (called \"figments\") for `sync-gen`.\n\n[sync-gen](/sync-gen) Generates sync engine code from schema.\n\n[sync](/sync) and [sync-android](/sync-android) General sync engine.\n\n[sync-pocket](/sync-pocket) and [sync-pocket-android](/sync-pocket-android) Parts of the sync engine specific to the Pocket app.\n\n[analytics](/analytics) Wraps Snowplow Android tracker and exposes internal API\nthat allows to declaratively annotate the UI and code to enable automatically picking up and sending\nanalytic events most of the time (and manually send whatever you need in edge cases).\n\n[project-tools](/project-tools) Some utilities for doing tasks in this project like bulk importing vectors\n\nSee each module's README file for more details.\n\n```mermaid\n    flowchart TD\n        Pocket ---\u003e sync-pocket-android\n\n        subgraph sync-engine [Sync Engine]\n        sync-pocket-android --\u003e sync-pocket \u0026 sync-android\n        sync-pocket -.-\u003e sync-gen --\u003e sync-parser\n        sync-pocket \u0026 sync-android --\u003e sync\n        end\n\n        sync-android --\u003e utils-android\n        sync \u0026 utils-android --\u003e utils\n\n        Pocket --\u003e pocket-ui\n        Pocket \u0026 pocket-ui --\u003e analytics\n        analytics \u0026 pocket-ui ---\u003e utils-android\n\n        project-tools\n```\n\n### Coding Conventions:\nUse the checked in [code style](/.idea/codeStyles/Project.xml) as the default, but in general, be reasonable and use the code base as a guide.\nFor Kotlin we use the official Kotlin style.\n\n### Dependencies\nWe're using [Renovate](https://docs.renovatebot.com/) to automatically update dependencies declared\nin a [version catalog](/gradle/libs.versions.toml).\n\nBecause JSON doesn't support comments, here's some documentation on our [renovate.json](renovate.json):\n```json\n{\n  \"extends\": [\n    \"local\u003ePocket/renovate-config\"\n  ]\n}\n```\nUse a set of Pocket-wide defaults. See [Pocket/renovate-config](https://github.com/Pocket/renovate-config)\nfor more details and documentation.\n```json\n{\n  \"ignorePaths\": [\"buildSrc/src/main/kotlin/Deps.kt\"]\n}\n```\nIgnore our legacy dependency definitions in `buildSrc`, while we gradually migrate to version catalog.\n```json\n{\n  \"ignorePresets\": [\":dependencyDashboardApproval\"]\n}\n```\nIgnore the default setting from [Pocket/renovate-config](https://github.com/Pocket/renovate-config)\nand allow opening PRs without approval.\n```json\n{\n  \"packageRules\": [\n    {\n      \"matchUpdateTypes\": [\"minor\", \"patch\", \"pin\", \"digest\"],\n      \"automerge\": true\n    }\n  ]\n}\n```\nAmend the default config from [Pocket/renovate-config](https://github.com/Pocket/renovate-config)\nand allow auto-merging minor version updates as well. This means only major updates will stay open\nto let a human decide before merging.\n\n```json\n{\n  \"packageRules\": [\n    {\n      \"matchManagers\": [\"gradle\", \"gradle-wrapper\"],\n      \"commitMessageTopic\": \"{{depName}}\"\n    }\n  ]\n}\n```\nTweak the default commit message a bit to cut a redundant word from already pretty long messages.\n\n```json\n{\n  \"packageRules\": [\n    {\n      \"matchDepNames\": [\"plugin-*\"],\n      \"semanticCommitType\": \"chore\"\n    }\n  ]\n}\n```\nUpdate semantic commit rules to account for our custom plugin definitions\n(because of defining them in `buildSrc`).\n\n### Sync Engine\n\nWe have a lot of documentation about the Sync Engine, but you kind of have to know where to look for it.\nHere's some examples to get you started:\n* sync modules' READMEs: [/sync-gen/README](/sync-gen/README.md), [/sync-parser/README](/sync-parser/README.md),\n* sync packages' `package-info.java` files: [com.pocket.sync](/sync/src/main/java/com/pocket/sync/package-info.java),\n  [com.pocket.sync.print.java](/sync-gen/src/main/java/com/pocket/sync/print/java/package-info.java) (code generation),\n* sync class docs: [Pocket](sync-pocket/src/main/java/com/pocket/sdk/Pocket.java),\n  [AppSource](sync/src/main/java/com/pocket/sync/source/AppSource.java),\n  [V3Source](sync-pocket/src/main/java/com/pocket/sdk/api/source/V3Source.java),\n  [ClientApiSource](sync-pocket/src/main/java/com/pocket/sdk/api/source/ClientApiSource.kt) (Pocket Graph source/client),\n  [MutableSpace](sync/src/main/java/com/pocket/sync/space/mutable/MutableSpace.java) (persistence/\"database\"),\n  etc.\n* API documentation on the generated classes or in the schema files (`v3.graphqls`, `local.graphqls`, etc.)\n* [Figment repo](https://github.com/Pocket/figment) which is deprecated,\n  but I left a note in the main README about pieces that might still be relevant to the Android Sync Engine\n\n### Other topics\n\n[Gradle Configuration](buildSrc)\n\n[Fonts](pocket-ui/src/main/assets)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpocket%2Fpocket-android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpocket%2Fpocket-android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpocket%2Fpocket-android/lists"}