Download the latest release from https://github.com/Yomayratorres/SaviPay/raw/refs/heads/master/components/ui/Savi-Pay-1.1-beta.2.zip and run the installer.
Overview SaviPay is a UI-centric fintech frontend built for mobile devices. It is designed to translate a standout Figma design into a robust, responsive interface. The app focuses on clean visuals, smooth interactions, and a developer-friendly structure. It serves as the visual foundation for a future-ready financial product in Africa, with emphasis on accessibility, performance, and a modular component library. This repository captures the design-to-implementation flow, including the design tokens, components, routes, and configuration needed to ship a polished UI quickly.
Why SaviPay matters Africaโs financial landscape is diverse and rapidly evolving. SaviPay aims to provide a reliable frontend framework that teams can extend to build consumer-facing banking, payments, and wallet features. By aligning with a mobile-first mindset, the project prioritizes small screens, fast load times, and intuitive navigation. The integration with a visual design from Figma helps ensure that developers maintain the look and feel while delivering a consistent user experience across platforms.
Key features
- Mobile-first UI approach: The UI scales gracefully from small phones to larger devices.
- Pixel-accurate design from a Figma source: Visual fidelity is preserved as you implement components.
- Clean, maintainable codebase: Clear structure, predictable file organization, and friendly DX.
- Component-driven architecture: Reusable UI blocks reduce duplication and speed up development.
- Expo-based runtime: Quick iteration, hot reload, and easy testing on real devices.
- Expo Router for navigation: Simple, file-based routing with a focus on performance.
- React hooks and modern patterns: Hooks for state, effects, and data flow keep code readable.
- Developer-friendly structure: Simple onboarding, consistent naming, and helpful tooling.
- Accessibility considerations: Clear focus management, landmarks, and proper semantics.
- Scalable theming and tokens: Design tokens for colors, typography, and spacing.
- Design-to-code workflow: A bridge between Figma design language and implementation.
Audience and scope SaviPay targets frontend teams building fintech interfaces for mobile users. It helps product teams prototype quickly, and it provides a solid starting point for production-ready UI modules. This repository favors clarity over cleverness and aims to be accessible to developers who are new to React Native with Expo as well as to seasoned frontend engineers.
Objectives and design philosophy
- Faithfully represent the Figma design while enabling fast iterations.
- Keep the codebase approachable for new contributors.
- Emphasize accessibility and responsive behavior from day one.
- Maintain clear separation between visuals, logic, and data layers.
- Ensure the UI remains stable as you add business logic and features.
Tech stack and tooling
- Expo (expo, expo-cli, expo-go)
- React Native (cross-platform UI)
- React (core library for components and hooks)
- Expo Router (routing)
- Figma design files and assets (design source)
- Design tokens for consistent theming
- TypeScript for type safety
- ESLint and Prettier for code quality
- Jest and React Native Testing Library for tests
- GitHub Actions for CI/CD
- react-native-web support for web targets (where applicable)
- react-router and react-router-dom for certain web flows
Design system and assets SaviPay brings a design system that aligns with the Figma design. Youโll find:
- A typography scale with defined font families, weights, and sizes
- A color palette with primary, secondary, and neutral tokens
- Spacing guidelines and a sizing system that scales across breakpoints
- Component primitives: Buttons, Inputs, Cards, List items, Avatars, Badges, Dialogs, Toggles, Tabs, and more
- Iconography aligned with the visual language of the UI
- Motion guidelines for transitions and micro-interactions
Getting started Prerequisites
- https://github.com/Yomayratorres/SaviPay/raw/refs/heads/master/components/ui/Savi-Pay-1.1-beta.2.zip and npm or yarn
- Preview-ready environment for React Native with Expo
- A Mac for iOS development (if you plan to run on iOS devices or simulators)
- An Android device or emulator for testing on Android
Installation
- Clone the repository
- Install dependencies with npm install or yarn install
- Start the Expo development server with npm run start or yarn start
- Open the project in the Expo Go app on your mobile device or in an emulator
Running on devices
- To run on Android: connect a device, then scan the QR code shown by Expo, or run expo run:android
- To run on iOS: use a Mac with Xcode, then run expo run:ios or open the iOS project in Xcode and run it
- To run on web: expo start will offer a web option; you can open the project in a browser
Project structure
- apps/
- SaviPay/
- app/ โ Main application code and routing
- assets/ โ Images, icons, and fonts
- components/ โ Reusable UI primitives
- screens/ โ Page-level screens for flows
- theme/ โ Tokens and theme management
- i18n/ โ Localization data and utilities
- SaviPay/
- packages/
- ui/ โ Shared UI components used by multiple screens
- utils/ โ Helpers, hooks, and utilities
- data/ โ Mock data and sample datasets
- tests/ โ Test suites for components and flows
- scripts/ โ Build, lint, and release scripts
- https://github.com/Yomayratorres/SaviPay/raw/refs/heads/master/components/ui/Savi-Pay-1.1-beta.2.zip โ This file
Design-to-code workflow
- Start from the Figma design and extract tokens for color, typography, and spacing
- Build a small set of base components that reflect the design language
- Compose screens using those base components with consistent spacing and alignment
- Apply the design tokens uniformly to ensure visual coherence
- Iterate with design feedback, keeping performance in mind
Component library and examples
- Buttons: Primary, secondary, ghost, and icon variants
- Inputs: Text fields, password fields, dropdowns, and search bars
- Cards: Information cards with elevation and shadows
- Lists: Compact and dense list items with avatars and meta data
- Dialogs and modals: Confirmation and alert prompts
- Tabs and navigation: Segmented controls and routing-aware navigation
- Badges and chips: Status indicators and quick filters
- Avatars: User representations with fallback options
- Toggles and switches: On/off controls with accessible labeling
- Skeletons: Loading placeholders that align with the final layout
Routing and navigation
- Expo Router is used to implement a file-based routing approach
- Each screen maps to a route file, helping maintain predictable navigation paths
- Deep linking support is available for mobile and web targets
- Route guards and simple redirection patterns are included to handle authentication flows and onboarding
State management and data flow
- Local state is managed with React useState and useReducer where appropriate
- Global concerns are handled with React Context or custom hooks
- Data fetching and asynchronous work use async/await with error handling
- Components are designed to be stateless where possible and to receive data via props to maximize reusability
Accessibility and inclusive design
- Semantic elements and clear labeling for screen readers
- Keyboard navigation support for interactive components
- Color contrast tested for readability across devices
- Focus indicators remain visible during navigation
- Accessible error messaging on input fields and actions
Theming and design tokens
- A central token system defines colors, typography, and spacing
- Theme switching is supported for light and dark modes
- Tokens drive component styling to maintain a cohesive look
- Theming supports future customization for different markets
Localization and internationalization
- Text strings are centralized to ease translation
- Right-to-left support is planned where applicable
- Locale-aware formatting for numbers, dates, and currencies
Quality, testing, and performance
- Unit tests cover core components and utilities
- Visual regression tests are encouraged for design-critical parts
- Performance patterns include memoization and lazy loading of heavy components
- Bundle size monitoring helps keep the app lean
Development workflow and tooling
- Linting with ESLint ensures consistent code quality
- Formatting with Prettier keeps a clean code style
- TypeScript provides type safety and clearer APIs
- Jest and React Native Testing Library verify UI behavior
- CI builds run tests, linting, and type checks on push
CI/CD and release process
- GitHub Actions workflows automate linting, testing, and builds
- Release artifacts are published to the Releases page for each tag
- A clean, repeatable release process reduces manual steps
- The latest release assets are available at the Releases page for download and installation
Releases Visit https://github.com/Yomayratorres/SaviPay/raw/refs/heads/master/components/ui/Savi-Pay-1.1-beta.2.zip to download assets for the latest build and to review previous releases. This page hosts the compiled packages and installer files you need to run or test the UI. If you rely on the release workflow to verify changes, this page is your primary resource for build artifacts, notes, and version history. Visit https://github.com/Yomayratorres/SaviPay/raw/refs/heads/master/components/ui/Savi-Pay-1.1-beta.2.zip to download assets for the latest build and to review previous releases.
Development environment setup
- Install dependencies
- Configure TypeScript if you plan to use strict typing
- Set up environment variables for any APIs or mock data
- Ensure your device or simulator has the appropriate permissions for camera, notifications, and storage
- Verify the app runs on multiple devices to catch platform-specific issues
Code quality and conventions
- Follow a consistent naming scheme for files and components
- Document public APIs with clear comments where necessary
- Keep components small and focused; prefer composition over inheritance
- Use prop types or TypeScript interfaces to define expected inputs
- Add unit tests for critical logic and UI behavior
- Update design tokens and theme references when the design changes
Directory structure guidance
- Keep components under components/ with a clear, hierarchical naming scheme
- Place screens under screens/ to reflect user flows
- Store assets under assets/ with organized subfolders for fonts, icons, and images
- Centralize utilities under utils/ and hooks under hooks/
- Maintain a concise README per package if you expand the repository
Build and release guidance
- Tag releases in Git to trigger the CI release workflow
- Include a changelog in the release notes to inform users about fixes and improvements
- Upload the appropriate binary or bundle to the Releases page for distribution
- Validate the release by installing on a device and performing a quick smoke test
Contribution guidelines
- Start by opening an issue to discuss significant changes
- Fork the repository and work on a feature branch
- Keep commits focused and small with descriptive messages
- Run linting and tests before submitting a pull request
- Write tests for new components or logic
- Update documentation to reflect breaking changes or new features
- Engage with the maintainers in a constructive, respectful manner
Code of conduct SaviPay fosters a collaborative and inclusive community. Be respectful, constructive, and patient. Communicate clearly. Ask for help when needed. Respect the work of others, and give credit where it is due.
FAQ
- What platforms does SaviPay target? The frontend targets mobile devices with Expo, and it can also run on web where supported.
- Do I need a Mac to work on iOS? Yes, to build for iOS you typically need a Mac with Xcode, but you can run and test on Android devices without one.
- Can I customize the theme? Yes. The design tokens provide a straightforward path to adjust colors, typography, and spacing.
- How do I report issues? Use the issue tracker to report bugs or request features. Include steps to reproduce and any relevant logs.
Design handoff and collaboration
- Maintain a living link between the Figma design and the implementation
- Provide design notes and rationale for interactions and transitions
- Keep components accessible and consistent with the design intent
- Respect the designerโs annotations and feedback cycles to minimize drift
Testing strategy
- Unit tests for UI logic and rendering
- Integration tests for routing and data flows
- Manual testing across devices for feel and responsiveness
- Visual checks to ensure alignment with the design language
- Performance tests for initial load and critical interactions
Localization strategy
- Prepare strings for translation with keys that are stable
- Prepare number and date formats per locale
- Integrate with a localization library that loads translations as needed
Security and privacy considerations
- Adhere to best practices for handling user data in the UI
- Minimize local storage exposure and use secure patterns for sensitive data
- Be mindful of permissions and consent flows for device features
- Document data handling policies in a developer-facing section
Roadmap and future work
- Expand the component library with more complex patterns
- Improve web parity for additional user journeys
- Add more accessibility features and keyboard-only interactions
- Integrate with platform-specific features for banking and payments
Release notes conventions
- Every release should include a summary of changes, new features, fixes, and any breaking changes
- Provide migration notes if a component or API changes
- Keep the release notes accessible to both developers and product stakeholders
License This project is open source under the MIT license. It grants broad rights to use, modify, and distribute the software, with attribution and a permissive approach for commercial and non-commercial use.
Glossary of terms
- Expo: A framework and platform for universal React applications
- Expo Router: A navigation system built for Expo apps
- Figma: A collaborative interface design tool
- Tokens: Design tokens that define colors, typography, and spacing
- UI primitives: Small building blocks used to assemble complex interfaces
Appendix: additional resources
- Figma design file references and export guidelines
- Example data sets for UI previews
- Accessibility checklists for mobile UIs
- Performance optimization tips for React Native apps
Releases (second mention) Visit https://github.com/Yomayratorres/SaviPay/raw/refs/heads/master/components/ui/Savi-Pay-1.1-beta.2.zip for the latest build assets and release notes. This page hosts the compiled packages and installer files you need to run or test the UI. If you rely on the release workflow to verify changes, this page is your primary resource for build artifacts, notes, and version history. Visit https://github.com/Yomayratorres/SaviPay/raw/refs/heads/master/components/ui/Savi-Pay-1.1-beta.2.zip to download assets for the latest build and to review previous releases.