{"id":26514548,"url":"https://github.com/michaelstingl/opencloud-mobile","last_synced_at":"2026-04-13T16:03:01.061Z","repository":{"id":281685700,"uuid":"945995899","full_name":"michaelstingl/opencloud-mobile","owner":"michaelstingl","description":"A mobile client for iOS and Android for connecting to OpenCloud servers.","archived":false,"fork":false,"pushed_at":"2025-04-09T18:55:00.000Z","size":1869,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-09T19:39:05.932Z","etag":null,"topics":["android","ios","react-native"],"latest_commit_sha":null,"homepage":"https://michaelstingl.github.io/opencloud-mobile/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/michaelstingl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2025-03-10T12:59:37.000Z","updated_at":"2025-04-09T18:55:03.000Z","dependencies_parsed_at":"2025-03-10T18:46:32.400Z","dependency_job_id":"b098aaca-2cf2-43f5-9e52-f67f3598ed4f","html_url":"https://github.com/michaelstingl/opencloud-mobile","commit_stats":null,"previous_names":["michaelstingl/opencloud-ios","michaelstingl/opencloud-mobile"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/michaelstingl/opencloud-mobile","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelstingl%2Fopencloud-mobile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelstingl%2Fopencloud-mobile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelstingl%2Fopencloud-mobile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelstingl%2Fopencloud-mobile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/michaelstingl","download_url":"https://codeload.github.com/michaelstingl/opencloud-mobile/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelstingl%2Fopencloud-mobile/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31759540,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T15:25:13.801Z","status":"ssl_error","status_checked_at":"2026-04-13T15:25:09.162Z","response_time":93,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","ios","react-native"],"created_at":"2025-03-21T05:18:27.111Z","updated_at":"2026-04-13T16:03:01.050Z","avatar_url":"https://github.com/michaelstingl.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpenCloud Mobile\n\n[![Tests and Coverage](https://github.com/michaelstingl/opencloud-mobile/actions/workflows/tests.yml/badge.svg)](https://github.com/michaelstingl/opencloud-mobile/actions/workflows/tests.yml)\n[![codecov](https://codecov.io/gh/michaelstingl/opencloud-mobile/branch/main/graph/badge.svg)](https://codecov.io/gh/michaelstingl/opencloud-mobile)\n\nA mobile client for iOS and Android for connecting to OpenCloud servers.\n\n## Get started\n\n1. Install dependencies\n\n   ```bash\n   npm install\n   ```\n\n2. Start the app\n\n   ```bash\n   npx expo start\n   ```\n\n   \u003e **Note for Xcode 16.3+ users:** If you're using Xcode 16.3 or newer, you'll need to run `npx expo install --fix` to update modules for compatibility. See [documentation](https://michaelstingl.github.io/opencloud-mobile/docs/guides/getting-started#compatibility-notes) for details.\n\nIn the output, you'll find options to open the app in a:\n\n- [iOS simulator](https://docs.expo.dev/workflow/ios-simulator/)\n- [Android emulator](https://docs.expo.dev/workflow/android-studio-emulator/)\n- [development build](https://docs.expo.dev/develop/development-builds/introduction/)\n- [Expo Go](https://expo.dev/go) (limited sandbox)\n\nThis project uses [file-based routing](https://docs.expo.dev/router/introduction) with Expo Router.\n\n## Documentation\n\nComprehensive documentation is available at [https://michaelstingl.github.io/opencloud-mobile/](https://michaelstingl.github.io/opencloud-mobile/)\n\nThe documentation covers:\n- Getting started guides\n- Authentication and OpenID Connect implementation\n- Configuration and customization\n- Architecture overview\n\n## Development\n\nThe app is built with:\n\n- React Native + Expo\n- TypeScript\n- Expo Router for navigation\n- Modern React patterns (hooks, functional components)\n- Standardized HTTP communication with request tracing\n- OpenID Connect (OIDC) authentication with WebFinger discovery\n\n### Testing\n\nRun the test suite:\n\n```bash\nnpm test\n```\n\nFor faster test execution during development:\n\n```bash\nnpm run test:fast -- \u003cfile-pattern\u003e\n```\n\nRun tests with continuous monitoring:\n\n```bash\nnpm test -- --watchAll\n```\n\nRun tests with coverage report:\n\n```bash\nnpm run test:coverage\n```\n\nRun HTTP utility tests specifically:\n\n```bash\nnpm run test:http\n```\n\nRun tests in CI mode (used by GitHub Actions):\n\n```bash\nnpm run test:ci\n```\n\nRun specific tests:\n\n```bash\nnpm test -- -t \"WebFingerService\"\n```\n\nWe use Jest for testing with a focus on:\n- Unit tests for services and utilities (\u003e90% coverage for core services)\n- Component tests for UI elements\n- Integration tests for complex flows\n- Standardized test helpers for consistent patterns\n\nTest files are located next to the code they test in `__tests__` directories.\n\n### Continuous Integration\n\nWe use GitHub Actions for continuous integration:\n- Automated test runs on pushes to main and PRs\n- Code coverage reports via Codecov\n- Detailed coverage feedback on pull requests\n\nView the latest [test results](https://github.com/michaelstingl/opencloud-mobile/actions/workflows/tests.yml) or [coverage report](https://codecov.io/gh/michaelstingl/opencloud-mobile).\n\n## HTTP Communication\n\nThe app uses a standardized HTTP communication layer:\n\n- Centralized `HttpUtil` for all API requests\n- Request tracing with UUID v4 correlation IDs\n- Standardized headers and request handling\n- Configurable logging for debugging\n- Manual redirect handling for security\n- Development tools like curl command generation\n\n## Build for production\n\nTo create a production build:\n\n```bash\n# For iOS\nnpx expo run:ios --configuration Release\n\n# For Android\nnpx expo run:android --variant release\n```\n\n## Project Structure\n\n- `/app` - Main application screens and navigation (using expo-router)\n- `/components` - Reusable UI components\n- `/config` - Application configuration including platform-specific settings\n- `/hooks` - Custom React hooks\n- `/services` - API services and data handling\n  - `/services/api` - HTTP communication utilities\n  - `/services/WebFingerService.ts` - WebFinger discovery for OpenID Connect\n  - `/services/OidcService.ts` - OpenID Connect operations\n  - `/services/AuthService.ts` - Authentication coordination\n- `/types` - TypeScript type definitions\n- `/assets` - Images, fonts, and other static resources\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaelstingl%2Fopencloud-mobile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmichaelstingl%2Fopencloud-mobile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaelstingl%2Fopencloud-mobile/lists"}