A comprehensive React Native mobile application for the Stase fintech platform, featuring secure authentication, real-time transactions, and a modern user experience. This is the client-side application that connects to the Stase backend API.
- Account Management - Create, manage, and monitor multiple accounts
- Real-time Transactions - Instant transfers, deposits, and withdrawals
- Currency Conversion - Multi-currency support with live exchange rates
- Transaction History - Detailed transaction logs and analytics
- Security PIN - Secure transaction PIN for enhanced security
- Cross-Platform - iOS, Android, and Web support
- Offline Support - Core functionality available offline
- Real-time Updates - Live data synchronization
- Secure Storage - Encrypted local storage for sensitive data
- Modern UI/UX - Beautiful, responsive interface with NativeWind
This React Native client application is built with modern technologies for optimal performance and developer experience:
- React Native - Cross-platform mobile development framework
- Expo - Development platform and tooling
- Expo Router - File-based routing system with typed routes
- TypeScript - Type-safe development and better code quality
- Tailwind CSS (NativeWind) - Utility-first styling for React Native
- Clerk - Authentication and user management service
- React Query (TanStack) - Data fetching, caching, and state synchronization
- Zustand - Lightweight state management
- Zod - Runtime type validation and schema definitions
- Axios - HTTP client for API communication
- Lucide React Native - Beautiful, consistent icon library
- React Native Reanimated - Smooth animations and gestures
- Expo Secure Store - Secure local storage for sensitive data
client/
βββ app/
β βββ (app)/ # Main app screens and features
β β βββ (tabs)/ # Tab navigation screens
β β β βββ _layout.tsx # Tab layout
β β β βββ index.tsx # Home/Dashboard tab
β β β βββ card.tsx # Card management tab
β β β βββ convert.tsx # Currency conversion tab
β β β βββ history.tsx # Transaction history tab
β β βββ _layout.tsx # Main app layout
β β βββ deposit.tsx # Deposit funds screen
β β βββ withdraw.tsx # Withdraw funds screen
β β βββ transfer.tsx # Money transfer screen
β β βββ profile.tsx # User profile screen
β β βββ referral.tsx # Referral program screen
β β βββ offline.tsx # Offline mode screen
β β βββ bankDetails/ # Bank details management
β β βββ transactionDetails/ # Transaction details view
β βββ (auth)/ # Authentication flow screens
β β βββ _layout.tsx # Auth layout
β β βββ index.tsx # Auth index
β β βββ welcome.tsx # Welcome/onboarding screen
β β βββ sign-in.tsx # Sign in screen
β β βββ sign-up.tsx # Sign up screen
β βββ _layout.tsx # Root layout with navigation
β βββ global.css # Global styles and Tailwind config
βββ assets/
β βββ images/ # App icons, splash screen, images
β βββ fonts/ # Custom fonts
βββ components/ # Reusable UI components
βββ constants/ # App constants and configurations
βββ contexts/ # React contexts for state management
βββ hooks/ # Custom React hooks
βββ store/ # Zustand state management
βββ utils/ # Utility functions and configurations
βββ app.json # Expo configuration
βββ package.json # Dependencies and scripts
βββ babel.config.js # Babel configuration
βββ tailwind.config.js # Tailwind CSS configuration
βββ tsconfig.json # TypeScript configuration
- Node.js 18.0.0 or higher
- npm or yarn package manager
- Expo CLI (
npm install -g @expo/cli) - Physical iOS/Android device or emulator/simulator
- Stase backend API (running separately)
-
Clone the repository
git clone <client-repository-url> cd stase
-
Install dependencies
npm install
-
Environment Setup
Create a
.envfile in the root directory:# API Configuration EXPO_PUBLIC_SERVER_URL=your-stase-server-endpoint # Clerk Authentication EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY=your-clerk-publishable-key # Environment NODE_ENV=development
Note: Ensure the Stase backend API is running and accessible at the specified URL.
-
Start the development server
npm start
-
Run the app
- On Physical Device: Install Expo Go app, scan QR code from terminal
- On Simulator:
npm run ios # iOS Simulator npm run android # Android Emulator
- On Web:
npm run web
- Welcome screen with sign-up/sign-in options
- Multi-factor authentication support
- Dashboard with account overview
- Transaction history and details
- Money transfer interface
- Currency conversion tools
- Profile and settings management
The app uses a modern design system with:
- NativeWind for Tailwind-like styling
- Lucide React Native for consistent icons
- Custom components for reusable UI elements
- Responsive design for various screen sizes
- Dark/light theme support
Proudly designed by Confilearn - Explore the complete UI/UX design system and user flow:
- Modern Banking Interface - Clean, intuitive financial app design
- User-Centric Flow - Seamless authentication and transaction experiences
- Consistent Design Language - Unified color palette, typography, and spacing
- Accessibility Focus - High contrast ratios and clear visual hierarchy
- Mobile-First Approach - Optimized for touch interactions and various screen sizes
The design demonstrates expertise in:
- Financial app UX patterns
- Modern UI design principles
- Component-based design systems
- User journey mapping
- End-to-end encryption for sensitive data
- Secure authentication with JWT tokens
- Transaction PIN for financial operations
- Input validation with Zod schemas
- Rate limiting on API endpoints
- CORS protection for web security
# Run ESLint
npm run lint
# Type checking
npx tsc --noEmit
# Format code with Prettier
npx prettier --write .- Test authentication flow (sign up, sign in, verification)
- Test transaction operations (deposit, withdraw, transfer)
- Test offline functionality
- Test on different screen sizes and orientations
This client application connects to the Stase backend API. The main API endpoints used are:
POST /auth/register- User registrationPOST /auth/login- User loginPOST /auth/verify- Email verificationPOST /auth/refresh- Token refresh
GET /account/details- Fetch user account detailsPUT /account/update- Update account informationPOST /account/pin- Set/verify transaction PIN
POST /transactions/deposit- Deposit fundsPOST /transactions/withdraw- Withdraw fundsPOST /transactions/transfer- Transfer moneyGET /transactions/history- Get transaction historyPOST /transactions/convert- Currency conversion
Note: The full API documentation is available in the Stase Server Repository.
- App name, version, and identifiers
- Platform-specific settings (iOS, Android, Web)
- Plugin configurations (splash screen, secure store, etc.)
- Build settings and optimizations
- Custom color palette matching Stase brand
- Responsive breakpoints
- Custom utility classes
- Font family configurations
- Strict type checking enabled
- Path aliases for cleaner imports
- React Native type definitions
EXPO_PUBLIC_API_URL- Backend API endpointEXPO_PUBLIC_CLERK_PUBLISHABLE_KEY- Clerk authentication keyNODE_ENV- Environment (development/production)
npm start # Start Expo development server
npm run android # Run on Android emulator/device
npm run ios # Run on iOS simulator/device
npm run web # Run in web browser
npm run lint # Run ESLint code quality check
npm run reset-project # Reset project to clean statePrebuild Configuration
npm run prebuild # Generate native files with pluginsBuild with Expo EAS
# Install EAS CLI
npm install -g @expo/eas-cli
# Login to Expo
npx eas login
# Build for all platforms
npx eas build --platform all
# Build for specific platform
npx eas build --platform ios
npx eas build --platform androidSubmit to App Stores
# Submit to Apple App Store and Google Play Store
npx eas submit --platform allCreate app.config.js for production environment variables:
export default {
expo: {
// ... other config
extra: {
apiUrl: process.env.EXPO_PUBLIC_API_URL,
clerkKey: process.env.EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY,
},
},
};- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow TypeScript best practices
- Use conventional commit messages
- Write tests for new features
- Maintain code coverage above 80%
- Follow the established code style
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Create an issue in the repository
- Contact the development team
- Check the FAQ for common questions
- Biometric authentication
- QR code scanner
- Push notifications
- Advanced analytics dashboard
- Multi-language support
- Apple Pay/Google Pay integration
- Investment portfolio management
- Cryptocurrency support
- Advanced budgeting tools
Built with β€οΈ by Confilearn