{"id":51523476,"url":"https://github.com/xonoxc/saferead","last_synced_at":"2026-07-08T18:02:16.160Z","repository":{"id":364961498,"uuid":"1015261460","full_name":"xonoxc/saferead","owner":"xonoxc","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-15T08:10:44.000Z","size":70802,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-15T11:11:15.701Z","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":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xonoxc.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-07T08:39:24.000Z","updated_at":"2026-06-15T08:11:17.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/xonoxc/saferead","commit_stats":null,"previous_names":["xonoxc/saferead"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/xonoxc/saferead","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xonoxc%2Fsaferead","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xonoxc%2Fsaferead/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xonoxc%2Fsaferead/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xonoxc%2Fsaferead/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xonoxc","download_url":"https://codeload.github.com/xonoxc/saferead/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xonoxc%2Fsaferead/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35273524,"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-08T02:00:06.796Z","response_time":61,"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-08T18:02:10.614Z","updated_at":"2026-07-08T18:02:16.143Z","avatar_url":"https://github.com/xonoxc.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Saferead\n\n### Understand what you sign. AI-powered legal document analysis for your pocket.\n\nUpload terms of service, privacy policies, and legal agreements to get an AI breakdown of what you are actually agreeing to. No more skipping past the fine print.\n\n\u003cbr /\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/ss/1.png\" width=\"200\" alt=\"Dashboard\" /\u003e\n  \u003cimg src=\"assets/ss/2.png\" width=\"200\" alt=\"Document Analysis\" /\u003e\n  \u003cimg src=\"assets/ss/3.png\" width=\"200\" alt=\"Spaces\" /\u003e\n  \u003cimg src=\"assets/ss/4.png\" width=\"200\" alt=\"Chat\" /\u003e\n\u003c/p\u003e\n\n\u003cbr /\u003e\n\n[![React Native](https://img.shields.io/badge/React_Native-0.79-61DAFB?style=for-the-badge\u0026logo=react)](https://reactnative.dev/)\n[![Expo](https://img.shields.io/badge/Expo-53-000020?style=for-the-badge\u0026logo=expo)](https://expo.dev/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.9-3178C6?style=for-the-badge\u0026logo=typescript)](https://www.typescriptlang.org/)\n[![Django](https://img.shields.io/badge/Django_REST-5.2-092E20?style=for-the-badge\u0026logo=django)](https://github.com/pallavrai/saferead_backend)\n\n[Features](#-features)  [Tech Stack](#-tech-stack)  [Getting Started](#-getting-started)  [Project Structure](#-project-structure)  [Screenshots](#-screenshots)\n\n\u003c/div\u003e\n\n---\n\n## Features\n\n### Document Analysis\n\nUpload documents as files or paste text directly. Saferead supports terms of service, privacy policies, legal agreements, and custom documents. Each document is analysed and given a confidence score along with a summary of risky and favourable points.\n\n### AI Chat\n\nAsk questions about your documents in natural language. The chat understands the context of your uploaded documents and can pull relevant clauses on demand.\n\n### Spaces\n\nOrganise documents into spaces to keep personal, work, and other documents separate. Each space maintains its own chat history and document collection.\n\n### Dashboard\n\nGet an at-a-glance overview of your document library, including total documents, processing status, average confidence scores, and document type breakdowns.\n\n### User Accounts\n\nRegister with an email and password or sign in with Google. Your documents and spaces are synced across devices.\n\n### Premium Plans\n\nUpgrade for additional features beyond the free tier.\n\n---\n\n## Tech Stack\n\n### Mobile\n\n- **Framework** -- [React Native](https://reactnative.dev/) 0.79 with [Expo](https://expo.dev/) SDK 53\n- **Language** -- [TypeScript](https://www.typescriptlang.org/) 5.9\n- **Navigation** -- [expo-router](https://docs.expo.dev/router/introduction/) (file-based routing)\n- **State Management** -- [Zustand](https://zustand.docs.pmnd.rs/) (client state), [TanStack React Query](https://tanstack.com/query) (server state)\n- **Forms** -- [React Hook Form](https://react-hook-form.com/) with [Zod](https://zod.dev/) validation\n- **Animations** -- [React Native Reanimated](https://docs.swmansion.com/react-native-reanimated/)\n- **Icons** -- [Lucide React Native](https://lucide.dev/)\n- **HTTP Client** -- [Axios](https://axios-http.com/)\n\n### Backend\n\n- **Framework** -- [Django REST Framework](https://www.django-rest-framework.org/) 5.2\n- **AI Analysis** -- Groq-powered LLM pipeline\n- **Repository** -- [saferead_backend](https://github.com/pallavrai/saferead_backend)\n\n---\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js 18 or later\n- pnpm (recommended) or npm\n- Expo CLI\n- A physical device or emulator for iOS / Android\n- Backend server running locally or remotely\n\n### Quick Start\n\n1. **Clone the repository**\n\n   ```bash\n   git clone https://github.com/your-username/saferead.git\n   cd saferead\n   ```\n\n2. **Install dependencies**\n\n   ```bash\n   pnpm install\n   ```\n\n3. **Set up environment variables**\n\n   ```bash\n   cp sample.env .env\n   ```\n\n   Fill in the required values:\n\n   | Variable                              | Description                    |\n   | ------------------------------------- | ------------------------------ |\n   | `EXPO_PUBLIC_API_URL`                 | Backend API base URL           |\n   | `EXPO_PUBLIC_AI_API_KEY`             | API key for AI analysis        |\n   | `EXPO_PUBLIC_STRIPE_PUBLISHABLE_KEY` | Stripe key for premium plans   |\n   | `EXPO_PUBLIC_GOOGLE_CLIENT_ID_ANDROID`| Google Sign-In client ID      |\n   | `EXPO_PUBLIC_GOOGLE_CLIENT_ID_IOS`   | Google Sign-In client ID       |\n\n4. **Start the development server**\n\n   ```bash\n   pnpm dev\n   ```\n\n   Scan the QR code with the Expo Go app on your device, or press `a` for Android emulator / `i` for iOS simulator.\n\n### Building for Production\n\n```bash\n# Web\npnpm build:web\n\n# Android\npnpm android\n\n# iOS\npnpm ios\n```\n\n### Available Scripts\n\n| Command            | Description                         |\n| ------------------ | ----------------------------------- |\n| `pnpm dev`         | Start Expo development server       |\n| `pnpm build:web`   | Export the app for web deployment   |\n| `pnpm lint`        | Run ESLint across the codebase      |\n| `pnpm format`      | Format code with Prettier           |\n| `pnpm android`     | Build and run on Android            |\n| `pnpm ios`         | Build and run on iOS                |\n\n---\n\n## Project Structure\n\n```\nsaferead/\n├── app/                  -- Expo Router screens (auth, tabs, modals)\n├── components/           -- Reusable UI components\n├── config/               -- App configuration (mutation cache, etc.)\n├── constants/            -- Theme colours, fonts, server URL, filters\n├── hooks/                -- Custom React hooks (auth, queries, animations, etc.)\n├── services/             -- API client wrappers (document, space, conversation, plans)\n├── store/                -- Zustand stores (user, documents, analysis, spaces, alerts)\n├── types/                -- TypeScript type definitions\n├── utils/                -- Helpers (API client, error handling, validation schemas)\n├── assets/               -- Images, fonts, and other static resources\n├── app.json              -- Expo configuration\n├── tsconfig.json         -- TypeScript configuration\n└── eas.json              -- EAS Build configuration\n```\n\n---\n\n## Linting and Formatting\n\nThis project uses [ESLint](https://eslint.org/) with the Expo recommended configuration and [Prettier](https://prettier.io/) for code formatting.\n\n```bash\npnpm lint\npnpm format\n```\n\n---\n\n## Backend\n\nThe backend is a Django REST Framework application. You can find the source code and setup instructions at [pallavrai/saferead_backend](https://github.com/pallavrai/saferead_backend).\n\n---\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxonoxc%2Fsaferead","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxonoxc%2Fsaferead","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxonoxc%2Fsaferead/lists"}