AlejoTaller is an operational suite for sales, reservations, and real-time order verification. It spans four surfaces — a customer-facing Android app, an operator Android scanner, a Svelte web client, and a lightweight Node.js publisher microservice — all sharing business logic modules and built on an offline-first, real-time architecture backed by Appwrite and Pusher.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.
Introduction
Understand the project vision, monorepo structure, and which surface to start with.
Architecture
Explore the layered feature architecture, shared modules, and offline-first design.
Quickstart
Get the full monorepo running locally in a few steps.
Configuration
Set up Appwrite, Pusher, and all required environment variables.
Surfaces
AlejoTaller is a monorepo. Each surface is an independent application that shares critical business modules.Android Client
Customer-facing Android app with offline shopping, cart, and real-time sale status.
Android Operator
QR-scanning operator app for verifying and confirming customer orders.
Web Client
Svelte-based web storefront with IndexedDB persistence and real-time updates.
Publisher Function
Secure Node.js microservice that relays operator decisions to Pusher channels.
How It Works
Customer places an order
The Android client or web app lets the customer browse the catalog, add items to cart, and submit a purchase or reservation. The order is persisted locally first, then synced to Appwrite.
Operator reviews the order
The operator app (AlejoTallerScan) loads pending orders, scans a QR code or selects manually, and confirms or rejects the sale. The state is written back to Appwrite.
Publisher broadcasts the decision
The operator app calls the
alejo_publisher microservice, which validates the Appwrite state change and publishes a sale:confirmed or sale:rejected event to the customer’s Pusher channel.Key Features
Offline-First
Room (Android) and Dexie/IndexedDB (web) keep the app functional with no connectivity. Sync happens automatically when the network returns.
Real-Time Events
Pusher delivers verification events to all subscribed surfaces simultaneously. No polling, no delays.
Shared Business Logic
Kotlin shared modules (
shared-auth, shared-sale, shared-core, shared-data) eliminate duplicate logic across Android surfaces.Publisher API
A minimal Express service isolates Pusher secrets from mobile and web clients.