Fishermans Diary is Simple and Minimal notes app created using SwiftSoup library for fishers to save fish information(like notes and count) they caught or search for fishes by webscraping Fishbase.org(thanks to fishbase) to know their habitat, diet, location, enviroment, size and many more.
I have created this after learning various concepts from the NYTimes app by TheCodeMonks
- Features
- Requirements
- What you can learn?
- Technical Background
- Dependencies
- Project Structure
- Contribute
- Contact
Searching for fish various filter options | Infinte Scrolling |
---|---|
search.fish.with.filter.mp4 |
infinite.scrolling.2.mp4 |
Web View for Detailed Fish Info | Adding fishes to 'My Fish List' |
fish.web.view.info.mp4 |
Add.Fish.to.My.Fish.List.mp4 |
Searching for fishes in 'My Fish List' using various Filter and Sort Options | Updating Fishes in 'My Fish List' |
search.sort.and.filter.My.fish.list.mp4 |
My.fish.list.Update.mp4 |
iOS 17 & Above
Xcode 15 & Above
-
You can learn Technologies like
- SwiftUI
- swiftData
- Combine
- Web Scraping
- SwiftSoup
- Swift Package Manager(SPM)
-
You can learn various Design patterns from this project such as
- Dependency injection
- Repository
- Singleton
- Observers
-
You can learn MVVM Two way binding Architecture for SwiftUI with Combine framework
- Fishermans Diary App was made using SwiftUI as the Core interface with Two Way Binding MVVM Architecture using Combine framework.
- SwiftData is used to store the Fish Information offline in device so that the user can access it at later time and modify it.
- SwiftSoup is used to scrap the required details from the Fishbase website.
- The User interface of this app mostly uses the inbuilt iOS components to keep the User experience close to the native feel.
- Fishes can be added to 'My Fish List' by clicking on the '+' icon on Fish Card in Home View
- App also has support for infinite scroll. It tracks the number of pages scraped for the results based on the search text to load more fishes when user reaches the end of the scroll.
- This project was built in the mindset of modularity and good coding patterns. Multiple design patterns like Dependency injection, Repository pattern, Singleton Pattern etc.
This project uses SPM (Swift Package Manager) as Dependency manager.
Fisherman's Keeper # Root Group
.
├── Utilities # Utilities for Fetching data and Scraping HTML
├── Extensions # Some useful extensions
├── Fonts # Custom Fonts
├── Globals # Contains App constants
├── Views # SwiftUI Views
├── ViewModel # Viewmodels for SwiftUI Views
├── Model # Model files
| └── SwiftData Model # SwiftData model for Persistence Storage
|
└── Preview Content # Dummy Data Files for supporting SwiftUI Previews
If you want to contribute to this project, you're always welcome!
You can contribute us by filing issues, bugs and PRs.
Before you open a issue or report a bug, please check if the issue or bug is related to Xcode or SwiftUI.
Have an project? DM me at 👇 LinkedIn: Aman Bind
Drop a mail to:- amanbind007@gmail.com