GithubHelp home page GithubHelp logo

stefansuess / aiya-activitiesinyourarea Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 1.0 3.87 MB

License: MIT License

Kotlin 0.09% Ruby 0.58% Swift 0.14% Objective-C 0.01% Dart 95.52% HTML 1.07% JavaScript 2.58%
dart flutter firebase firebase-auth firestore cloudstore web android ios pwa cloudmessaging

aiya-activitiesinyourarea's Introduction

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.

aiya-activitiesinyourarea's People

Contributors

stefansuess avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

sixl-daniel

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.