Code Monkey home page Code Monkey logo

fishermans-diary-ios's Introduction

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 library, 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:- [email protected]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.