Code Monkey home page Code Monkey logo

dunnit's Introduction

Dunnit!

Yeah, another iOS to-do list app.

I created this as a learning exercise whilst getting to grips with Test-Driven Development (TDD) with Swift in XCode. I wanted to create a simple app from the outside in, starting with feature tests then creating unit tests as and when required.

Features

Current features:

  • Add to-do items
  • Delete to-do items
  • Toggle items completion status
  • Reminder alerts
  • Persisting of data (saving to a local/remote database)

Features to come:

  • Multiple lists of todo items (work, home, school, etc)

Enhancements to come:

  • UI will scale to work on all devices (currently only scalesorks on iPhone 8 Plus until I set the constraints/pinning)

Issues & Bugs

Issues are being tracked on GitHub, over here.

Minimum Viable Product (MVP)

For the MVP of this app, it will have the following features:

  • Add to-do items
  • Delete to-do items
  • Toggle items completion status

2/5/19: Data Persistence

I've plumbed-in Core Data to store the data locally now, so todo items will persist over app closure and phone restarts.

19/5/19: Add NavigationController, tests updated

mvp screenshot

27/4/19: MVP Reached!

mvp screenshot mvp screenshot

At this point, all items are kept in memory and not persisted. This is coming in a later version of this app.

Approach

I've used TDD to write the code. I've used to MVC design pattern with an idea to possibly move this over to MVVM once I get my head around it.

I wanted to dive-in to getting to know as many features of the iOS SDK, and so far I've managed to encorporate the following into this project:

Building the app

  • Core Data
  • UserNofications (UNUserNotificationCenter)

Testing the app

  • XCTest
  • iOS simulator
  • an actual iPhone

Issues Faced

  • Testing for the UITableCell's accessory (checkmark) has proven impossible upto this point

Getting Started with this Code

  1. Clone this repo: git clone https://github.com/acodeguy/Dunnit.git
  2. Open it in Xcode
  3. Run the tests: Cmd+U
  4. Run the project in the simulator: Cmd+R

Tests

This project has both UI and unit tests, found in the usual test folders. I've written this using TDD to drive development of only the absolutely essential code to make it work.

Installation/Dependencies

At the moment, this project has no third-party depdencies. This may change if I decide to really pimp it out with some Cocoapods for networking, storage, etc.

License

Use it, abuse it. But please don't sell it.

dunnit's People

Contributors

acodeguy avatar

Stargazers

 avatar

Watchers

 avatar

dunnit's Issues

ToDo's alert remains active after its deletion

After setting an alert for a todo, then deleting the todo, the alert still remains pending and shows at the time specified.

Steps to recreate:

  1. Click "New Item"
  2. Fill in all fields, setting alert time to 1min in future toggle the Alert? to enabled
  3. Save
  4. Swipe to delete todo from main list
  5. Notification still shows on lock screen and in Notification Center

Cannot cancel new todo creation

When creating a new todo item there is currently no button to cancel and bin anything entered.

Steps to re-create:

  1. Open app
  2. Click "New Item"
  3. No cancel button present to go back

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.