Git Product home page Git Product logo

github-issues-browser's Introduction

GHIssues

© 2020 Charles Pisciotta

A sample SwiftUI (iOS) app that allows a user to browse GitHub issues from a user's repositories.

Swift Version

This sample app displays a list of issues for a given repository. In the preview list, it displays basic information such as the title, #, and state of the issue.

On click, it displays a detailed view of the issue. This includes all of the previous information. In addition, it includes the following information: a description written by the owner (if applicable), the author/owner, any associated labels, the milestone associated with the issue (if applicable), an option to view comments (if applicable), and the dates when the issue was first created and last updated.


Repos List View Issues List View Issue Detail View


Features

  • View all issues for a given repository (10 at a time).
  • View a detailed description for any given issue.
  • View basic data, including title, description, state/status, date created/updated, author, etc.

To Do

  • SwiftUI does not have good support for automatically loading paginated requests when scrolling in a list. In the future, I'd like to determine a better way to append issues without requiring the user to click a button.
  • Allow the user to filter the issues (i.e. by date created, date updated, status, author, etc.).
  • Add error handling for bad requests, invalid data, slow connection, unexpected errors, etc.
  • Allow the user block to see more information about the author.
  • Allow the user to view comments, a milestone, and author information on an issue.
  • Consider updating the issue preview to better display the issue.

Development Process

Understanding

  1. Visualize the GET request from a given user/organization and from a given repository using a REST client.
  2. Understand the JSON being returned and understand the different scenarios from GitHub Docs.

Design Preperation

  1. Create basic sketches and prototypes of what the sample app will look like when completed.

Development

  1. Model the GitHub issue as a Swift struct using Codable.
  2. Develop the app's networking layer to efficiently make a GET request using URLSession.
  3. Develop the view models for the list of issues and for the issue detail view.
  4. Create the SwiftUI views to display the list of issues and the detail views.

Testing

  1. Develop now, and throughtout the process, unit tests to ensure that the code is functioning properly.
  2. Use the app and determine any remaining issues, bugs, or improvements.

Documentation and Clean Up

  1. Write now, and throughout the process, documentation to help for readability and understanding.
  2. Ensure that all existing code is written cleanly and efficiently.

Requirements

  • iOS 14.0+
  • Xcode 12.0+

Using the application

Download or clone the project to Xcode. Run the code on the simulator or a physical device.


Contribute

I would love you for your contribution to this project, check the LICENSE file for more info.

Meta

Charles Pisciotta – Freelance iOS Developer – [email protected]

Distributed under the MIT license. See LICENSE for more information.

https://github.com/cpisciotta

github-issues-browser's People

Contributors

cpisciotta avatar

Watchers

 avatar

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.