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.
- 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)
- 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
- Flutter 2.2
- Firebase (spark and blaze plan)
- Android Studio
- VS Code (for cloud functions)
- 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
- 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
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.
Create an account at firebase.google.com, or login to an existing account.
Create a new Project and follow the on-screen instructions.
Add an Android,
IOS or
Web
app
The android package name of this app is com.example.aiya
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.
- In the Firebase console navigate to Authentication -> Sign-in method
- Activate Email/Password (and optionally Google)
- In the Firebase console navigate to Firestore Database --> Create Database
- Click on either production mode or test mode
Download or clone this repo by using the link below:
https://github.com/StefanSuess/Aiya-ActivitiesInYourArea.git
Go to project root and execute the following command in the console to get the required dependencies:
flutter pub get
You can either select a device via your IDEs GUI or run the following commands in the terminal, inside the projects root directory.
Google Chrome needs to be installed.
flutter run -d chrome
First open your Android emulator or connect your Android phone.
flutter run
Only works on MacOS, XCode needs to be installed.
open -a simulator
flutter run
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.
flutter build apk
You can find the .apk at
<ProjectRoot>/build/app/outputs/flutter-apk/
.
Only works on MacOS, XCode needs to be installed.
flutter build ipa
👤 Stefan Suess
- Website: https://www.linkedin.com/in/stefansuess
- Github: @StefanSuess
- LinkedIn: @stefansuess
Give a ⭐️ if this project helped you!
Copyright © 2021 Stefan Suess.
This project is MIT licensed.