/Fishermans-Diary-iOS

Simple and Elegant Note's App for fisherman's to save fish's info, count and more by scraping Fishbase.org using SwiftSoup

Primary LanguageSwift

App Banner

Swift SwiftUI Architecture GitHub forks GitHub Stars GitHub Watchers

Libraries & Tools

SwiftSoup XCode Swift Package Manager Combine SwiftData

Fishermans-Diary

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.

Special Thanks

I have created this after learning various concepts from the NYTimes app by TheCodeMonks

📝 Table of Contents

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!

What you can do

You can contribute us by filing issues, bugs and PRs.

Before you do

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