Skip to content

anxheloo/redux-react-native-gift_card_app

Repository files navigation

Gift Card Wallet – Technical Assessment

This is a simplified Gift Card Wallet app built in React Native for the Everup technical test.

🚀 Features Implemented

  • ✅ Gift card list screen (FlatList with proper styling and performance optimization)
  • ✅ Gift card details screen with typed route navigation
  • ✅ Add gift card screen with local form state and validation
  • ✅ Remove gift card functionality via Redux
  • ✅ Redux Toolkit + redux-persist for offline state
  • ✅ Modular, scalable folder structure
  • ✅ Full TypeScript coverage with typed navigation and Redux
  • ✅ Reusable UI components (Card, HeaderBackButton, Input fields)
  • ✅ Error handling for invalid form data and edge cases

⚠️ Note: This version is intentionally scoped to demonstrate structure, architecture, and development discipline. The project is not built to be production-ready or complete by design.


🧠 Architecture Overview

  • State Management: Redux Toolkit
  • Persistence: AsyncStorage via redux-persist
  • Navigation: React Navigation v6 with typed stack routes
  • UI Composition: Reusable components with theme integration
  • Type Safety: Fully written in TypeScript (no any used)

💡 Possible Enhancements (if extended)

If expanded further, this app could include the following professional features:

Feature Description
🖼️ Image Picker Let users upload a photo for each gift card via react-native-image-picker
📅 Date Picker Replace raw text input with a native date picker for expiration dates
⏳ Skeleton Loaders Show animated placeholders while loading the persisted gift cards
🔍 Search & Filter Add search functionality by brand, amount range, or soon-to-expire
🛠️ Edit Gift Cards Allow editing an existing card (pre-fill form + dispatch update)
📤 API Fetching Logic If backend is added, support async fetching/saving via RTK Query or thunks
✅ Input Validation Schema Replace inline validation with zod or yup for consistency
💬 Toasts & Feedback Use react-native-toast-message or similar for user feedback
🧪 E2E Testing with Detox Add end-to-end testing coverage (optional but pro)
🌙 Dark Mode Add support for dynamic theme switching via context or native Appearance API
🔄 Pull-to-Refresh Implement refreshing with onRefresh in FlatList to allow user-initiated reloads
♾️ Infinite Scroll Use onEndReached to lazy-load more gift cards (if remote source is added)
⚡ Initial Render Tuning Use initialNumToRender, maxToRenderPerBatch, and windowSize to optimize list performance

Each of these is within scope for production work and can be layered in cleanly without disrupting the current architecture.


🧪 Tests

You’ll find a sample reducer test in src/tests/giftCardsSlice.test.ts, validating giftCardsList addGiftCard and removeGiftCard logic.


📸 Screenshots

Screenshots of the app are included in the src/assets/screenshots folder or as a PDF.


⚙️ Getting Started

git clone https://github.com/anxheloo/Gift-Card-Wallet-App.git
cd Gift-Card-Wallet-App
npm install
cd ios && pod install && cd ..
npm run ios

📝 Final Note

This project demonstrates my approach to building scalable, maintainable mobile apps using modern React Native tooling. The current implementation is intentionally scoped to showcase architecture, not to deliver a full solution.

Let me know if you'd like a walkthrough or to explore further implementation ideas.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published