Code Monkey home page Code Monkey logo

todo-ios's Introduction

Hacktoberfest 2020 with IEEE-VIT โค๏ธ

This is a simple ToDo iOS application built using swift. Users can also add subtasks and deadlines along with their tasks!

Support open source software by participating in Hacktoberfest and get goodies and a free t-shirt! ๐Ÿ’›

Please check all issues labelled as hacktoberfest to start contributing!

Kindly consider leaving a โญ if you like the repository and our organisation.

Getting Started

  • Fork it.

  • Clone your forked repo and move inside it:

git clone https://github.com/IEEE-VIT/ToDo-iOS.git && cd ToDo-iOS

  • Checkout to a new branch to work on an issue:

git checkout -b my-amazing-feature

  • Running the project

open the project in Xcode and run!
Shortcut: (โŒ˜ + R)

  • Once you're all done coding, it's time to open a PR :) Run the following commands from the root of the project directory:

git add .

git commit -m "A short description about the feature."

git push origin <my-amazing-feature>

Open your forked repo in your browser and then raise a PR to the master branch of this repository!

Contributing

To start contributing, check out CONTRIBUTING.md. New contributors are always welcome to support this project. If you want something gentle to start with, check out issues labelled as easy or good-first-issue. Check out issues labelled as hacktoberfest if you are up for some grabs! :)

License

This project is licensed under MIT.

todo-ios's People

Contributors

aaryankotharii avatar abraaolevi avatar amelinagzz avatar ankithm28 avatar aryan9600 avatar ashishkakkad8 avatar danglingp0inter avatar devanshimodha avatar drag0ndust avatar elezov avatar er-aman-gupta avatar gsnsg avatar harsh061 avatar lucasca73 avatar markk628 avatar mikaelacaron avatar niklasoemler avatar overheardswift avatar recouse avatar rizwankce avatar subhronilsaha avatar tejuamirthi avatar tushar1210 avatar yabenatti avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

todo-ios's Issues

Feat: use core-data to store the ToDo list.

Is your feature request related to a problem? Please describe.
As of now, this app does not persist the data all my tasks are deleted as soon as the app closes. It would be great if my list is persisted and available to me everytime I open the application.

Describe the solution you'd like
This can be solved by the use of coreData.

Additional context
FetchedResultsController shall be used to load/store/delete/edit the data as it can be seamlessly integrated with the tableview.

add travis for easy CI/CD

Is your feature request related to a problem? Please describe.
As a dev, adding CI/CD will help in doing TDD in the long run and providing a seamless experience to the user.

Describe the solution you'd like
add .travis.yml

Describe alternatives you've considered
As an alternative Fastlane may also be set up.

Additional context
NA

Marking task as uncompleted which are already marked as completed

I realy love the idea of your app. By showing completed task and uncompeletd task seprately. User can swip right to mark a task as done, but what if tehy did it by mistake?. The user may wants to mark the task as uncompleted, but there's no way to do it on history tab. It seems all I can do at hisgtory tab is just deleting task which is marked as done.
I widsh there is a mark as uncompeletd button to show up when user slid task swipe in history tab just like Tasks tab.

Delete Task Feature incomplete.

Describe the bug
Delete Task feature not implemented.

To Reproduce
Steps to reproduce the behavior:

  1. Go to your tasks list.
  2. Swipe on task to see options.
  3. Click delete .
  4. Nothing happens.

Expected behavior
Deleted task should be removed from todoList and tableview should be reloaded.

Screenshots
If applicable, add screenshots to help explain your problem.

Testing (please complete the following information):

  • Simulator: iPhone 11
  • iOS: 13.7
  • Xcode: 11.7

Additional context
deleteTask function is present in TodoViewController line number 7.
complete the function to resolve this issue.

Empty state after launch when no task is added

Description
When ever we launch the application first time after installation we see a blank screen. Ideally there should be a text suggesting "No tasks added" or something descriptive rather than blank white screen.

Solution
A simple label which will be displayed in case no task is present in our core data.

bug: dueDate does not contain time.

Describe the bug
The endDatePicker contains a row for time too, the DateFormatter style is set to medium hence the time isn't stored in endDate variable.

To Reproduce
Steps to reproduce the behavior:

  1. Go to TaskDetailsViewController
  2. Click on endDateTextfield
  3. Choose your endDate
  4. See the text in the textfield.

Expected behavior
The endDate variable should have a different date-format.
eg: 01 Oct 2020 11:30 pm should be the format

Testing (please complete the following information):

  • Simulator: iPhone 11
  • iOS: 13.7
  • Xcode: 11.7

Additional context
You can use DateFormatters dateformat property to fix this issue.
know more here

Task image Attachment

Feature request

Describe the solution you'd like
When creating or editting a task, an option to add images from the library or camera.

DueDatePicker accepts past dates.

Describe the bug
The datepicker to pick due-date of the task accepts past dates.

To Reproduce
Steps to reproduce the behavior:

  1. Create a task.
  2. scroll to a past date in the picker.
  3. click on add.

Expected behavior
The datePicker should only accept future dates!

Additional context
This can be fixed by using the minimum date property of the datePicker.
know more here

NavigationBarButton Title bug.

Describe the bug
The barButton title in TaskDetailsViewController is Save for both add Task and update Task, hence it is hard to distinguish the current operation for the user.

To Reproduce
Steps to reproduce the behavior:

  1. Tap on + button in TodoViewController.
  2. Add a new task.
  3. Tap on your added task.
  4. See topBarButton title.

Expected behavior
It would be Better if the title is Add while adding a new task & Update while updating an existing task.

Testing (please complete the following information):

  • Simulator: iPhone 11
  • iOS: iOS 13.7
  • Xcode: 11.7

Additional context
the task variable in TaskDetailsViewController will determine wether operation is update or add. If the variable in nil it means the operation is Add Task.

Hide tabbar on segue.

Describe the bug
when user taps on + to add a task, the tabbar is still present on the bottom which is not required and blocks bottom of the screen.

To Reproduce
Steps to reproduce the behavior:

  1. Go to todoViewcontroller
  2. Tap on +
  3. See bug.

Expected behavior
the tabbar should be hidden when TaskDetailsViewController is presented

Screenshots

Testing (please complete the following information):

  • Device: iPhone 11
  • iOS: 14.0
  • Xcode 12.0

Additional context
refer here

Separate the data source for the table view

Is your feature request related to a problem? Please describe.
Feature: (code) Separate the table view data source into a different file to prevent copying data on two screens (Tasks and History) but also to help minimize the size of the view controllers

Describe the solution you'd like
Following this tutorial or this tutorial a massive view controller can be avoided.

Describe alternatives you've considered
N/A

Delete tasks on the History Tab

Is your feature request related to a problem? Please describe.
Feature Request: Be able to delete tasks from the History tab

Describe the solution you'd like
Trailing swipe action to delete tasks on the History tab.

Describe alternatives you've considered
Or long press on a task and an action sheet comes up and confirm to delete the task

Whitespace Is being accepted as Task name and subtask name while it shouldn't

Describe the bug
Entering only a whitespace in task or subtasks textfield under task tab is getting accepted

To Reproduce
Steps to reproduce the behavior:

  1. Go to Tasks
  2. Click on '+' button on top-right corner to add a task
  3. Input whitespace/s in task and/or subtask textfield. Input end date
  4. Add task.

Expected behavior
Task name should've leading and trailing spaces trimmed. Hence, a alert should've shown saying task name/subtask name is empty or Invalid.

Testing:

  • Device: iPhone11 Pro max
  • iOS: 13.3
  • Xcode 11.3.1

Display zero state for no search results found

Description
While searching if search results are not found then we should display "No search results found" or something descriptive rather than blank screen.

Solution
A simple label which will be displayed only in case no results are found.

New unit tests for marking a task as complete

Is your feature request related to a problem? Please describe.
Code feature, add unit tests to confirm that marking a task as complete always works

Describe the solution you'd like
Create unit tests

Describe alternatives you've considered
N/A

Add label for task history in onboarding screen.

Is your feature request related to a problem? Please describe.
We have recently added a tab for task histories, which show the list of completed tasks!
This feature is a great one and shall be mentioned in the app's onboarding screen.

Describe the solution you'd like
Add a label and any appropriate icon for task history under the row for set priorities of your tasks

Describe alternatives you've considered
N/A
Additional context
current onboarding ๐Ÿ‘‡

Feat: Add a searchBar to search tasks.

Is your feature request related to a problem? Please describe.
If I have a lot of tasks it gets difficult for me to scroll through the entire list and find a specific task.

Describe the solution you'd like
A search bar under the navigation bar would be really helpful. So I can search for keywords and the list below filters accordingly.

Bug: add validations for creating task.

Describe the bug
Creating tasks has no validations hence tasks can be created without a Title or without a dueDate

To Reproduce
Steps to reproduce the behavior:

  1. Click +
  2. empty the task title
  3. click Add

Expected behavior
User should be alerted that the title is empty ( or the dueDate is empty ).

Screenshots

expected outcome

Additional context
Use a UIAlertController to solve this issue.

Add dueDate Label for each Task.

Is your feature request related to a problem? Please describe.
As a user I would want to see the due-date of each task right in the list itself.

Describe the solution you'd like
This can be solved by adding a label for duedate.

Additional context
Since we are using a system tableViewCell, it already contains a label for subtitle. Hence we only need to set the text of that label in CellForRowAt method of the tableview.

Bug: Keyboard Tap to dismiss

Describe the bug
in TaskDetailsViewController once the keyboard is up it does not dismiss under any circumstance.

To Reproduce
Steps to reproduce the behavior:

  1. Go to Tasks list.
  2. Click on + button.
  3. Tap on TaskTextField
  4. Now the keyboard cannot be dismissed

Expected behavior
The keyboard should dismiss when tapped anywhere on the view or when return key is pressed.

Screenshots
N/A

Testing (please complete the following information):

  • Device: iPhone 11
  • iOS: 14.0
  • Xcode 11.7

Additional context
you can refer here for all possible ways to solve this issue.

Bug: star-task feature incomplete.

Describe the bug
The star task feature is incomplete hence clicking on star does not produce any result.

To Reproduce
Steps to reproduce the behavior:

  1. Go to your tasks list.
  2. Swipe left to see options.
  3. click on star.

Expected behavior
Users should see which of their tasks are starred, the isFavourite property of a task should be true if it is starred and a star symbol should be seen on the corresponding task.

Screenshots

Expected Output

Additional context
SF symbols can be used for the star symbol. star.fill

Empty State Shows on History Tab When It Shouldn't

Describe the bug
The Empty state of the History tab shows whether or not there's a task there or not. It's not checking for no completed items.

To Reproduce
Steps to reproduce the behavior:

  1. Go to the Tasks tab
  2. Create a new task
  3. Use the leading swipe action to complete the task
  4. Go to the History tab
  5. The Empty state "no task history found"is still showing, when it shouldn't because there is a completed task

Expected behavior
The empty state shouldn't be shown once there is a task on the history page

Screenshots
Screen Shot 2020-10-16 at 8 51 43 PM

Testing (please complete the following information):

  • Device: iPhone 11 Simulator
  • iOS: 14.0
  • Xcode 12.0.1

Additional context
In viewWillAppear setupEmptyState but no check is occurring to ensure there are no tasks on this tab

status for tasks

Is your feature request related to a problem? Please describe.
Right now, when the tasks are completed, we either need to delete the task or it is still there without indication of it's status.

Describe the solution you'd like

  • For tasks that are due one of these two status is possible - overdue/completed (Users can decide they need to delete them or let them stay in memory as long as they wish)

  • For status for other tasks could be - wip/open(we can change this, i'm not sure about the naming for these categories)

bug: Hide DatePicker while not in use.

Describe the bug
The datePicker in TaskDetailsViewController is always visible regardless it is in use or not.

To Reproduce
Steps to reproduce the behavior:

  1. Go to TodoViewController
  2. Click on + button
  3. observe the DatePicker

Expected behavior
The datePicker should be hidden when the view loads. Once user taps on endDateTextField, the datepicker should be visible for the user to enter the date.

Screenshots

bug โŒ expected โœ…

Testing (please complete the following information):

  • Simulator: iPhone 11
  • iOS: 13.7
  • Xcode: 11.7

Additional context

  • use isHidden property of datePicker to hide/ show it.

Empty states for no tasks added after launch and no result found while searching task.

Description / Suggestion

  1. When ever we launch the application first time after installation we see a blank screen. Ideally there should be a text suggesting "No tasks added" or something descriptive rather than blank white screen.
  2. Also when launching the app for the first time, and no task is added yet, we see filter option in the navigation bar. Just a suggestion. It should only be displayed when any task is present. Else it should be hidden.
  3. While searching if search results are not found then also we should display "No search results found" or something descriptive rather than blank screen.

Solution

  1. A simple label which will be displayed in case no task is present in our core data.
  2. Ternary operator which will hide and show filter option based on tasks count.
  3. A simple label which will be displayed only in case no results are found.

Tasks history

Feature request

Describe the solution you'd like
A place to see completed tasks, a TabBar at the bottom with two tabs, Tasks and History.

Feat: Add tests target

Is your feature request related to a problem? Please describe.
It would be great and good practice to have unit tests

Describe the solution you'd like
Create a tests target to kick start adding tests when needed.

Additional context
Adding tests target can give us options to run tests on GitHub Actions CI whenever there is a PR raised

Remove xcuserdata from master

Is your feature request related to a problem? Please describe.
Need to remove Application/To-Do.xcodeproj/xcuserdata

Describe the solution you'd like
git rm -rf Application/To-Do.xcodeproj/xcuserdata

Describe alternatives you've considered
NA
Additional context
NA

Feat: Sorting Tasks.

Is your feature request related to a problem? Please describe.
As a user I would prefer to have sorting options for my task list. For example sort by due-Date or sort alphabetically.

Describe the solution you'd like
A barButtonItem for sort can be added to the navigationBar in TodoViewController.
Tapping on this button would bring up an actionSheet with different options to sort.

Additional context
Sample code here can be referred to create UIAlertController of type actionSheet

Add haptics.

Is your feature request related to a problem? Please describe.
As a user i would prefer some sort of haptic feedback upon any action I do in the app. for example a different haptic when I create a task, a different one for deleting a task, a haptic for alerts etc.

Describe the solution you'd like
UIFeedbackGenerator can be used to create haptics on these instances.

Describe alternatives you've considered
N/A

Additional context
know more about UIFeedbackGenerator here
refer this for all types of haptics that you can use.

Documentation: Error when cloning on Windows

Describe the bug
When trying to clone this repo on windows, I've came across an error

error: invalid path '.github/pull_request_template.md.'
fatal: unable to checkout working tree
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry with 'git restore --source=HEAD :/

To Reproduce

  1. Be on a Windows machine
  2. Fork the repo
  3. git clone %repo%

Expected behavior
The repository should be cloned

Solution
Obviously the issue lies on the .github/pull_request_template.md. file so if that file is removed, it should work fine. Otherwise, another possible alternative would be:

  1. git init ToDo-iOS && cd ToDo-iOS
  2. git config core.protectNTFS false
  3. git remote add %repository_url%
  4. git fetch
  5. git checkout origin/master

Button at List is not working on History tab

I think your app may have tried to show the title of the Task, subtitle of the task, and image attached to it when the user clicks the button next to the task title. But on the history tab tapping the button doesn't direct to the new View as it does on the Task tab. Could you check this?

To Reproduce

  1. Create a new task at Tasks Tab
  2. Mark the task as completed by swiping it left
  3. Go to History Tab and click the button next to the task title
  4. Clicking the button doesn't direct to the new View as it does on the Task tab

Tested on

  • Device: [iPhone 11 Pro]
  • iOS: [14.1]
  • Xcode [12.1]

Hide filter option from navigation bar item when no task is added

Description
When launching the app for the first time, and no task is added yet, we see filter option in the navigation bar. Just a suggestion. It should only be displayed when any task is present. Else it should be hidden.

Solution
Ternary operator which will hide and show filter option based on tasks count.

Task bar image missing

Describe the bug
No image for task in tab bar.

Expected behavior
An image for task should be there.

Testing (please complete the following information):

  • Device: iPhone7
  • iOS: 13.3
  • Xcode 11.3.1

Task Status

I created a task on the tasks tab and swiped the task left. But that task didn't mark as completed nor doesn't appear on the History tab. (The text on the History tab said If the user swipe left the task then it will appear on the History tab and marked as completed)

Testing

  • Device: [ iPhone 12 simulator]
  • iOS: [14.0]
  • Xcode [12.0]

Add empty view for no history.

Is your feature request related to a problem? Please describe.
we currently show EmptyView when no tasks are present and when search results are empty. we can also show it when history is empty (i.e no tasks have been marked as completed)

Describe the solution you'd like

  • add a case in EmptyViewType enum for history.
  • add appropriate heading, subheading and image of your choice.
  • set the empty view as tableview background in taskHistoryViewController ( when no tasks are present).

Describe alternatives you've considered
N/A

Additional context
you refer to to the implementation of emptyView in toDoViewController.

Feat: Add an onboarding screen.

Is your feature request related to a problem? Please describe.
It would be great if the app had an onboarding screen like most application made by apple have.

Describe the solution you'd like
The screen should contain features of the app and corresponding icons to the feature. Onboarding screen should only be visible the first time a user opens the app.

Additional context
userDefaults can be used to keep track of wether app is opened or not.
Refer HIG guidlines for more.

Priorities for different tasks

Is your feature request related to a problem? Please describe.
Tasks are stored and we don't have any indication for their priority. So cannot filter high priority tasks.

Describe the solution you'd like
High/Medium/Low priorities to be added for tasks. This need to be display to the right of the task name as a tag, just like the labels we see for different issues.

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.