Yakult App is a full-stack sales management platform purpose-built for Yakult distribution teams. It gives field promoters, delivery drivers, and master administrators a single, unified tool to manage products, track client accounts, place and fulfill orders, and generate detailed sales reports — all from a mobile device, in real time, anywhere on the local network.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/160906/Yakultt-App/llms.txt
Use this file to discover all available pages before exploring further.
Key Capabilities
Product Management
Maintain a live catalog of Yakult products with pricing and stock information. Promotors can browse and add products to orders directly from their mobile device.
Client Management
Keep a structured directory of customers and accounts. Track purchase history and contact details to support consistent, relationship-driven sales.
Order Management
Create, update, and fulfill orders end-to-end. Orders flow from Promotor to Repartidor (delivery), with status tracked at every step.
Sales Reports
Generate PDF sales reports powered by PDFKit. Summarize revenue, order volume, and product performance across any time range.
Real-Time Notifications
Push in-app notifications to team members when orders are created, updated, or require attention — keeping the whole distribution team in sync.
Architecture Overview
Yakult App is composed of two tightly coupled components that together form a complete distribution management system. Mobile App (React Native + Expo): Built with React Native 0.74.5 and Expo ~51.0.28 using the file-basedexpo-router, the mobile client is the primary interface for all three user roles. It communicates with the backend exclusively over a local network REST API, storing session tokens in AsyncStorage for persistent authentication.
Backend API (Express + MySQL): The Express 5 server exposes a RESTful API under the /api prefix and connects to a MySQL database through a mysql2 connection pool. On startup, the server automatically runs ensureSchema() to create or migrate all required database tables — meaning no manual SQL setup is needed beyond creating the database itself. All routes are protected with JWT-based authentication issued by the /api/auth module.
The two components communicate over the local network. In development with an Android emulator, the mobile app reaches the backend at http://10.0.2.2:3000/api. On a physical device, the app is pointed at the host machine’s LAN IP address.
User Roles
Yakult App enforces three distinct roles, each with its own scope of access within the platform:| Role | Description |
|---|---|
| Master | Full administrative access. Can manage users, view all reports, and configure the platform. Automatically granted to accounts registered with an @upa.edu.mx email address. |
| Promotor | Field sales representative. Can manage clients, create orders, and browse the product catalog. The default role for all non-institutional registrations. |
| Repartidor | Delivery personnel. Responsible for fulfilling and marking orders as delivered once dispatched by a Promotor. |
Tech Stack
| Layer | Technology | Version |
|---|---|---|
| Mobile Framework | React Native + Expo | 0.74.5 / ~51.0.28 |
| Mobile Navigation | Expo Router | ~3.5.23 |
| Backend Framework | Express.js | ^5.2.1 |
| Database | MySQL (via mysql2) | — |
| Authentication | JSON Web Tokens + bcryptjs | ^9.0.3 / ^3.0.3 |
| PDF Generation | PDFKit | ^0.19.1 |
| Dev Server | Nodemon | ^3.1.14 |
Yakult App is designed for local network deployment. The mobile app and backend must be on the same network (or the same machine via emulator). The backend schema is auto-migrated on every server start via
ensureSchema(), so the database tables are always kept up to date without manual intervention.