Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/danielitoCode/AlejoTaller/llms.txt

Use this file to discover all available pages before exploring further.

The AlejoTaller web client is the browser-based surface of the platform, giving customers a complete electronics store experience without requiring a native app installation. It mirrors the same offline-first principles and layered architecture found in the Android clients, bringing purchase and reservation capabilities to any modern web browser.

Role in the Monorepo

The web client (web/) sits alongside the Android client, Android operator app, and the alejo_publisher function service inside the AlejoTaller monorepo. Its responsibilities are scoped to the customer-facing experience:
  • Onboarding & commerce — account creation, authentication, product browsing, and purchase or reservation from a browser
  • Offline persistence — all critical data (products, categories, sales, promotions, exchange rates) is written to IndexedDB via Dexie, so the app remains usable under poor or absent connectivity
  • Real-time verification events — after a sale is created, the app subscribes to a Pusher channel and reacts immediately when an operator confirms or rejects the reservation
  • APK download guidance — customers and operators can download the Android client and operator APKs directly from GitHub Releases, with URLs provided by environment variables

Tech Stack

LayerTechnology
UI frameworkSvelte 5 + TypeScript
Build toolVite 8
Local databaseDexie 4 (IndexedDB)
Backend SDKAppwrite Web SDK 22
Real-time eventsPusher JS 8
UI componentsM3 Svelte 7
IconsLucide Svelte
Type checkingsvelte-check + TypeScript 5

Architectural Philosophy

The web client follows the same feature-first, layered architecture used in the Android surfaces. Every feature module is organized into data/, domain/, and presentation/ layers, keeping business rules out of UI components and making each feature independently testable.
core/feature/{name}/
├── data/
│   ├── dto/
│   ├── mapper/
│   └── repository/
├── domain/
│   ├── caseuse/
│   ├── entity/
│   └── repository/
└── presentation/
    └── viewmodel/
This prevents the web version from becoming an isolated, rule-free reimplementation. The same use-case-per-action pattern, repository contracts, and offline-first reconciliation approach that governs Android also governs the web surface.

Feature Modules

The following feature modules live under web/src/core/feature/:
ModuleResponsibility
authAuthentication, session management, user profile, admin user CRUD
productProduct catalog, offline-first fetch and cache
categoryCategory listing and filtering
saleCart management, sale registration, delivery type, real-time verification
exchangeCurrency exchange rates from El Toque and DirectorioCubano APIs
notificationPromotion/announcement delivery via Pusher channels
supportCustomer support inbox and messaging
settingsApplication settings

Sale Verification Flow

The web client is a subscriber in the end-to-end sale verification pipeline:
  1. The customer creates a purchase or reservation; the sale is persisted locally and pushed to Appwrite.
  2. The operator app scans or loads the reservation and verifies or rejects it.
  3. The operator sends the decision to the alejo_publisher function, which publishes the event to Pusher.
  4. The web client receives sale:confirmed or sale:rejected on the sale-verification-{userId} channel.
  5. The saleAlertStore updates and the UI renders the appropriate confirmation or rejection alert.

Live Deployment

The web client is deployed on Render and publicly accessible: https://alejotaller.onrender.com/

Explore Further

Features

Auth flows, product catalog, offline cart, sale registration, and Pusher real-time events in detail.

Development

Local setup, environment variables, project structure, and build commands.

Publisher Function

The lightweight HTTP service that publishes Pusher events without exposing secrets on the frontend.

Build docs developers (and LLMs) love