https://github.com/esraa-ragab7/planets2025
https://github.com/esraa-ragab7/planets2025
clean-architecture coredata mvvp swiftui unit-testing universal-app
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/esraa-ragab7/planets2025
- Owner: Esraa-ragab7
- Created: 2025-01-17T11:52:08.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-01-28T00:41:54.000Z (over 1 year ago)
- Last Synced: 2025-07-19T16:07:15.166Z (11 months ago)
- Topics: clean-architecture, coredata, mvvp, swiftui, unit-testing, universal-app
- Language: Swift
- Homepage:
- Size: 1.09 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Planets
Planets is an educational app designed to share detailed information about the planets in our solar system.
## Architecture pattern
* MVVM(Model View ViewModel) + Clean Architecture concepts
## Run Requirements
- **Minimum iOS Version**: 15
- **Minimum Xcode Version**: 13
- **Framework**: SwiftUI
## Installation
1. Clone this repository:
```bash
git clone https://github.com/Esraa-ragab7/Planets2025.git
2. Navigate to the project directory::
```bash
cd Planets2025
3. Open the project in Xcode:
```bash
open Planets2025.xcodeproj
4- Build and run the project on the iOS Simulator or a connected device.
### Dark Mode Screenshots (portrait and Landscape orientation)


### Light Mode Screenshots (portrait and Landscape orientation)


## App Layers
#### MVVM Concepts
##### Presentation Logic
* `View` - Handles user interaction and displays data. For example, a PlanetsListView displays a list of planets and sends user actions (e.g., taps) to the ViewModel.
* `View Model` - Contains the presentation logic and transforms data from the UseCase into a format suitable for the View. It observes state changes and updates the View.
* `Router` - Manages navigation between views. For example, it determines how to navigate from a list of planets to a planet's detail view.
#### Clean Architecture Concepts
##### Application Logic
* `UseCase / Interactor` - Contains business rules and application logic. For example, a FetchPlanetsUseCase retrieves data from a repository and processes it.
* `Entity` - Core models representing the app's data. For example, the Planet struct holds attributes like name, gravity, and population.
##### Repository & Framework Logic
* `Repository` - Provides data from various sources, such as APIs or local databases. It acts as an abstraction layer, isolating data retrieval logic.
* `Persistence / API Entities` - Represents database models or API response objects that map to the app's Entity layer.