Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Develop iOS version of Loop Habit Tracker #487

Open
13 of 61 tasks
iSoron opened this issue Mar 31, 2019 · 22 comments
Open
13 of 61 tasks

Develop iOS version of Loop Habit Tracker #487

iSoron opened this issue Mar 31, 2019 · 22 comments
Labels
new-feature Completely new app functionality
Milestone

Comments

@iSoron
Copy link
Owner

iSoron commented Mar 31, 2019

Overview

This issue will track the progress of migrating Loop Habit Tracker to iOS. As discussed in issue #486, this is Phase I of our larger effort to make the application multiplatform. The shared core will be written in Kotlin, while the iOS-specific code will be written in Swift.

The dev branch already contains a working prototype, with some basic features implemented. Below are a number of smaller subtasks that still need to be done. The list will be updated as we move along. As always, pull requests are very welcome. For better coordination, if you are planning to work on something, please let us know in advance. If you have any problems running the existing code, or if you have any questions, suggestions or concerns about the implementation or design of any of these features, please feel free to leave a comment.

Subtasks

1. Build read-only version of the application. The interface will look and behave like the final version of the app, but the user cannot modify the database in any way.

  • Migrate model classes to pure Kotlin:
    • Habit
    • Checkmarks
    • Streaks
    • Scores
  • Implement main screen:
    • Display boolean habits
    • Display numerical habits
    • Display correct habit score
    • Allow user to hide archived habits
    • Allow user to hide completed habits
    • Allow user to automatically sort habits by name, color or score
    • Allow user to scroll by dragging the header
    • Dynamically select number of columns to display
    • Only display "show archived" if there are archived habits
  • Implement detail screen:
    • Header
    • Overview
    • Line chart
    • Bar chart
    • Calendar chart
      • Small preview in the detail screen
      • Larger version, for modifying habit history
    • Best-streaks chart
    • Frequency chart
    • Make charts scrollable
  • Implement about screen
  • Implement forms:
    • Create/edit Boolean habits
    • Create/edit numerical habits
  • Implement onboarding screen
  • Add links to Help & FAQ
  • Internationalization:
    • Convert Android strings to a multi-platform format
    • Automatically switch languages based on phone settings
    • Add support for RTL languages
  • Implement theme switching and night mode

2. Allow user to make changes to the database.

  • Main screen:
    • Allow user to toggle checkmarks
    • Allow user to input values (numerical habits)
    • Allow user to manually rearrange habits
    • Allow user to delete habits
    • Allow user to archive habits
  • Make forms functional:
    • Create new boolean habit
    • Create new numerical habit
    • Edit boolean habit
    • Edit numerical habit
  • Detail screen:
    • Allow user to change habit history

3. Additional features and performance

  • Show reminders
  • Import and export full backup
  • Export data as CSV
  • Import data from other popular iOS habit trackers:
    • Identify which ones are popular and allow db export
    • Implement parsers
  • Generate bug reports
  • Improve performance
    • Profile and reduce startup time
    • Verify that no I/O is performed on the main queue
    • Verify that performance is acceptable with very large databases
@iSoron iSoron added new-feature Completely new app functionality help-wanted labels Mar 31, 2019
@iSoron iSoron pinned this issue Apr 3, 2019
@StuartMesham
Copy link

What version of Swift do you compile with?
Are there any dependencies for this project?

I am trying to build the iOS version but I am getting the error "undeclared type: Backend".

@iSoron
Copy link
Owner Author

iSoron commented Apr 11, 2019

@StuartMesham The iOS build is temporarily broken. If you roll back to commit 1abc041, it should work. I will post an update when this is fixed.

git clone https://github.com/iSoron/uhabits.git
cd uhabits
git checkout 1abc041d8 -b ios

@iSoron
Copy link
Owner Author

iSoron commented Apr 13, 2019

The previous issue is now fixed. To run the iOS app, just open uhabits/ios/uhabits.xcodeproj in Xcode and click the Run button. The shared code gets compiled automatically, so no extra steps are needed. If anyone is having trouble building the project, just let me know.

@luisnabais
Copy link

Why are you not using TestFlight? We could be more beta testing this... Thanks a lot!

@iSoron
Copy link
Owner Author

iSoron commented Apr 13, 2019

@luisnabais I will post a TestFlight link when we reach beta. Currently, the app is still unusable.

@iSoron
Copy link
Owner Author

iSoron commented Nov 6, 2019

@luisnabais Please do not advertise non-open source software in our bug tracker.

@luisnabais
Copy link

@luisnabais Please do not advertise non-open source software in our bug tracker.

You misunderstood me. I'm not advertising anything. I was just telling you that I think it was a total rip-off of Loop Habit Tracker, maybe not even authorized.

@iSoron
Copy link
Owner Author

iSoron commented Nov 6, 2019

@luisnabais Thanks! I removed your message because even leaving the name of their app here helps to promote them. These clones are not endorsed by or affiliated with our project in any way. In particular, I cannot guarantee that they respect the privacy of your data in the same way that Loop does.

@tapchik
Copy link

tapchik commented Dec 15, 2019

@iSoron, I don’t know if it’s right place for comments like mine, but I am so in love with your app that it prevents me from buying an iPhone! I made a research and nothing seems to be anything close to Loop on iOS.

I wish you good luck with creating iOS version of the app and can’t wait for a release!

@kashura
Copy link

kashura commented Feb 11, 2020

The previous issue is now fixed. To run the iOS app, just open uhabits/ios/uhabits.xcodeproj in Xcode and click the Run button. The shared code gets compiled automatically, so no extra steps are needed. If anyone is having trouble building the project, just let me know.

error: Build input file cannot be found: '/Users/valera/Library/Developer/Xcode/DerivedData/uhabits-hhrqwstlmqlbkgcqbnajyhvvlelr/Build/Intermediates.noindex/SwiftMigration/uhabits/Products/Debug-iphonesimulator/uhabits.app/PlugIns/uhabitsTests.xctest/uhabitsTests' (in target 'uhabitsTests' from project 'uhabits')

BUILD FAILED in 0s Command PhaseScriptExecution failed with a nonzero exit code

Build fails for me :-/

@Jeehut

This comment has been minimized.

@iSoron
Copy link
Owner Author

iSoron commented Jul 25, 2020

Folks, this is an issue to discuss the official iOS version of Loop Habit Tracker. If you are interested in developing your own habit tracker for iOS, that's fine, but please move the discussion to your own issue tracker.

@Jeehut Sorry, I cannot provide a timeline for this.

@guthipp

This comment has been minimized.

@Jeehut

This comment has been minimized.

@guthipp

This comment has been minimized.

@iSoron iSoron unpinned this issue Dec 27, 2020
@xplosionmind

This comment has been minimized.

@iSoron iSoron added this to the Loop 3.0 milestone Apr 18, 2021
@udaychadha
Copy link

Hello! I just moved over to ios and this is the app that I miss the most. I would love to contribute to the ios development in any way but I have never done anything in ios. If you can guide me to some simple open subtasks that I could take on, it would be great. :)

@aint

This comment was marked as off-topic.

@singam-sanjay
Copy link

The previous issue is now fixed. To run the iOS app, just open uhabits/ios/uhabits.xcodeproj in Xcode and click the Run button. The shared code gets compiled automatically, so no extra steps are needed. If anyone is having trouble building the project, just let me know.

I tried this on macOS 12.6 for iPhone 14 Pro. I keep getting the error "Command PhaseScriptExecution failed with a nonzero exit code". A quick google search revealed that the error could have been caused by a plethora of reasons, many of which didn't apply to my case. Right-Click > Open Build Log doesn't help either.

How do I proceed?

@madbhandari

This comment was marked as off-topic.

@luisnabais

This comment was marked as off-topic.

@iSoron
Copy link
Owner Author

iSoron commented Oct 8, 2022

@luisnabais This issue is for technical discussions on the iOS implementation. Feel free to post (open-source) iOS app recommendation in the discussions section. Recommendations to non-open-source apps will be removed.

Repository owner locked as off-topic and limited conversation to collaborators Oct 8, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
new-feature Completely new app functionality
Projects
None yet
Development

No branches or pull requests