diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..fc2b286 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @BTheCoderr diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..d89773a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,39 @@ +--- +name: Bug report +about: Report a reproducible SmartProBono problem +title: "[Bug] " +labels: bug +assignees: "" +--- + +## What happened? + +## Expected behavior + +## Where? + +- [ ] Onboarding +- [ ] Trusted Circle +- [ ] Safety Mode +- [ ] Travel Mode +- [ ] Kid Track / Family Hub +- [ ] Recording +- [ ] History +- [ ] Health Check +- [ ] Support site +- [ ] Other + +## Steps to reproduce + +1. +2. +3. + +## Device / version + +- SmartProBono version: +- iOS / device: + +## Evidence + +Do not post private recordings, precise locations, trusted-contact details, phone numbers, or credentials. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..017bc0a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,19 @@ +--- +name: Feature request +about: Suggest a SmartProBono product or engineering improvement +title: "[Feature] " +labels: enhancement +assignees: "" +--- + +## Problem + +## Proposed experience + +## Why it belongs in SmartProBono + +How does it improve safety-session usability, documentation, trusted-contact coordination, privacy, or reliability? + +## Notes / constraints + +Include privacy, recording-law, location, accessibility, and App Store considerations when relevant. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..34fba0c --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,28 @@ +## What changed + +## Why + +## Verification + +- [ ] Mobile TypeScript passes +- [ ] Support-site build passes when `web-next/` changed +- [ ] No private session data, personal contacts, recordings, or credentials were committed +- [ ] Safety/privacy copy remains calm and non-authoritative +- [ ] Recording/location changes were checked against user-facing disclosures + +## Product surfaces checked + +- [ ] Onboarding +- [ ] Trusted Circle +- [ ] Safety Mode +- [ ] Travel Mode +- [ ] Kid Track / Family Hub +- [ ] Recording +- [ ] History +- [ ] Health Check +- [ ] Support site +- [ ] Not applicable + +## Deployment + +GitHub merge, EAS/App Store release, and Netlify publication are separate actions. diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..81f799d --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,19 @@ +version: 2 +updates: + - package-ecosystem: npm + directory: /SmartProBonoPocket + schedule: + interval: weekly + day: monday + open-pull-requests-limit: 5 + commit-message: + prefix: deps-mobile + + - package-ecosystem: npm + directory: /web-next + schedule: + interval: weekly + day: monday + open-pull-requests-limit: 5 + commit-message: + prefix: deps-web diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..da45b64 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,63 @@ +name: CI + +on: + pull_request: + branches: [main] + push: + branches: [main] + +concurrency: + group: ci-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + mobile: + name: Mobile typecheck + runs-on: ubuntu-latest + timeout-minutes: 15 + defaults: + run: + working-directory: SmartProBonoPocket + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Node + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + cache-dependency-path: SmartProBonoPocket/package-lock.json + + - name: Install dependencies + run: npm ci + + - name: TypeScript + run: npx tsc --noEmit + + support-site: + name: Support site build + runs-on: ubuntu-latest + timeout-minutes: 15 + defaults: + run: + working-directory: web-next + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Node + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + cache-dependency-path: web-next/package-lock.json + + - name: Install dependencies + run: npm ci + + - name: Build + run: npm run build diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..7bd7bb6 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,13 @@ +# Changelog + +## Current production line + +SmartProBono is publicly available on the Apple App Store. + +The mobile configuration is currently version **1.0.0**. The shipped product centers on trusted contacts, Safety Mode, location capture/sharing, optional recording, calm guidance, and local session history. + +Repository work may include features ahead of the currently published build; production release notes should only claim functionality that has passed device QA and App Store release. + +## Policy + +Add a dated entry whenever the App Store marketing version changes. Keep App Store changes separate from unreleased repository work. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..3a5e332 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,33 @@ +# Contributing to SmartProBono + +SmartProBono is a shipped local-first iOS safety companion. It helps users document important moments, share selected information with trusted contacts, and follow calm structured guidance. + +## Mobile checks + +```bash +cd SmartProBonoPocket +npm ci +npx tsc --noEmit +``` + +## Support-site checks + +```bash +cd web-next +npm ci +npm run build +``` + +## Privacy and safety + +Never commit real user contacts, precise location history, recordings, personal session details, credentials, or private device artifacts. + +Recording and location features require special care: preserve user-facing disclosures, explicit user control, and local-first defaults. + +## Scope + +SmartProBono is not emergency dispatch, a substitute for emergency services, a lawyer, or individualized legal advice. + +## Deployment + +GitHub merge, EAS/App Store release, and Netlify publication are separate release steps. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..c5492ce --- /dev/null +++ b/LICENSE @@ -0,0 +1,7 @@ +Copyright (c) 2026 Baheem Ferrell + +All rights reserved. + +This source code is publicly viewable for portfolio, review, and collaboration purposes. No permission is granted to copy, modify, distribute, sublicense, sell, or create derivative works from this repository except with the copyright holder's prior written permission. + +Third-party dependencies and assets remain subject to their own licenses and terms. diff --git a/README.md b/README.md index 44fc1f7..95ffed0 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,12 @@ # SmartProBono — Mobile Safety Companion +[![CI](https://github.com/BTheCoderr/smartprobonopocketbuddy/actions/workflows/ci.yml/badge.svg)](https://github.com/BTheCoderr/smartprobonopocketbuddy/actions/workflows/ci.yml) +![App Store](https://img.shields.io/badge/App%20Store-Live-000000?logo=apple) +![Expo](https://img.shields.io/badge/Expo-54-000020?logo=expo) +![React Native](https://img.shields.io/badge/React%20Native-0.81-61DAFB?logo=react) +![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178C6?logo=typescript&logoColor=white) + + **Project snapshot:** SmartProBono is a shipped iOS safety companion that helps people document important moments, share location with trusted contacts, and follow calm, structured guidance during stressful situations. @@ -29,6 +36,22 @@ | Onboarding | Guided setup for contact, recording disclosure/preferences, and location permission | | Support web | Next.js marketing, privacy, support, and Pocket Buddy legal/support pages | +## Architecture + +```text +iPhone / iPad (Expo + React Native) + │ + ├── Trusted Circle + ├── Safety / Travel / Kid Track sessions + ├── Location + Contacts + ├── Audio / Camera / local files + └── explicit platform share flows + +web-next/ ──► Next.js support / privacy / marketing +``` + +See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for the full local-first data and release model. + ## Current mobile architecture `SmartProBonoPocket/` contains the Expo / React Native application. @@ -97,6 +120,21 @@ npm install npm run dev ``` +## Repository guide + +- [CHANGELOG.md](CHANGELOG.md) — production release notes +- [ROADMAP.md](ROADMAP.md) — shipped, improving, and exploring +- [docs/README.md](docs/README.md) — current vs. historical documentation +- [CONTRIBUTING.md](CONTRIBUTING.md) — development expectations +- [SECURITY.md](SECURITY.md) — vulnerability and privacy guidance +- [.github/workflows/ci.yml](.github/workflows/ci.yml) — automated mobile + support-site verification + +## Repository quality gates + +Pull requests now run mobile TypeScript verification and a production build of the current Next.js support site. Dependabot monitors both npm projects. + +**GitHub merge, EAS/App Store release, and Netlify publication are separate actions.** + ## Product status **Shipped.** SmartProBono is publicly available on the Apple App Store. @@ -108,3 +146,8 @@ The repository also contains work that may be ahead of the currently published s SmartProBono is a support and documentation tool. It is not a substitute for emergency services, a lawyer, or individualized legal advice. Recording and privacy laws vary by jurisdiction. Recording features are presented with user-facing disclosures and should only be used where lawful. + + +## License + +Copyright © 2026 Baheem Ferrell. All rights reserved. This public repository is viewable for portfolio, review, and collaboration purposes and is not released under an open-source license. See [LICENSE](LICENSE). diff --git a/ROADMAP.md b/ROADMAP.md new file mode 100644 index 0000000..fc4eb62 --- /dev/null +++ b/ROADMAP.md @@ -0,0 +1,36 @@ +# SmartProBono Roadmap + +This is product direction, not a guarantee of dates. + +## Shipped + +- guided onboarding +- trusted emergency contact +- Safety Mode +- location capture / share flow +- optional safety recording +- calm guidance +- local session history +- App Store release +- support / privacy web pages + +## Improving + +- Family Hub and Kid Track QA +- Travel Mode continuity +- permission and recovery handling +- recording reliability +- accessibility +- Health Check diagnostics +- App Store / support-site consistency + +## Exploring + +- stronger multi-contact coordination +- clearer export / evidence organization +- improved session summaries +- safer cross-device continuity where it can preserve privacy + +## Product boundary + +SmartProBono is a support and documentation tool. It is not emergency dispatch and does not replace emergency services or individualized legal advice. diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..41aadc5 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,9 @@ +# Security Policy + +Security fixes target the current production release and `main`. + +Do not open public issues containing private recordings, trusted-contact data, precise location history, device identifiers, credentials, or exploit details that could expose user information. + +Prefer GitHub private vulnerability reporting / Security Advisories when available. + +SmartProBono is local-first: changes should preserve minimal data collection, explicit sharing, and least-privilege permission use. diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md new file mode 100644 index 0000000..ae012da --- /dev/null +++ b/docs/ARCHITECTURE.md @@ -0,0 +1,41 @@ +# SmartProBono Architecture + +## Product surfaces + +```text +iPhone / iPad +Expo + React Native + │ + ├── local session runtime + ├── AsyncStorage / local files + ├── Location / Contacts + ├── Audio / Camera + └── platform share / SMS flows + +web-next/ +Next.js support + privacy + marketing site +``` + +## Mobile + +`SmartProBonoPocket/` contains the primary shipped app. It uses React Native / Expo, React Navigation, AsyncStorage, location, contacts, audio, camera, file-system, and sharing APIs. + +## Data model + +The app is intentionally local-first. Sensitive safety-session data remains on-device unless the user explicitly shares it using platform flows. + +## Active-session runtime + +Session services coordinate Safety, Travel, and Kid Track flows, persist live state for recovery, and write finished sessions into local history. + +## Permissions + +Location, contacts, microphone, and camera are requested for specific user-facing functions. Permission copy and fallback behavior are part of the safety model and should be treated as product-critical. + +## Web + +`web-next/` contains the current support/marketing/legal surface. The older `web/` directory remains historical/supporting work. + +## Release boundary + +GitHub code, EAS builds, App Store submissions, and Netlify publishing are separate release stages. diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..d4e38df --- /dev/null +++ b/docs/README.md @@ -0,0 +1,14 @@ +# SmartProBono Documentation + +## Current production / engineering + +- [ARCHITECTURE.md](ARCHITECTURE.md) — system structure and release boundaries +- [../MARKETING.md](../MARKETING.md) — current product positioning +- [../NEXT_STEPS.md](../NEXT_STEPS.md) — active release priorities +- [../SmartProBonoPocket/RECORDING_FLOW.md](../SmartProBonoPocket/RECORDING_FLOW.md) — recording behavior + +## Historical / catch-up notes + +- [../SmartProBonoPocket/CATCHING_UP.md](../SmartProBonoPocket/CATCHING_UP.md) + +Older Pocket Buddy / SmartProBono Pocket naming may remain in historical files. The public App Store product name is **SmartProBono**.