Skip to content

StefanSuess/Aiya-ActivitiesInYourArea

Repository files navigation

Welcome to Aiya - Activties In Your Area

GitHub license GitHub issues

Device Example Video Login Screen Device Example Video

Aiya is an app for Android, Web and iOS, developed with Flutter, which allows you to find, create and join user created activities in real life.

Features:
  • Create activities (where, when, what, more information)
  • Search for activities (and order by date, location or title)
  • Request to join activities
  • Permit or deny join requests
  • User Profile (picture, name, age, email, phone, interests, contact options)
  • Share functionality with deeplinks
  • Group chat functionality with image support
  • Some nice animations (especially dashboard to profile animation)
  • Dashboard (shows join requests, created activities and joined activities)
Tested on:
  • iOS simulator (iOS 14) iOS version is not thoroughly tested
  • MI 9T Android phone (Android 10)
  • Pixel 4 emulator (Android 11)
  • Google chrome mobile
  • Firefox mobile
Technology used:
  • Flutter 2.2
  • Firebase (spark and blaze plan)
  • Android Studio
  • VS Code (for cloud functions)
Interesting stuff
  • Provider pattern used
  • Hero animation with cached images (data on frame one)
  • Basic integration of unsplash api (activity title = keyword for activity picture)
  • This app was developed during the covid pandemic and thus has a warning and link to the WHO covid page
TODO
  • Write tests
  • Implement a filter to block inappropriate words and images (probably via Firebase ML)
  • Reduce and streamline API requests (at the moment every widget calls the api itself instead of one time at the creation of the screen)
  • Refactor and comment code to make it more readable and understandable

Installation

Aiya uses Firebase as the backend, thus it is required to setup a free Firebase account. All functions of Aiya are available in the free tier of Firebase except push messages.

The Backend (Firebase)

Step 1

Create an account at firebase.google.com, or login to an existing account.

Step 2

Create a new Project and follow the on-screen instructions.

Step 3

Add an Android, IOS or Web app
The android package name of this app is com.example.aiya

Here is an example for Android:

Excerpt from https://firebase.flutter.dev/docs/installation/android/


On the Firebase Console, add a new Android app or select an existing Android app for your Firebase project.\ The "Android package name" must match your local project's package name that was created when you started the Flutter project. The current package name can be found in your module (app-level) Gradle file, usually android/app/build.gradle, defaultConfig section (example package name: com.yourcompany.yourproject).

When creating a new Android app "debug signing certificate SHA-1" is optional, however, it is required for Dynamic Links & Phone Authentication. To generate a certificate run cd android && ./gradlew signingReport and copy the SHA1 from the debug key. This generates two variant keys. You can copy the 'SHA1' that belongs to the debugAndroidTest variant key option.

Once your Android app has been registered, download the configuration file from the Firebase Console (the file is called google-services.json). Add this file into the android/app directory within your Flutter project.

Step 4

To activate sign in and register methods (Authentication)
  1. In the Firebase console navigate to Authentication -> Sign-in method
  2. Activate Email/Password (and optionally Google)
To enable the creation of activities (Firestore)
  1. In the Firebase console navigate to Firestore Database --> Create Database
  2. Click on either production mode or test mode

The Frontend (the app itself)

Step 1

Download or clone this repo by using the link below:

https://github.com/StefanSuess/Aiya-ActivitiesInYourArea.git

Step 2

Go to project root and execute the following command in the console to get the required dependencies:

flutter pub get

Run (debug version)

You can either select a device via your IDEs GUI or run the following commands in the terminal, inside the projects root directory.

Web

Google Chrome needs to be installed.

flutter run -d chrome

Android

First open your Android emulator or connect your Android phone.

flutter run

iOS

Only works on MacOS, XCode needs to be installed.

open -a simulator
flutter run

Build (release version)

Web

flutter build web

You can find the files after the build completes at <ProjectRoot>/build/web/. For more information how to host your web app see Build and release a web app.

Android

flutter build apk

You can find the .apk at <ProjectRoot>/build/app/outputs/flutter-apk/.

iOS

Only works on MacOS, XCode needs to be installed.

flutter build ipa

Author

👤 Stefan Suess

Show your support

Give a ⭐️ if this project helped you!

📝 License

Copyright © 2021 Stefan Suess.
This project is MIT licensed.