An iOS application that allows users to search for books by author and view their details. Built with SwiftUI, utilizing Clean Architecture and MVVM.
- Search for books by author name
- View a list of books matching the search criteria (only Czech language books)
- See book details including cover image, title, author, description, and publication year
- Open books directly in the Google Play Store
| Light | Dark |
|---|---|
| Light | Dark |
|---|---|
| Light | Dark |
|---|---|
| Light | Dark |
|---|---|
- SwiftUI for the UI
- Minimum iOS target: 18.0
- Clean Architecture with MVVM presentation pattern
- Swinject for dependency injection
- Google Books API for data
- Localization support (English and Czech)
- Custom app icon and book icons created with Adobe Fresco and Adobe Illustrator
The project follows Clean Architecture principles, organized into the following layers:
- Book
- Views (BookCellView, BookDetailView, BookListView, etc.)
- ViewModels
- Book
- Entity (Book.swift)
- UseCase (GetBooksUseCase)
- Volume
- DataSource
- VolumeDataSource interfaces and implementations (Mock, Remote)
- DTO
- Data transfer objects for Book/Volume data
- DataSource
- Assembly - Dependency registration
- Extensions - Utility extensions
- Network - HTTP client implementation
- Protocols - Shared interfaces
- Config.xcconfig - Contains BOOK API URL
The application is built using Clean Architecture principles, which separates concerns into distinct layers:
- Presentation Layer: Contains UI components (views) and view models
- Domain Layer: Contains business logic, use cases, and domain entities
- Data Layer: Handles data operations and external API communication
The Repository layer was intentionally omitted (YAGNI principle).
The app uses the new SwiftUI navigationTransition(.zoom) for transitions between screens.
- Clone the repository
- Open the project in Xcode
- Build and run the application
The project includes unit tests for the GetBooks use case. Run tests using Xcode's testing framework.
1 MD
- iOS 18.0+
- Xcode 16.0+
- Swift 5.9+
- Add more filtering options beyond author name
- Implement caching for offline use
- Add pagination for large result sets
This project was developed as a coding task for an interview process. It demonstrates clean code structure, modern iOS development practices, and effective use of the Google Books API.