Skip to content

voidrot/ownit-mobile-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OwnIt Mobile App

Important

Repository moved to monorepo: https://github.com/voidrot/ownit

Mobile app is now maintained at: apps/mobile in the monorepo. This repository is kept for historical reference.

A cross-platform mobile app built with Expo and React Native for managing family chores, behavior tracking, and more. Supports Android and iOS.

Features

  • Role-based views — separate experiences for parents and children
  • Chore management — create, assign, and track chores
  • Behavior tracking — log and review behavior over time
  • Media capture — camera and image picker integration for chore proof
  • Dark mode — automatic light/dark theme support
  • Secure auth — session-based authentication via django-allauth (headless)
  • Configurable backend — connect to any self-hosted OwnIt backend instance

Tech Stack

Layer Technology
Framework Expo SDK 54 / React Native 0.81
Navigation Expo Router (file-based)
Styling NativeWind (Tailwind CSS for RN)
State Zustand
Data Fetching SWR
API Client Auto-generated via OpenAPI Generator
Language TypeScript 5.9 (strict)
Testing Jest + React Testing Library

Prerequisites

  • Node.js 24+ (managed via mise)
  • npm
  • Android Studio (for Android emulator) or Xcode (for iOS simulator)
  • A running OwnIt backend instance (for API connectivity)

Getting Started

# 1. Install dependencies
npm install

# 2. Start the dev server
npm start

Then press a for Android, i for iOS, or w for web in the terminal.

Run on a specific platform

npm run android
npm run ios
npm run web

Project Structure

app/                  # Screens & routing (file-based via Expo Router)
├── (auth)/           #   Authentication screens
├── (parent)/         #   Parent role — tabs & modals
├── (child)/          #   Child role — tabs & modals
├── _layout.tsx       #   Root layout
├── backend-config.tsx #  Backend URL configuration
└── index.tsx         #   Entry / redirect
components/           # Reusable UI components
constants/            # Theme, colors, spacing
hooks/                # Custom React hooks
services/             # API clients (auto-generated + adapters)
├── auth/             #   Auth API client (generated)
├── backend/          #   Backend API client (generated)
├── auth-api.ts       #   Auth service layer
├── backend-api.ts    #   Backend service layer
└── ui-queries.ts     #   SWR query hooks
stores/               # Zustand state stores
utils/                # Utility functions
__tests__/            # Unit & integration tests

Scripts

Command Description
npm start Start the Expo dev server
npm run android Start on Android
npm run ios Start on iOS
npm run web Start on web
npm run lint Run ESLint
npm test Run Jest test suite
npm run openapi:spec:backend Print effective backend OpenAPI URL
npm run openapi:spec:auth Print effective auth OpenAPI URL
npm run openapi:generate:backend Regenerate backend API client
npm run openapi:generate:auth Regenerate auth API client
npm run openapi:generate Regenerate backend + auth API clients (runtime artifacts only)
npm run openapi:regenerate Clean + regenerate backend + auth API clients (runtime artifacts only)
npm run openapi:prune-generated-artifacts Remove generated docs and OpenAPI metadata artifacts

See docs/openapi-generation.md for full prerequisites and workflow.

API Client Generation

API clients are auto-generated from backend OpenAPI specifications.

  • Backend default spec: http://127.0.0.1:8000/api/v1/openapi.json
  • Auth default spec: http://127.0.0.1:8000/_allauth/openapi.json
  • Generated output: src/api/generated/backend/ and src/api/generated/auth/

Use npm run openapi:generate (or npm run openapi:regenerate) after starting the backend.

Testing

# Run all tests
npm test

# Run a specific test file
npx jest __tests__/components/assignment-item.test.tsx

Tests use Jest with jest-expo preset and React Testing Library. Test files are located in __tests__/ mirroring the source structure.

Configuration

File Purpose
app.json Expo app config (name, icons, splash, plugins)
tailwind.config.js NativeWind/Tailwind theme (colors, spacing)
tsconfig.json TypeScript config with path aliases (@/, @components/, etc.)
babel.config.js Babel config with expo preset
metro.config.js Metro bundler config
mise.toml Tool version management (Node.js LTS)

Related

License

This project is licensed under the GNU General Public License v3.0.

About

A cross-platform mobile app for managing family chores, behavior tracking, and more. Supports Android and iOS.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages