Giter Club home page Giter Club logo

break's Introduction

[Archived]

This repository is archived. I started this repo when I was first learning mobile/flutter dev, and I've learned a lot since then. And well, there are way too many things to fix but a limited time.





Break

Break: Break Your Fitness Goals

Break is a health & fitness tracking app built with Dart (Flutter) and Firebase. From logging nutritions to working out with YouTube videos, I have been learning and adding many cool features over the months, and here are some quick snippets.


Table of contents



Screenshots

Android

Sign In & Preview Screen Routine Detail Screen Workout Miniplayer Speed Dial
sign in screen transition 1

iOS

Sign In & Preview Screen Routine Detail Screen Workout Miniplayer Speed Dial


Introduction

Why?

There are countless fitness apps available, yet I was never satisfied with just one app, and I always had to use multiple apps to log and track my physical activtivies—weightlifting and running—and nutrition consumption at the same time. For example, Yazio was very good for tracking nutritions consumptions, but tracking physical activities was never good there. Strong app was very good for tracking weight lifting exercises, but they didn't have the feautes to add nutritions consumptions. To achieve health & fitness goals such as dieting, both exercising AND eating are equally important, but no apps offered exceptionally good product for both.

That's why I started this project. The goal of this project is to create a all-in-one place for users to log and track their health & fitness. Users can log and track their body measurements, nutritions consumed, and workout data, and these data are transformed into customizable and easy-to-look dashboard, all in one app.

This project is a work-in-process. I am keeping learning and developing new features. Below is the breif roadmap:

Roadmap

Nutritions

  • Manaully add nutritions data
  • Add nutritions by scanning bar code
  • Automatically log nutritions data using credit card transactions data

Body Measurement

  • Manually add body measurements data
  • Automatically sync measurements data with Apple HealthKit and/or Google Fit

Exercise

  • Log weight lifting exercise data manually
  • Log other cardio workouts
  • Workout with YouTube Video


Architecture

For this application, I've (sorted of) implemented the MVVM architecture pattern to increase maintainability and testability.

Directory Structure

lib
│───models 
│   │───workout.dart
│   │───user.dart
│   │───routine.dart
│   │───nutrition.dart
│   │───measurement.dart
│   └───...
│───services
│   │───auth.dart
│   │───database.dart
│   │───firestore_service.dart
│   └───...
│───styles 
│   │───button_styles.dart
│   │───constants.dart
│   │───text_styles.dart
│   └───theme_colors.dart
│───utils
│   │───dummy_data.dart
│   └───formatter.dart
│───view
│   │───screens
│   │   │───animations
│   │   │───add_nutrition_screen.dart
│   │   │───add_workout_to_routine_screen.dart
│   │   │───...
│   │   │───library_tab.dart
│   │   │───preview_screen.dart
│   │   │───explore_tab.dart
│   │   └───...
│   └───widgets
│       │───...
│       │───builders
│       │   │───animated_list_view_builder.dart
│       │   │───custom_future_builder.dart
│       │   │───custom_list_view_builder.dart
│       │   └───custom_stream_builder.dart
│       │───buttons
│       │   │───appbar_back_button.dart
│       │   │───appbar_close_button.dart
│       │   │───keyboard_actions_done_button.dart
│       └───...
│───view_models
│   │───add_measurements_screen_model.dart
│   │───add_nutrition_screen_model.dart
│   │───add_workout_to_routine_screen_model.dart
│   └───...
└───main.dart   


Features

Workout Playlist



Libraries

I have used the following libraries to build this app:

break's People

Contributors

heeyunlee avatar dependabot[bot] avatar

Stargazers

 avatar

Watchers

 avatar

break's Issues

Change FAB to tab

change FAB to one of the bottom navigation tab button in order to create miniplayer

Use custom widgets for timer

Stop using libraries for timer widget and implement custom widgets. Libraries to stop using

  • circular_countdown_timer
  • percent_indicator
  • timer_count_down

Keyboard Action not showing

Keyboard Action widget from keyboard_actions library is hiding behind the keyboard

screen-20210727-222549.mp4

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.