https://github.com/czajnikowski/rdxchallenge
Coding challenge, a part of the interview process for RDX.
https://github.com/czajnikowski/rdxchallenge
composable-architecture ios swift swiftui tca thecomposablearchitecture
Last synced: 2 months ago
JSON representation
Coding challenge, a part of the interview process for RDX.
- Host: GitHub
- URL: https://github.com/czajnikowski/rdxchallenge
- Owner: Czajnikowski
- Created: 2023-05-24T15:39:58.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-02-12T13:16:59.000Z (about 1 year ago)
- Last Synced: 2024-12-28T07:27:23.283Z (4 months ago)
- Topics: composable-architecture, ios, swift, swiftui, tca, thecomposablearchitecture
- Language: Swift
- Homepage:
- Size: 54.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# RDXChallenge
Coding challenge, a part of the interview process for RDX.## First things first
It was a fun challenge 🎉Initially, I’ve been a bit sceptical about the tight timeframe, and the fact that I have never used the Composable Navigation before (it wasn't even released to the `main` branch yet), but the fact that it introduced the solution to work with the `NavigationStack` (which is a super nice API) comforted me a bit, so I decided to take the challenge.
## How did I do?
As you suggested, I spent 5 hrs working on the solution. Well, obviously, I familiarized myself briefly with the spec, the domain and the `prerelease/1.0` branch the day before 🤓Obviously, the app has a bunch of issues at the moment, but I decided to stop coding here and only mention some of them:
- I forgot about the last name in the Main module
- All the logic related to the sign in and out could have been extracted to a dedicated reducer
- Each onboarding step could have been placed in it's own module
- ~~There are some typos here and there~~
- At the end of the day I refactored `.fireAndForget` into `.run` effects, but forgot about cancellation…
- `ProviderToStateReducer` is likely a mild overengineering
- ~~Some `struct`s can be simplified to `enum`s~~
- There is a duplication in onboarding steps - most of them can be generalized into some bindable state + validation (in a shape of the current `isNextButtonDisabled`)
- No tests (well, four that I added are a drop in the ocean)
- Tests were the only bonus that I aimed for in given time frameLooking forward to your feedback and the next interview stage 🤷🏼♂️
Yours, Maciek.