Giter VIP home page Giter VIP logo

splitfit's Introduction

splitfit's People

Contributors

noahjutz 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

Watchers

 avatar  avatar

splitfit's Issues

Delete confirmation for sets

I suggest adding a message box asks to confirm set deletion. Currently, the app doesn't ask the user to confirm the deletion process.

Screen-20210211-192609

Exercise note

I suggest adding a field for notes in the exercise's activity because in some cases it's vital to add a note explains important info about the exercise.

For example deps needs some explanation.
image

Manage DataStore preferences from ViewModels

Currently, DataStore preferences are often handled withing compose UI components rather than their viewModels. In order to improve code quality, move this responsibility to ViewModels.

Package name issues

Current package names are:

  • com.noahjutz.splitfit.fdroid for F-Droid build flavor
  • com.noahjutz.splitfit.googleplay for Google Play build flavor
  • com.noahjutz.splitfit is currently published on google play.

In order to avoid confusiong among users that use both stores, remove the suffix (.fdroid/.googleplay).

Removing .googleplay should be easy.

Removing .fdroid might require some changes in fdroiddata because com.noahjutz.splitfit.fdroid is already published on F-Droid.

Replacing this will most likely be version name suffixes.

Handle Exercise not logging any values

Now that CreateExerciseViewModel has been revamped, the previous workaround, disallowing users from unchecking a checkbox if all others are unchecked, is removed.

Exercises multi-lines

I suggest enabling muli-lines for exercise's title (I forced to modify sqlite database manually to be able to add multi-lines)

_20210211_185737
_20210211_185807

Allow for code contribution

Add the following:

  • CONTRIBUTING.md
  • contributing info to README
  • Code of conduct
  • Issue templates
  • pull request template

Better dependency names and structure

In dependencies.kt, use better naming to reflect what the dependencies actually are. Also, find a better way to structure the objects grouping together dependencies. Options include:

  • Grouping by service (compose, room, etc.)
    • Include version in this group?
  • Grouping by dependency type (implementation, kapt, testImplementation, etc.)

Don't request permissions

App requests the following permissions for no reason:

  • read phone status and identity
  • modify or delete the contents of your shared storage
  • read the contents of your shared storage

Reason: Unknown

Database path

Hi,

I'm working on filling this workout plan, but I couldn't figure out where Splitfit stores its files.

May you please tell me where can I find the config files to be able to share my workout plan?

PS. I've a ton of the suggestions, so I'll post them one by one. Furthermore, I'll post them depending on my personal experience because there are critical fixings/feature requests. I wish to find some time to response to them.
Unfortunately I haven't any knowledge in Kotlin, so PR is impossible to me.

PickExerciseVM exercises StateFlow values aren't updated

This is because observers are only notified when the value is replaced, not when its properties change.

val m = MutableStateFlow(Routine("test initial"))
m.value.name = "test updated" // This line does not cause an update
m.value = m.value.copy(name = "test updated") // This line does.

Exercises filter

I suggest adding a filter for exercises activity (it's very hard to choose an exercise during creating/modifying routines)

_20210211_185529

time stamp on backup

The default name of the backup is splitfit-backup.sqlite3
I suggest adding a timestamp for it (something like splitfit-backup-<yyyy-MM-dd_HH-mm-ss.SSSSSS>.sqlite3)

DateTimeFormatter
    .ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS")
    .withZone(ZoneOffset.UTC)
    .format(Instant.now())

Don't restart after export/import database

The app currently uses ProcessPhoenix to restart after exporting/importing the database. Not only is this bad UX, it doesn't work on API 30+ currently.

Restarting the app is a workaround. Instead of reopening the database after closing it, the entire app is restarted. It was easier to implement, but it should be possible to do it the right way.

First, double check if closing the database is necessary.

Add number formatting util for set values

Current implementation

Call

Formatting

onCommit(value) {
val v = when {
value.isEmpty() -> value
value.toDouble() == floor(value.toDouble()) -> value.toDouble().toInt().toString()
else -> value
}
if (tfValue.text != value) tfValue = TextFieldValue(v, TextRange(value.length))
}

Desired implementation

Call

var reps = set.reps.formatString()

Formatting

fun Double?.formatString(): String {
  // Handle null
  if (this == null) return ""
  // Handle x.0
  if (this == floor(this)) return this.toInt().toString()
  // Anything else
  return this.toString()
}

Animated card elevation is initially not default

Cards such as SetGroupCard rows, Routine and Exercise items in RoutinesScreen/ExercisesScreen are initially elevated, which looks weird when scrolling through a LazyColumn or opening a new screen.

Adding programs (routines groups)

In many cases the user needs to use more than one program (a group of routines), so I suggest adding programs in Splitfit.

For example:
I use Buff Dudes 12 Week Home Program & 12 Cardio Program workouts. The resultant list as you can see below impractical & lame

_20210214_120256

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.