A Flutter application to plan personal activities and routines that uses Supabase for the backend.

Last update: May 29, 2022

Flutter Planner

style: very good analysis License: MIT

Generated by the Very Good CLI πŸ€–

A Flutter application to plan personal activities and routines that uses Supabase for the backend.

Planner

Schedule


Features

  • Responsive ui, tested on android and windows.
  • Calendar and timeline view for daily activities.
  • Timetable for weekly routines.
  • Email authentication

Set up

Supabase

  1. Create a new project.

  2. Create a new table, named routines with the following rows (RLS enable).

    Name Type Extra Other
    id int8 Is identity -
    user_id uuid Is nullable Foreign key (table: users, column: id)
    name text - -
    day int2 - -
    start_time time - -
    end_time time - -
  3. Create a new table, named 'activities', with the following rows (RLS enable).

    Name Type Extra Other
    id int8 Is identity -
    user_id uuid Is nullable Foreign key (table: users, column: id)
    name text Is nullable -
    type int2 - Default value: 0
    date date - -
    start_time time - -
    end_time time - -
    description text Is nullable -
    links text Is nullable, define as array -
    routine_id int8 Is nullable Foreign key (table: routines, column: id)
  4. Create a new policy for both tables.

    • Allowed operation: ALL.
    • USING expression: auth.uid() = user_id.
    • WITH CHECK expression: (role() = 'authenticated'::text).
  5. In authentication settings, disable email confirmations.

Flutter

  1. Clone this repo.
  2. In the root directory, create a new file named '.env' with the following lines.
SUPABASE_URL=<YOUR_URL>
SUPABASE_ANON_KEY=<YOUR_KEY>
  1. Run the desired flavor (for the moment all are the same).
# Development
$ flutter run --flavor development --target lib/main_development.dart

# Staging
$ flutter run --flavor staging --target lib/main_staging.dart

# Production
$ flutter run --flavor production --target lib/main_production.dart

*Flutter Planner works on iOS, Android, Web, and Windows.


Dependencies


Future features

This application is been developed in my free time for personal use, some future features that will be added are

  • 100% test coverage. (See the progress here)
  • Settings page for custom theme and user configuration.
  • Projects or tasks page.

Contribution

If you have a suggestion or would to contribute feel free to contact me, fill an issue or make a pull request :).

GitHub

https://github.com/IvanHerreraCasas/flutter_planner
Comments
  • 1. Refactor: router

    Description

    Previously each page had its route defined separately, making it difficult to test. Now it has been replaced with a more declarative and safe way.

    • Created a router in a different class, this file contains all the routes.
    • The names of the routes were defined in an abstract class, and the go navigation was replaced with goNamed.

    Type of Change

    • [ ] ✨ New feature (non-breaking change which adds functionality)
    • [ ] πŸ› οΈ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [x] 🧹 Code refactor
    • [ ] βœ… Build configuration change
    • [ ] πŸ“ Documentation
    • [ ] πŸ—‘οΈ Chore
    Reviewed by IvanHerreraCasas at 2022-06-26 15:13
  • 2. Bug: list activities not updating

    Description

    Previously the stream method in supase_activities_api wasn't working due to this issue. As a temporary solution, the fetch method was being used in the planner bloc, but it couldn't be called from activity page which is in another route.

    In this PR, I'm creating an activitiesController which exposes a stream, to add the events directly in the api.

    The stream is used in subcriptionRequested, which is now restartable and replaces activitiesUpdated.

    Type of Change

    • [ ] ✨ New feature (non-breaking change which adds functionality)
    • [x] πŸ› οΈ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [x] 🧹 Code refactor
    • [ ] βœ… Build configuration change
    • [ ] πŸ“ Documentation
    • [x] πŸ—‘οΈ Chore
    Reviewed by IvanHerreraCasas at 2022-06-20 19:55
  • 3. Chore: update dependencies and readme

    Description

    A minor bug with selected routine not updating was fixed, the readme was updated with new gifs together with the dependencies.

    Dependencies updated:

    • go_router
    • supabase_flutter
    • dropdown_button2

    Type of Change

    • [ ] ✨ New feature (non-breaking change which adds functionality)
    • [x] πŸ› οΈ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [ ] 🧹 Code refactor
    • [ ] βœ… Build configuration change
    • [x] πŸ“ Documentation
    • [x] πŸ—‘οΈ Chore
    Reviewed by IvanHerreraCasas at 2022-06-22 15:49
  • 4. test: remove unused imports

    Description

    Type of Change

    • [ ] ✨ New feature (non-breaking change which adds functionality)
    • [ ] πŸ› οΈ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [ ] 🧹 Code refactor
    • [ ] βœ… Build configuration change
    • [ ] πŸ“ Documentation
    • [ ] πŸ—‘οΈ Chore
    Reviewed by IvanHerreraCasas at 2022-06-21 22:11
  • 5. Bug/pops dialog drawer error

    Description

    There was a bad use of pop using goRouter when activity page is a dialog or in the drawer of home causing errors. In this PR it was replaced with Navigator, and tests were updated/fixed using mockingay.

    Type of Change

    • [ ] ✨ New feature (non-breaking change which adds functionality)
    • [x] πŸ› οΈ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [ ] 🧹 Code refactor
    • [ ] βœ… Build configuration change
    • [ ] πŸ“ Documentation
    • [ ] πŸ—‘οΈ Chore
    Reviewed by IvanHerreraCasas at 2022-06-21 22:08
  • 6. ci: fix workflow syntax error

    Description

    Type of Change

    • [ ] ✨ New feature (non-breaking change which adds functionality)
    • [ ] πŸ› οΈ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [ ] 🧹 Code refactor
    • [x] βœ… Build configuration change
    • [ ] πŸ“ Documentation
    • [ ] πŸ—‘οΈ Chore
    Reviewed by IvanHerreraCasas at 2022-06-18 15:23
  • 7. ci: fix worflow syntax error

    Description

    Type of Change

    • [ ] ✨ New feature (non-breaking change which adds functionality)
    • [ ] πŸ› οΈ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [ ] 🧹 Code refactor
    • [x] βœ… Build configuration change
    • [ ] πŸ“ Documentation
    • [ ] πŸ—‘οΈ Chore
    Reviewed by IvanHerreraCasas at 2022-06-18 15:22
  • 8. ci: change workflow

    Description

    Change workflow:

    • Create dotenv file in the steps.
    • Upload code coverage to Codecov.

    Type of Change

    • [ ] ✨ New feature (non-breaking change which adds functionality)
    • [ ] πŸ› οΈ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [ ] 🧹 Code refactor
    • [x] βœ… Build configuration change
    • [ ] πŸ“ Documentation
    • [ ] πŸ—‘οΈ Chore
    Reviewed by IvanHerreraCasas at 2022-06-18 15:19
  • 9. test: 90% coverage

    Description

    Added widget and unit tests to archive 90% test coverage. Some files were refactored eg: decouple bloc provider from and its page. Some minor bug fixes.

    Type of Change

    • [ ] ✨ New feature (non-breaking change which adds functionality)
    • [ x ] πŸ› οΈ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [ x ] 🧹 Code refactor
    • [ ] βœ… Build configuration change
    • [ ] πŸ“ Documentation
    • [ x ] πŸ—‘οΈ Chore
    Reviewed by IvanHerreraCasas at 2022-06-17 21:20
  • 10. Add/readme

    Description

    Add readme.

    Type of Change

    • [ ] ✨ New feature (non-breaking change which adds functionality)
    • [ ] πŸ› οΈ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [ ] 🧹 Code refactor
    • [ ] βœ… Build configuration change
    • [x] πŸ“ Documentation
    • [ ] πŸ—‘οΈ Chore
    Reviewed by IvanHerreraCasas at 2022-05-12 20:18

Related

Personal-Expense - Personal expense application in Flutter
Personal-Expense - Personal expense application in Flutter

expenseapp Personal expense application in Flutter / Application de dΓ©pense en F

Feb 10, 2022
Be together, whenever. A simple way to text chat and plan things all in one place for flutter developers.
Be together, whenever. A simple way to text chat and plan things all in one place for flutter developers.

Flutterdevconnect Be together, whenever. A simple way to text chat and plan things all in one place for flutter developers. Android IOS Web PWA Androi

Apr 20, 2022
Food-app-flutter - A simple food ordering application with an admin panel coded with flutter and uses firebase as a backend
Food-app-flutter - A simple food ordering application with an admin panel coded with flutter and uses firebase as a backend

shop_ui A new Flutter project. Getting Started This project is a starting point

Apr 23, 2022
App to control your health activities like calorie, water, medicine consumption, sleeping and weight control.
App to control your health activities like calorie, water, medicine consumption, sleeping and weight control.

Handy Configuration for yourself This project contains google-services.json file of my own. You can connect your own firebase project using the follow

May 7, 2022
🎯 A powerful multiplatform application with Flutter and Supabase for the Komentory project.

?? Multiplatform application for Komentory project A powerful multiplatform application with Flutter and Supabase for the Komentory project. Currently

Mar 1, 2022
School Project to complete a course,uses a python backend and a flutter frontend

hit_400_app Getting Started This project is a starting point for a Flutter application. #Run flutter packages get #Run the python main.py after instal

Dec 28, 2021
Addons to supabase dart (and Flutter), to make development easier.

supabase_addons Make great apps with a great backend! Supabase is an open source Firebase alternative. It has support for auth, database and storage u

Feb 11, 2022
Flutter integration for Supabase. This package makes it simple for developers to build secure and scalable products.
Flutter integration for Supabase. This package makes it simple for developers to build secure and scalable products.

supabase_flutter Flutter package for Supabase. What is Supabase Supabase is an open source Firebase alternative. We are a service to: listen to databa

Jun 28, 2022
Dart client library to interact with Supabase Storage

storage-dart Dart client library to interact with Supabase Storage. Contributing Fork the repo on GitHub Clone the project to your own machine Commit

Jun 14, 2022
A Dart client for Supabase

supabase-dart A Dart client for Supabase. What is Supabase Supabase is an open source Firebase alternative. We are a service to: listen to database ch

Jun 26, 2022
This is an auction application just like eBay. Using firebase as the backend for signup & sign-in functionality. In addition to that, it's a two pages application with user bid in input and count down view.
This is an auction application just like eBay. Using firebase as the backend for signup & sign-in functionality.  In addition to that, it's a two pages application with user bid in input and count down view.

Nilam This is an auction application just like eBay. Using firebase as the backend for signup & sign-in functionality. In addition to that, it's a two

May 23, 2022
A fully functional Movies Application built with Flutter. The application built with null safety and clean architecture, also uses OMDB API for fetching movies in the search item
A fully functional Movies Application built with Flutter. The application built with null safety and clean architecture, also uses OMDB API for fetching movies in the search item

Cinema DB Project Details This project uses null safety feature Project uses clean code architecture (Uncle Bob's Architecture) Project can run on bot

Dec 18, 2021
This is Personal Expenses Planner. You can see and made any recipes from this application. I developed this project using flutter.

meals A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this is

Sep 4, 2021
Music player application for android. It's uses MVVM architecture and Provider & ValueNotifier state management.
Music player application for android. It's uses MVVM architecture and Provider & ValueNotifier state management.

music-player-flutter Flutter music player application which is my personal project published to play store. Project structures are as following,

Jun 23, 2022
This is an application that uses the Flutter framework, SQFLite as a database to record blood pressure, blood sugar, BMI, or create medication reminders in multi mobile platforms You can run this project on iOS, Android
This is an application that uses the Flutter framework, SQFLite as a database to record  blood pressure, blood sugar, BMI, or create medication reminders in multi mobile platforms You can run this project on iOS, Android

This is an application that uses the Flutter framework, SQFLite as a database to record blood pressure, blood sugar, BMI, or create medication reminders in multi mobile platforms You can run this project on iOS, Android

Jun 28, 2022
CurrencyConverter - Flutter based application that uses web-scrapping to show currency of selected countries.
CurrencyConverter - Flutter based application that uses web-scrapping to show currency of selected countries.

CurrencyConverter - Flutter based application that uses web-scrapping to show currency of selected countries.

Jun 17, 2022
Screener: a sample application Uses MVVM pattern

screener This is a sample application. Uses MVVM pattern Tries to encourage the use of boundaries (by using the concept of packages) Getting Started ?

Dec 27, 2021
WooCommerce App template that uses Flutter. Integrated to work with WooCommerce stores, connect and create an IOS and Android app from Flutter for IOS and Android
WooCommerce App template that uses Flutter. Integrated to work with WooCommerce stores, connect and create an IOS and Android app from Flutter for IOS and Android

WooCommerce App: Label StoreMax Label StoreMax - v5.3.1 Official WooSignal WooCommerce App About Label StoreMax Label StoreMax is an App Template for

Jun 28, 2022