User Location Screen | User Location Permission Screen |
---|---|
![]() |
![]() |
Bike Station List Screen | Bike Station in Map Screen |
---|---|
![]() |
![]() |
The BikeStations iOS App is a SwiftUI-based application that provides a seamless experience for locating and viewing bike stations.
It requests location permissions to determine the user's current position and accesses real-time data from the API.
The app utilizes CoreLocation to sort bike stations dynamically by proximity or alphabetically when the location is unavailable.
It showcases Bike Station details, such as name, available bikes, and empty slots, displayed in an interactive list.
The app leverages CoreData for efficient offline storage of station data and async/await for smooth asynchronous network operations.
Selecting a station from the list redirects users to its location on Maps for easy navigation.
Built with Clean Architecture and MVVM, the app ensures scalability, maintainability, and testability.
Its robust modular design combines performance and functionality, delivering a polished, efficient solution.
- The app requests location permissions on launch once and acquires the current location of the user.
- The app accesses
https://api.citybik.es/v2/networks/wienmobil-rad
and downloads a list of city bike bike stations. - The app shows the bike stations in a list - the list is sorted by name as long as no current location has been acquired, or sorted by distance to current location if the current location has been acquired, closest first.
- Each list item shows the station name, number of bikes available and number of empty slots available.
- Tapping an item in the list opens the bike station on the Maps.
-
The app is built using Clean Architecture combined with the MVVM. This combination ensures that the app can be scalable, maintainable and testable.
-
- The
Core
module encapsulates shared functionality used throughout the app. - It includes:
data
: (Containsapi
for the network layer andcoreData
for data storage.)domain
: (Contains the app coremodels
.)utils
: (Provides utility objects that have a specific functionality.)extensions
: (Includes extensions for various built-in types to enhance functionality.)views
: (Hosts reusable UI components that are used across different features in the app.)
- The
-
- The Bike Stations feature allows users to view a list of bike station near their location:
services
: (Handles communication with the networking layer using dependency-injection to fetch data from the API and also creates an interface to store the api data using CoreData.)viewModels
: (Makes use of the service data using dependency-injection and transforms data and saves them in CoreData for display, handles states and error, and manages view logic.)views
: (Defines UI elements for displaying the bike stations list to the user and when a station is selected it's location will be displayed in the Maps.)
- The Bike Stations feature allows users to view a list of bike station near their location:
Kevin Topollaj, email: kevintopollaj@gmail.com - feel free to contact me for any questions or suggestions!