{"id":51556249,"url":"https://github.com/involvex/noobify-app","last_synced_at":"2026-07-10T05:30:55.869Z","repository":{"id":368726716,"uuid":"1286440480","full_name":"involvex/noobify-app","owner":"involvex","description":"An App to help explaining Tech Stuff to non Techies","archived":false,"fork":false,"pushed_at":"2026-07-01T23:36:14.000Z","size":1786,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-02T00:25:06.204Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/involvex.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":["involvex"],"custom":["https://buymeacoffee.com/involvex","https://paypal.me/involvex","https://rewards.bing.com/welcome?rh=14525F68\u0026ref=rafsrchae\u0026form=ML2XE3\u0026OCID=ML2XE3\u0026PUBL=RewardsDO\u0026CREA=ML2XE3"]}},"created_at":"2026-07-01T19:33:51.000Z","updated_at":"2026-07-01T23:36:18.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/involvex/noobify-app","commit_stats":null,"previous_names":["involvex/noobify-app"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/involvex/noobify-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/involvex%2Fnoobify-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/involvex%2Fnoobify-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/involvex%2Fnoobify-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/involvex%2Fnoobify-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/involvex","download_url":"https://codeload.github.com/involvex/noobify-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/involvex%2Fnoobify-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35322488,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-10T02:00:06.465Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2026-07-10T05:30:50.346Z","updated_at":"2026-07-10T05:30:55.863Z","avatar_url":"https://github.com/involvex.png","language":"TypeScript","funding_links":["https://github.com/sponsors/involvex","https://buymeacoffee.com/involvex","https://paypal.me/involvex","https://rewards.bing.com/welcome?rh=14525F68\u0026ref=rafsrchae\u0026form=ML2XE3\u0026OCID=ML2XE3\u0026PUBL=RewardsDO\u0026CREA=ML2XE3"],"categories":[],"sub_categories":[],"readme":"# Noobify-App\n\nA local-first AI translation utility that explains technical terms using simple, everyday analogies. Built with Expo, llama.rn, react-native-paper, and expo-sqlite.\n\n## Features\n\n- **Local AI Translation** - Uses Qwen2.5-0.5B-Instruct model running entirely on-device via llama.rn\n- **Bilingual Support** - Translates between English and German with contextual explanations\n- **Simple Analogies** - Tech terms explained using everyday concepts (cooking, cars, etc.)\n- **Offline History** - All translations stored locally using SQLite\n- **Halo Dark Theme** - Beautiful dark UI with the Halo color palette\n\n## Tech Stack\n\n- [Expo SDK 57](https://expo.dev/) with Expo Router\n- [llama.rn](https://github.com/b inherm/llama.rn) for local LLM inference\n- [react-native-paper](https://callstack.github.io/react-native-paper/) for UI components\n- [expo-sqlite](https://docs.expo.dev/versions/latest/sdk/sqlite/) for local database\n- [Qwen2.5-0.5B-Instruct-Q4_K_M.gguf](https://huggingface.co/bartowski/Qwen2.5-0.5B-Instruct-GGUF) model\n\n## Project Structure\n\n```\nnoobify-app/\n├── src/\n│   ├── app/                    # Expo Router screens\n│   │   ├── _layout.tsx         # Root layout (SQLite + Paper providers)\n│   │   └── (tabs)/\n│   │       ├── _layout.tsx     # Tab navigation layout\n│   │       ├── index.tsx       # Translator screen\n│   │       └── history.tsx     # History screen\n│   ├── hooks/\n│   │   ├── useLocalLLM.ts      # LLM initialization \u0026 text generation\n│   │   └── useDatabase.ts      # SQLite history operations\n│   └── constants/\n│       └── haloTheme.ts        # Halo dark theme tokens\n├── android/                    # Generated Android native project\n├── assets/images/              # App icons\n├── app.json                    # Expo configuration\n├── metro.config.js            # Metro bundler config\n└── package.json\n```\n\n## Setup\n\n### Prerequisites\n\n- Node.js 18+\n- [Bun](https://bun.sh/) package manager\n- Android Studio (for Android development)\n- Xcode (for iOS development, macOS only)\n\n### Installation\n\n```bash\n# Install dependencies\nbun install\n\n# Generate Android native project\nnpx expo prebuild --platform android\n\n# Run on Android\nbun run android\n```\n\n### Model Download\n\nOn first launch, the app will automatically download the ~400MB Qwen2.5-0.5B-Instruct-Q4_K_M.gguf model from HuggingFace. The model is saved to the app's document directory.\n\n## Configuration\n\n### llama.rn Plugin (app.json)\n\n```json\n{\n\t\"plugins\": [\n\t\t[\n\t\t\t\"llama.rn\",\n\t\t\t{\n\t\t\t\t\"forceCxx20\": true,\n\t\t\t\t\"enableOpenCLAndHexagon\": true\n\t\t\t}\n\t\t]\n\t]\n}\n```\n\n### Metro Config\n\nThe `metro.config.js` blocks expo-sqlite's web worker files to prevent bundling errors:\n\n```js\nblockList: [\n  /node_modules\\/expo-sqlite\\/web\\/.*/,\n  /node_modules\\/wa-sqlite\\/.*/,\n],\n```\n\n## Usage\n\n1. **Enter a tech term** - Type any technical term (API, recursion, blockchain, etc.)\n2. **Select language** - Toggle between English and German\n3. **Get your analogy** - The AI explains the term using simple, everyday comparisons\n\n### Example\n\n```\nInput:  \"API\"\nOutput: \"Think of an API like a restaurant menu. The kitchen (server) prepares food (data),\n         and you (app) just order from the menu without going into the kitchen itself.\n         You get your meal without seeing how it was made!\"\n```\n\n## Build APK\n\n```bash\n# Clean prebuild\nnpx expo prebuild --clean --platform android\n\n# Build release APK\ncd android \u0026\u0026 ./gradlew assembleRelease\n```\n\nThe APK will be at `android/app/build/outputs/apk/release/`\n\n## Theme Colors (Halo Dark)\n\n| Token          | Hex       | Usage                   |\n| -------------- | --------- | ----------------------- |\n| Background     | `#0A0B0F` | App background          |\n| Surface        | `#141720` | Cards, dialogs          |\n| Primary        | `#5B6BFF` | Buttons, links, accents |\n| Secondary      | `#8B9FFF` | Secondary actions       |\n| Text Primary   | `#FFFFFF` | Main text               |\n| Text Secondary | `#A0A6B8` | Subtitles, hints        |\n\n## Development\n\n```bash\n# Type check\nbun run typecheck\n\n# Lint\nbun run lint\n\n# Format\nbun run format\n```\n\n## Troubleshooting\n\n### Metro bundler shows wa-sqlite.wasm error\n\nThis is expected for web bundling. The `metro.config.js` blocks these files for Android/iOS builds. Run the app on a device/emulator instead.\n\n### Model download fails\n\n- Check internet connection\n- Ensure sufficient storage space (~400MB)\n- The download can be retried from the app's error state\n\n### Build is slow\n\nllama.rn compiles C++ native binaries on first build. Subsequent builds are faster with Gradle cache.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finvolvex%2Fnoobify-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finvolvex%2Fnoobify-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finvolvex%2Fnoobify-app/lists"}