Code Monkey home page Code Monkey logo

fomo's Introduction

Fomo

Atlanta Arts Initiative App
JIA - 9340
Release Notes
Updated: April 20th, 2020

Release Notes

FOMO v1.0

April 20th, 2020

New Software Features

  • Added a Welcome page to greet users and prompt them to login or register a brand new account
  • Added Registration page where users can create a brand new account
  • Added Login page where users can log into an existing account
  • Added a Forgot Password button so that users who forget their password may recover their account
  • Added Discover page to allow users to scroll through and explore events by category previews
  • Added View All Events page to allow users to view all events in a given category
  • Added Event Clicked page, allowing users to tap events and see all details of the event such as date, time, genre and location
  • Added ‘Interested’ and ‘Going’ buttons to the Event Clicked page so that users can indicate their status on any given event
  • Added Ticket link to Event Clicked page so that users can be directed a page where they can buy tickets
  • Added Directions link to Event Clicked Page so that user can be directed to Google maps for directions to the event’s venue
  • Added Search page to allow users to search by keyword for specific artists or events
  • Added Genre buttons to the search page to allow users to do a quick-search for events by genre
  • Added My Events page so that users can store and view events they are interested in or going to
  • Added ‘Interested’ and ‘Going’ categories in the My Events page so that users can sort their saved events by category
  • Added a Profile Page for the user to view and manage their personal information
  • Added a display of the user’s name, username, and profile picture
  • Added sliders for account settings, such as Notifications and Location Services
  • Added a link to an Account page to the Profile page where users can go to change their name and username associated with their account
  • Added a link to an About page to the Profile page, where users will go to view relevant app information
  • Added a Sign Out button to the Profile page, bringing users back to the Welcome page

Bug Fixes

  • Fixed a bug creating overflow on input fields in Login and Registration pages
  • Fixed a bug creating renderflex errors on the Event Clicked and View All Events pages
  • Improved load time of genre images on the search page
  • Fixed a bug in which date/time fields were not appearing properly on event cards on the discover and view all pages
  • Fixed a bug in which images were not scaling properly to event cards
  • Fixed a bug in which images were not fitting properly to the top of the event clicked page
  • Fixed a bug that caused erroneous loading of events at the bottom of the view all page
  • Fixed a bug in which removing events from interested and going in Firebase resulted in data corruption

Known Bugs or Remaining Implementations

  • Ability to change profile picture is disabled, some edge cases can cause app crashes
  • Backend functionality for Notifications or Location Services sliders in settings has not yet been implemented

Install Guide

Pre-Requisites

You should have the following installed and configured before proceeding, see provided links for more information:

Dependent Libraries

Install the following by running flutter pub get in the project directory:

  • provider
  • rxdart
  • firebase core
  • cloud firestore
  • algolia
  • firebase auth
  • carousel slider
  • cupertino icons
  • firebase storage
  • image cropper
  • image picker
  • url launcher

Download

Clone https://github.com/mjbernet3/fomo.git

Build Instructions

Open an emulator using Android Studio or XCode or through the command line using the following command:
emulator -avd avd_name [ {-option [value]} …].
To view a list of AVD names, enter the following command:
emulator -list-avds

For more information on opening the emulator through Android Studio or XCode visit the following links:
Android Studio (https://developer.android.com/studio/run/emulator)
XCode (https://developer.apple.com/library/archive/documentation/IDEs/Conceptual/iOS_Simulator_Guide/GettingStartedwithiOSSimulator/GettingStartedwithiOSSimulator.html)

Download the Google services configuration file from firebase.

Then open the terminal window and navigate to the repository and run the following command:
flutter run

Installation

Clone the repository using the provided github link. After building no further installation is required.

Run Instructions

Use the emulator to interact with the application.

Most clean clones of the app require fetching flutter and dart dependencies. Run:
flutter pub get

Troubleshooting

If your flutter install becomes corrupted, run the following commands in your flutter install directory:
git clean -xfd git stash save --keep-index
git stash drop git pull
flutter doctor

If running ‘flutter run’ returns “command: flutter not found”:
Ensure that your path is correctly configured.
For more information, visit the following links:
For Mac: https://flutter.dev/docs/get-started/install/macos
For Windows: https://flutter.dev/docs/get-started/install/windows
For Linux: https://flutter.dev/docs/get-started/install/linux

If your pub dependencies become corrupted, run the following command:
pub cache repair

If hot reload is not working:
Set your environment variable NO_PROXY=127.0.0.1

If missing flutter dependencies, run the following command:
flutter doctor

fomo's People

Contributors

mjbernet3 avatar echadwick6 avatar paulgibert avatar aviva-ashley avatar jackdimarco avatar pgibert3 avatar

Stargazers

 avatar  avatar Tim Kortsmit avatar

Watchers

Tim Kortsmit avatar  avatar  avatar  avatar

Forkers

jackdimarco

fomo's Issues

Registration Page

What/Why?

As a user, I want to register for the app, so that I may have my own profile to save events/add friends/etc.

Tasks

  • Create registration UI

Notification/Location Switch Backend

What/Why?

As a developer, I want to implement the notification and toggle switches, so that they are useful.

Tasks

  • Add functions in User Service to change the notifications and location services
  • make each toggle stateful without making the whole page stateful

Database

What/Why?

As a developer, I want to structure the database, so that data is stored efficiently and easily queried by the application.

Tasks

  • Plan data storage/tables
  • Create database and connect to frontend
  • Set up database with security rules (lock database)
  • Populate database with test data

Create Standard Styling

What/Why?

As a developer, I want a standard styling class, so that everything in the app may be similar.

Tasks

  • Create styling class

My Events UI

What/Why?

As a user I want to have a "my events" page so that I can see the events I am interested in or going to.

Tasks

  • Create Saved Events page UI

Event Card for Discover Page

What/Why?

As a user, I want to view an event card on the discover page, so that I can quickly see important information about an event.

Tasks

  • Create custom event card widget

Plan Data Storage/Tables

What/Why?

As a developer, I want to plan the storage of data, so that I ensure data is stored efficiently and storage does not have to be frequently updated later.

Tasks

  • Research popular event APIs to gain insight on values to store
  • Identify database collections
  • Determine document structure for each collection

Account Page UI

What/Why?

As a user, I want an account page, so that I may view and change my account information.

Tasks

  • Enhance UI of Account Page UI after skeleton is created

Data passage to event clicked and view all pages

What/Why?

As a user I want to view event data so that I can determine if I am interested in the event.

Tasks

  • Pass data to these pages when routing
  • Refactor event clicked page to use real data
  • Refactor view all page to use real data

Design App Architecture

What/Why?

As a developer, I want to have a well-designed app architecture, so that the app is scalable and maintainable.

Tasks

  • Research architecture patterns
  • Create app architecture

Create collections and security rules

What/Why?

As a developer I want to create efficient and secure collections so that data is managed effectively.

Tasks

  • Create userdata collection
  • Create event collection
  • Add security rules to protect database

Authentication

What/Why?

As a user, I want to register and login in to the application, so that I am able to securely access its features.

Tasks

  • Format login page
  • Format registration page
  • Forgot password
  • Remember me
  • Stretch: Login with 3rd party

Login/Registration Backend

What/Why?

As a user, I want to register and login, so that I can use the application.

Tasks

  • Log in user with email and password
  • Register user with email and password

Create and Format Discover Page

What/Why?

NOTE: Custom widgets for page should be done before this is completed

As a user, I want to have a discover page, so that I can browse popular, upcoming, and other categories to find events I might be interested in.

Tasks

  • Format Discover Page

Navigation Bar

What/Why?

As a user, I want to have a navigation bar, so that I can easily transition between the main pages of the application.

Tasks

  • Create navigation bar with routes to main pages

Featured Category for Discover Page

What/Why?

As a stakeholder, I want to incorporate featured events, so that I can draw users toward specific events.

Tasks

  • Create custom featured category widget

Add data to profile page

What/Why?

As a user I want to view my profile so that I can see my personal information and friends.

Tasks

  • Make user data available to application.

Search for events

What/Why?

As a user I want to search for events so that I can get more information about them.

Tasks

  • Connect app with algolia index
  • Create search UI
  • Stream results from algolia
  • Filter by genre

Add data to discover

What/Why?

As a user I want to view categorized events so that I can find events I may be interested in.

Tasks

IMPORTANT: Make sure discover bloc is disposed when user logs out or closes the application so no memory leaks

  • Update event service as needed to get events
  • Create discover bloc to stream events into discover page
  • Refactor discover page to use real data

Name Overflow

What/Why?

As a developer, I want to scale the text on the profile screen, so that there doesn't result an overflow error.

Tasks

  • Fix issue where too long of name/usernname results in pixel overflow on profile screen

Sync algolia with firestore

What/Why?

As a developer I want to sync algolia to firestore so that new data added to firestore is automatically added to algolia.

Tasks

  • Create cloud functions application
  • Add algolia cloud functions to add, update, and delete events from event index

Registration Validation

What/Why?

As a user I want to have validation so that I know how to properly format inputted values.

Tasks

  • Refactor registration to work with bloc pattern
  • Add validation to registration fields

Log In Automatically Feature

What/Why?

As a user, I want to be able to remember or not remember my credentials, so that I may remain logged in our log out as desired.

Tasks

  • Implement backend for a feature that allows a user to remember their credentials

Store other user information

What/Why?

As a user I want my information stored so that I do not have to enter it each time I use the application.

Tasks

  • Create user collection for extra information and tie it to existing firebase user
  • Add other registration fields back to register page

Profile Page UI

What/Why?

As a user I want to have a profile page so that I can customize my account and manage my settings.

Tasks

  • Finalize figma design
  • Create profile page UI

Account Page Skeleton

What/Why?

As a developer, I want an account skeleton, so that I may have a page to enhance later that completes all functions first.

Tasks

  • Create skeleton
  • Allow changes to user collection in user_service.dart

My Events

What/Why?

As a user, I want to save events and view them, so that I can focus on and manage the events I am most interested in.

Tasks

  • Save an event
  • Create Date Card
  • Format My Events page, splitting into "interested" and "going"

View All

What/Why?

As a user I want to be able to view a full list of events so that I can see all the events for a particular category I am interested in.

Tasks

  • Create View all UI

User Profile

What/Why?

As a user, I want to view/edit my personal information, so that I may personalize the application.

Tasks

  • Format profile page
  • Change account information
  • Location toggling
  • About section
  • Sign Out

Event Category for Discover Page

What/Why?

As a user, I want to browse different event categories, so that I can focus on events that fit a certain criteria.

Tasks

  • Create custom event category widget

Populate database with fake data

What/Why?

As a developer I want to have test data in the database so that I have data to use while working on application.

Tasks

Note: Either are fine, but first is what I have seen in my experience

  • Implement factories that create sample data **OR
  • Create script to pull in API data to use as test data

Discover

What/Why?

As a user, I want to view categorized events, so that I can discover new events that I might be interested in.

Tasks

  • Create event card
  • Create custom category with list view widget
  • Layout discover page
  • Implement featured carousel scrolling

Search

What/Why?

As a user, I want to search for an event, so that I can find out additional information about that event.

Tasks

  • Create genre card
  • Format search page
  • Sync Algolia with Firestore and configure
  • Auto-completion
  • Auto-correction
  • Filtering

Login Page

What/Why?

As a user, I want to login to the app with my valid credentials, so that I may access my profile.

Tasks

  • Create login UI

Profile Picture

What/Why?

As a user, I want to change my profile picture, so that I may personalize my profile.

Tasks

  • Allow user to access gallery and select a photo
  • Choose selected photo to become new profile picutre

Event Cloud Functions

What/Why?

As a developer I want to filter events on the backend periodically so that I do not have to filter the data within the application.

Tasks

  • Demonstrate that this is a possibility and see pricing options

Forgot Password

What/Why?

As a user I want to have a "forgot password" option so that I can reset my password if I forget it.

Tasks

  • Add forgot password to login page
  • Use Firebase auth to send user password reset email

Event Clicked UI

What/Why?

As a user, I want to view an event page, so that I may view more details on the event.

Tasks

  • Create widget for the top half of the page
  • Create widget for the external links portion
  • Create widget for the second half of the page
  • Create full page using a combination of all the widgets

Welcome Page

What/Why?

As a user, I want to be prompted to register or login for the app, so that I may create an account/login to my own profile.

Tasks

  • Create welcome UI

Profile Friends Integration

What/Why?

As a user, I want to be able to view my friends, so that I can see who I have added and am seeing events from.

Tasks

  • Create a scroller on the profile page to view a portion of the friends list
  • Provide a view all option that leads to a full friends list screen where all users are listed

Login Validation

What/Why?

As a user, I want to be shown how I have improperly given credentials, so that I know how to resolve the problem.

Tasks

  • Add validation to login form

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.