An open API service indexing awesome lists of open source software.

https://github.com/shrtlist/paymenttypeselection

Demo project to create a payment type selection interface using SwiftUI.
https://github.com/shrtlist/paymenttypeselection

combine-framework mvvm swiftui timer

Last synced: 16 days ago
JSON representation

Demo project to create a payment type selection interface using SwiftUI.

Awesome Lists containing this project

README

          

# SwiftUI Test
In this test, you will be need to create a payment type selection interface using SwiftUI.

## Requirements

- macOS Monterey 12.0 or later
- Xcode 13.2 or later
- Swift 5.0 or later
- iOS Simulator/Device 15.2 or later

---

## Task Details

This challenge is to create a payment type selection interface using SwiftUI.
It should:
- ⏱️ 60-second countdown timer
- 💳 Payment method selection
- 🔍 Search functionality for payment types
- ♻️ Pull-to-refresh payment list
- ✅ Selection state management
- 🎯 Modal presentation
- ✨ Success view after completion

### Implementation Checklist

- [ ] Payment Type Selection Interface
- [ ] Interactive payment method selection
- [ ] Visual feedback for selected payment types
- [ ] Smooth animations and transitions

- [ ] Data Management
- [ ] Implementation of PaymentTypesRepository
- [ ] Efficient state management
- [ ] Type-safe data handling

---

## Setup

### Open the project in Xcode

```bash
open SwiftUIChallenge.xcodeproj
```

### Running the Project

1. Open the project in Xcode
2. Select your target device (iOS Simulator or physical device)
3. Click the "Run" button (▶️) or press `Cmd + R` to build and run the project

### Project Structure
The application's entry point is `SwiftUIChallengeApp.swift`, which loads the main `ContentView`. The core functionality is organized as follows:
- `SwiftUIChallengeApp.swift`: Application entry point and setup
- `ContentView.swift`: Main view implementation
- `PaymentTypesRepositoryImplementation.swift`: Data layer implementation

### Running Project Example

Screenshots of the full flow are in the `Screenshots` folder.

Example:
![Example View](Screenshots/5.png)

---

## Development Guidelines

### Do's

- Write clean, maintainable, and well-documented code and follow the best practices and coding standards.
- You are free to use any official documentation or language references (SwiftUI, Swift, etc).
- You can use the debugging tools and native IDE features (only standard Auto-Completion)

### Don'ts

- Do NOT use any external libraries for the implementation.
- DO NOT use any Coding Assistants like GitHub Copilot, ChatGPT, etc or any other AI based tools.
- DO NOT visit direct blogs or articles related to implementation of the tasks.
- DO NOT use Stackoverflow or any other forum websites.