Skip to content

Repository files navigation

Sema

Mobile client for Sema — a WhatsApp AI agent that answers customer messages on behalf of small businesses in East Africa, in English or Swahili.

Sema is Swahili for "speak".

This is the app a business owner uses: connect a WhatsApp number, walk through onboarding for their industry, load a catalogue, and watch orders and conversations arrive. Expo, so it runs on iOS, Android and web from one codebase.

Backend: sugarshaneaz/Sema-API


What it has to get right

The user is a shop owner with an Android phone and a prepaid data bundle, not a developer with a laptop. That shapes most of the decisions here.

Onboarding is the product. The agent is only as good as what the business tells it — the backend tracks every required field left blank and feeds that gap to the model as an explicit "you do not know this". So the onboarding flow (client/screens/onboarding, client/lib/onboarding) is not a signup form to get past. Each answered question measurably widens what the agent can safely say.

Swahili is not a translation layer bolted on. LanguageSwitcher and OnboardingLanguageSwitcher exist as separate components because language gets chosen before the account does — a business owner should not have to read English to reach the setting that turns English off.

Catalogues come in as photographs. Most businesses here have a printed price list or a menu on the wall, not a spreadsheet. So the client leans on expo-image-picker, expo-document-picker and expo-image-manipulator to get a PDF or a photo to the backend, which OCRs it into structured catalogue items.

Failure has to be survivable. ErrorBoundary and ErrorFallback are top-level: a render crash on a cheap device should show a recoverable screen, not a white rectangle in front of the person paying for this.


Structure

client/
  navigation/     root, tabs, and per-area stacks (home, orders, profile, admin)
  screens/        home, chat, product detail, cart, orders, profile
    onboarding/   the industry questionnaire that feeds the AI context
    admin/        business management
  components/     themed primitives, error boundary, language switchers
  lib/
    api/          typed backend client
    queries/      React Query hooks
    onboarding/   questionnaire state
src/backend/      routes, services, middleware, prisma (co-located dev server)
shared/           types shared across the boundary

Stack

Expo · React Native (iOS · Android · web) · React Navigation · TanStack Query · TypeScript · Zod JWT auth with expo-secure-store · bcryptjs Reanimated · Gesture Handler · Keyboard Controller · Expo Glass Effect Prisma · PostgreSQL · Express (dev server)

Running it

npm install
npx expo start

Needs the API base URL and the backend from Sema-API reachable.

About

Sema Frontend - Expo/React Native

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages