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.

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.

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

1

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.
2

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.
3

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.
4

Customer receives real-time feedback

The Android client and web app are subscribed to the Pusher channel. They receive the event instantly and update the local sale state and UI without any polling.

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.

Build docs developers (and LLMs) love