Inspiration

Grocery shopping can be difficult to manage especially with everybody's busy schedule. For example, a weekly Sam’s Club grocery run is enough to sustain hungry college students, however, everybody isn't able to be there all at once. Grocery shopping becomes harder to keep track of what everyone wants. We wanted a simple grocery list that can be shared amongst each other to easily see what we need to get.

What it does

Group2Do is a shared list application that allows for multiple users to be added into groups. Users in the group have access to the lists within the group. These lists can be used for various purposes such as a grocery list or keeping track of chores to do. Users are able to add a card which contains a name and a short note/description for the card.

How we built it

Group2Do was built using Dart as its language and Flutter as the app’s framework for both frontend and backend. Firebase was used for user management and authentication. We used Flutter for its versatility and multi-platform development possibilities. Dart was the language used due to it being the only language Flutter accepts. Firebase was used as our team already had some familiarity with the database and it provides a lot of tools related to app development.

Within Firebase we used 2 core services. Firestore for our database, and Firebase Authentication for our user authentication system. We store basic user data, details of our groups, lists, and items in our database. We constantly fetch and create new data from our app and this database stores everything. Firebase Authentication allows users to create an account and see the groups, lists, and items available to them. In tandem, they serve as the backend of our app.

Challenges we ran into

Beginning of the hackathon, we decided to try to build an app using a unique language, Dart, foreign to most team members. The biggest obstacle was learning how to use Dart at its base, but over time, we became comfortable with the language. For the challenges we came across building Group2Do, the login screen was found to be difficult. For each user we had to handle a way to store the groups, lists, and items that the user had access to. Implementing in-between screens to load login data while also including email verification were some of the most difficult elements in incorporating the login system into our application. A lot of data needs to be passed back and forth between screens and keeping track of all of that is difficult. Another area of difficulty was the creation of a navigation bar and corresponding buttons. Connecting the pages in a clear and intuitive way to the end user was an arduous task.

Accomplishments that we're proud of

Some of the accomplishments that we are proud of are:

  • User Login Screen
  • Account Creation and Authentication
  • Multi-Platform Support
  • Ability to delete and create Groups and Lists that are synched through all users.
  • Joining a Pre-existing Group through an assigned code in Firebase

What we learned

As most of us were quite new to Flutter and Dart, the largest hurdle and the area we learned the most in was simply using the language and how it is implemented in application development. For the frontend, navigating between pages was found to be difficult. To implement an efficient navigation going from one screen to another, we put the screens in an array, then based on the icon clicked, it generated a number corresponding to the icon clicked. We then used that number to index the screen. For the backend, sending and receiving information was something we were not very comfortable with, but over the course of this project we learned how to effectively communicate with the database. Additionally, due to Dart covering both frontend and backend, communication was very important. We learned to alert each other of when we pushed and what files we were working on so that nobody would be working on the same file as another.

What's next for Group 2 Do

  • Light/Dark Mode Toggle
  • Notifications when Lists are added to the Group
  • Notifications when Items are added to a List
  • Persistent Navigation Bar
  • Add other features that can make it easier for groups to delegate tasks

Built With

Share this project:

Updates