MA↗Mohamed
Abderrehmane
← All work
06 / Expo 54 · React Native · TypeScript · Zustand · Skia

BACUAAn Algerian BAC study app frontend

BACUA is an Algerian BAC study app frontend with structured lessons, reading progress and a contextual chat interface. Authentication and assistant replies are mocked.

EDUCATION / MOBILEBACUA

An Algerian BAC study app frontend

React Native / Expo / RTL
01

The problem & workflow

Choose a stream → open a subject and lesson → mark progress → hand lesson context to chat → receive/cancel a mock streamed reply → restore local state after restart.

Key features

  • Onboarding and academic stream selection
  • Subject/unit/lesson navigation with reading progress
  • Lesson context handed to a streaming mock assistant
  • Conversation persistence, cancellation and local preferences
  • Explicit RTL, Arabic typography, animation and reduced-motion settings
  • Skia/CanvasKit initialization with fallback behavior
02

Architecture & decisions

BACUA — component relationships
  • I use an AIProvider interface to separate the chat experience from a future provider integration. Authentication and responses are mocked.
  • I persist conversations and reading progress locally so the study experience carries across sessions.
  • Arabic typography, RTL layout, cancellation and reduced-motion preferences are part of the interface design.

Inside the source

03

A frontend with a clear integration boundary

I built BACUA as an Algerian BAC mobile study frontend.

BACUA explores an Algerian BAC study experience through onboarding, stream selection, structured lessons, progress and contextual chat. Its value is in the interface and state transitions. Authentication and assistant replies are mocked; the AIProvider contract marks where a real service could later connect as a future integration boundary.

Conversations and reading progress persist locally. Lesson context can move into a conversation, streamed text updates the interface, and cancellation stops an in-progress mock reply. These interactions require consistent state across navigation, refresh and interrupted output. Explicit RTL choices and Arabic typography are part of the layout rather than a translated label layer.

Treating streamed text as incomplete input

During development, a partial Markdown table header could make the parser loop indefinitely. A message that is valid when complete can be invalid at one of its streaming prefixes. The extracted pure parser now has prefix regression checks, including incomplete headers and Arabic text.

The supported web demonstration uses the existing non-Skia fallback. CanvasKit and native device rendering remain separate checks. Future work can connect a real provider, evaluate lesson retrieval and verify accessible device behavior; those belong to the roadmap, not the implemented feature list.

04

Project status

Designed frontend application. Authentication and assistant replies are mocked; there is no deployed AI service implied.

Use the committed Expo SDK 54 dependencies. No backend or provider credentials are needed. Default web preview uses EXPO_PUBLIC_ENABLE_SKIA_WEB=0; set it to 1 only for a separate CanvasKit investigation. Mock sign-in accepts demonstration input; use learner@example.test and never a real password. Local persistence is browser/device storage, not a remote account.

Development checks & runtime notes

Type checking and static Expo web export passed. An incremental Markdown parser could loop forever on a partial table header during streaming; its pure parser now has prefix regression checks. The default web preview uses the existing non-Skia fallback. Browser checks passed completed mock replies, conversation restoration after refresh and cancellation. Mock sign-in and the visible demonstration label are retained. Native device and opt-in CanvasKit verification are separate remaining checks.

Authentication and assistant responses are local mocks. The default browser fallback is the supported demonstration path; enabling EXPO_PUBLIC_ENABLE_SKIA_WEB=1 opts into a separately unverified CanvasKit path. No real AI, remote account security or cross-device synchronization is claimed.

Technical details ↗
NEXT PROJECTFH-School ↗
LET’S TALK

Have a project in mind?

Tell me about the app or website you want to build.

Contact on WhatsApp +213794873386 ↗