This project demonstrates a simple application using SwiftUI for showcasing a feature set based on maps and lists. The architecture and design choices are aimed at balancing usability, maintainability, and performance.
- Primary Map View: The app opens to a map view, prioritizing geospatial data as the primary user interaction point.
- Secondary List View: A list view is available as a secondary interface to complement the map view, ensuring seamless navigation and data access.
- Dark & Light Mode Support: The UI is fully compatible with both dark and light modes, adapting to the user’s device settings dynamically.
- Map as Primary UX: The user experience is tailored with the map view as the primary page and the list view secondary. This decision was based on the app's core functionality and user focus on location-based data.
- Load what you see: Due to SwiftUI's known large memory footprint, I have decided to unload the map view when it is covered by the list sheet to maintain optimal performance.
- KISS & YAGNI Principles: Simplicity and avoiding over-engineering were core to development. Features were implemented only when needed, keeping the app clean and focused.
- Dependency Management: The app uses the
liveversions of all dependencies. These can easily be swapped withdummyversions for testing or other purposes, ensuring flexibility during development and maintenance. - Core System Manager Tests: Simple tests have been included for the core manager to verify its functionality and ensure a stable foundation for the app.
For the reviewer’s convenience, a testing API is included directly within the project. Although in production builds, API keys are injected via CI pipelines, this setup simplifies the review process.
- Xcode 15+
-
Clone the repository:
git clone https://github.com/shadiGhelman/FiveSquare
-
open the
FiveSquare.xcodeproj -
Run the App with ⌘ command+R.
Note: You can use your own API key if desired, but a testing key is included for now. Also, don't forget to use your own developer account to run the app on a real device.
To execute tests for the core manager and other components, just open the project and hit the ⌘ command+U for running tests in Xcode.
Feel free to reach out for any further questions. Thanks.
