AlexandreDresch/Vyro

A powerful mobile seller dashboard application built with React Native and Expo SDK 54. Manage sales, products, clients, and track business performance with an intuitive interface.

โ˜… 0Forks 0TypeScriptGitHub โ†—Compare
exporeact-native

README

Vyro - Seller Dashboard

A powerful mobile seller dashboard application built with React Native and Expo SDK 54. Manage sales, products, clients, and track business performance with an intuitive interface.

๐Ÿ“ฑ Features

Core Functionality

  • Dashboard: Real-time KPIs, revenue charts, top products, and recent sales
  • Sales Management: Create, edit, delete, and track sales with status (paid/pending/cancelled)
  • Product Management: Full CRUD operations with stock tracking and color coding
  • Client Management: Manage client information with purchase history
  • Multi-language Support: Portuguese, English, and Spanish (Argentinian)
  • Multi-currency Support: BRL, USD, and ARS

Advanced Features

  • Stock Management: Automatic stock reduction for paid and pending orders (configurable)
  • Pay Later Option: Reserve stock for pending orders or keep stock available
  • Data Import/Export: Excel file support for data migration
  • Large Number Formatting: Automatic K/M/B formatting for large numbers (1.5K, 2.3M, 1.2B)
  • Dark Theme: Modern dark interface optimized for mobile
  • Responsive Design: Works on both iOS and Android

๐Ÿš€ Tech Stack

  • Framework: React Native with Expo SDK 54
  • Language: TypeScript
  • Storage: AsyncStorage
  • File Operations: Expo FileSystem, DocumentPicker, Sharing
  • Excel Processing: SheetJS (xlsx)
  • Phone Number: libphonenumber-js
  • Icons: Lucide React Native
  • Navigation: Custom tab navigation

๐Ÿ“ฆ Installation

Prerequisites

  • Node.js (v18 or higher)
  • npm or yarn
  • Expo CLI
  • iOS Simulator (Mac only) or Android Emulator

Step 1: Clone the repository

git clone https://github.com/AlexandreDresch/Vyro.git
cd vyro

Step 2: Install dependencies

npm install

Step 3: Start the app

npx expo start

๐Ÿ—๏ธ Project Structure

vyro/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”œโ”€โ”€ common/          # Reusable components
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ button-row.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ field.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ kpi-card.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ list-item.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ modal.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ phone-input.tsx
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ stock-bar.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ modals/          # Modal components
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ add-client-modal.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ add-product-modal.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ add-sale-modal.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ client-detail-modal.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ edit-client-modal.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ edit-product-modal.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ edit-sale-modal.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ io-modal.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ product-detail-modal.tsx
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ sale-detail-modal.tsx
โ”‚   โ”‚   โ””โ”€โ”€ navigation/      # Navigation components
โ”‚   โ”‚       โ”œโ”€โ”€ app-navigator.tsx
โ”‚   โ”‚       โ””โ”€โ”€ tab-bar.tsx
โ”‚   โ”œโ”€โ”€ screens/             # Main screens
โ”‚   โ”‚   โ”œโ”€โ”€ dashboard-screen.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ sales-screen.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ products-screen.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ clients-screen.tsx
โ”‚   โ”‚   โ””โ”€โ”€ setup-screen.tsx
โ”‚   โ”œโ”€โ”€ hooks/               # Custom hooks
โ”‚   โ”‚   โ”œโ”€โ”€ use-database.ts
โ”‚   โ”‚   โ””โ”€โ”€ use-translation.ts
โ”‚   โ”œโ”€โ”€ i18n/               # Internationalization
โ”‚   โ”‚   โ””โ”€โ”€ translations.ts
โ”‚   โ”œโ”€โ”€ types/              # TypeScript definitions
โ”‚   โ”‚   โ””โ”€โ”€ index.ts
โ”‚   โ”œโ”€โ”€ utils/              # Utility functions
โ”‚   โ”‚   โ”œโ”€โ”€ constants.ts
โ”‚   โ”‚   โ”œโ”€โ”€ helpers.ts
โ”‚   โ”‚   โ”œโ”€โ”€ seed-data.ts
โ”‚   โ”‚   โ””โ”€โ”€ storage.ts
โ”‚   โ””โ”€โ”€ styles/             # Global styles
โ”‚       โ””โ”€โ”€ global-styles.ts
โ”œโ”€โ”€ assets/                 # Images and fonts
โ”œโ”€โ”€ app.json               # Expo configuration
โ”œโ”€โ”€ package.json
โ””โ”€โ”€ tsconfig.json

๐ŸŽฏ Key Features Explained

Stock Behavior

When creating a sale, you can choose between two stock management strategies:

  • Reserve Stock: Pending orders reduce stock (reserve inventory for pay-later customers)
  • Don't Reserve Stock: Pending orders don't affect stock (manual stock management)

Configure this during app setup.

Multi-language & Currency

  • Select your preferred language during first launch
  • Currency formatting automatically adapts to your selection
  • All UI text, dates, and numbers are localized

Data Management

  • Export: Export all sales, products, and clients to Excel
  • Import: Import data from previously exported files
  • Reset: Clear all data and return to setup screen

Contributors

AlexandreDresch

Issues