Skip to content

Commit

Permalink
add project files
Browse files Browse the repository at this point in the history
  • Loading branch information
amansharma2910 committed Apr 22, 2022
0 parents commit 724a470
Show file tree
Hide file tree
Showing 141 changed files with 5,506 additions and 0 deletions.
46 changes: 46 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/

# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/build/

# Web related
lib/generated_plugin_registrant.dart

# Symbolication related
app.*.symbols

# Obfuscation related
app.*.map.json

# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile
/android/app/release
10 changes: 10 additions & 0 deletions .metadata
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.

version:
revision: f4abaa0735eba4dfd8f33f73363911d63931fe03
channel: stable

project_type: app
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2021 elecTRON Fellowship

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
65 changes: 65 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
<p align="center">
<img src="https://github.com/elecTRON-Fellowship/Sian-MLH/blob/main/designs/figma/Logo%20(2).png" alt="drawing" width="300"/>
</p>


## Inspiration🌠
Since the start of the pandemic, everyone has been living inside their homes. With all the travel restrictions, many tourist spots which used to be flooded with tourists all across the world have suddenly become empty with little to no visitors. **This has not only affected the tourism sector of different regions but has also affected the local businesses** that were dependent on the tourism sector for their daily livelihood. We saw this as a problem and to tackle it, we built Sian.

## What it does🚀

Sian is one of a kind mobile application— **A gamified tourism app**, that helps not only in promoting tourism in the most fun way possible but also helps in supporting those for whom tourism is the life support.
People love traveling, and people love taking lots and lots of selfies! Sian leverages just these two things in a bid to revolutionize and revive the tourism industry. We reward our users with reward points for visiting some of the popular tourist destinations in the world. These reward points can then be exchanged for discounts and gift cards at our partner stores, thus empowering businesses.

A user can log in to the application using our regular authentication method but to make things even easier we also have **Google authentication** that helps in saving up time for the user by 1-tap logins.

Once logged in, Sian unlocks a whole set of functionalities for the user!

* We know how difficult planning and keeping track of your trips can get. The **Google Calendar** integration allows the users to plan their travels right from the app.
* The in-app **Google Map**, with some of the most popular tourist destinations marked on it, lets the users find their way to the tourist destination that they wish to visit. A single tap on the navigation button guides the users to their desired location with proper directions and in no time.
* The locations on the map are dynamically fetched from **Firebase Cloud Firestore**, which means we can add/remove more locations in the future without making changes to the app code.
* Once the user is at a place, they can use our application to either click a selfie or click a picture of their surroundings and share it on social media platforms with their family and friends.

Every time the user shares clicks and shares images, they receive some reward points. These reward points can be later redeemed in our redeem section that gives the users discount coupons to the partner local hotels and cafes, which they can redeem to have a comfortable stay and that too at an affordable price. This also helps the local businesses around the place! *Win-Win!*

## How we built it🔨
![image](https://img.shields.io/badge/Figma-F24E1E?style=for-the-badge&logo=figma&logoColor=white) ![image](https://img.shields.io/badge/adobe-%23FF0000.svg?style=for-the-badge&logo=adobe&logoColor=white) ![image](https://img.shields.io/badge/Dart-0175C2?style=for-the-badge&logo=dart&logoColor=white) ![image](https://img.shields.io/badge/Flutter-02569B?style=for-the-badge&logo=flutter&logoColor=white) ![image](https://img.shields.io/badge/Google%20Cloud-4285F4?style=for-the-badge&logo=google-cloud&logoColor=white) ![image](https://img.shields.io/badge/firebase-%23039BE5.svg?style=for-the-badge&logo=firebase) ![image](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white) </br>
We started off by creating a prototype in **Figma**. The mobile application was built using **Flutter** and Dart. We made use of **Firebase** for authentication and for saving user data. We made use of **Google Maps SDK** to integrate a map in our application. We used the Flutter Camera module to capture and share images on social media. We also used Flutter module and the **Calender SDK** to add a calendar and for adding events to it in the application. All in all, Sian relies heavily on **Google Could** and the suite of SDKs and functionalities it provides to deliver our users a feature-rich experience.

## Project Gallery📷
Figma Design File - [Sian](https://www.figma.com/file/7pO11LUXzfJ1s8nq2i7qZP/Bon-Voyage-Hacks?node-id=0%3A1)

</br>
<p align="center">
<img src="https://github.com/elecTRON-Fellowship/Sian-MLH/blob/main/designs/figma/Group%201.png" alt="drawing" width="700"/>
</p>
<p align="center">
<img src="https://github.com/elecTRON-Fellowship/Sian-MLH/blob/main/designs/figma/Group%202.png" alt="drawing" width="700"/>
</p>
<p align="center">
<img src="https://github.com/elecTRON-Fellowship/Sian-MLH/blob/main/designs/figma/Group%203.png" alt="drawing" width="700"/>
</p>

## Challenges we ran into🔴
We ran into some problems with authentication as connecting applications with firebase can be troublesome sometimes. Flutter still being a little new to all of us, we faced some issues with the compatibility of the app with different devices and had to spend a lot of time fixing that.
The app uses multiple functionalities, and integrating those for the perfect UX was a challenge in itself.

## Accomplishments that we're proud of🎖
We were able to create our proper authentication system along with Google Auth which we had never really tried before. We also explored Firestore in a deep way and got to understand how a few things worked a particular way. Getting the camera and the maps module to work was tough but we were successful in making it work.

## What we learned📚
We got more experience in flutter and firebase by building this application. Got to learn about different authentication systems and how everything interacts in the flutter application during auth. We also got to learn about various flutter modules that came in handy while building Sian. We also wished to integrate smart contracts in the app and hence got a chance to work around with solidity as well.

## What's next for Sian🎉
The current point system that we have is dynamic but we would love to introduce smart contracts into the application to make the whole experience even more rewarding.

## Try it out here
You can download the apk file to try it out yourself!</br>
Download it here - [Sian](https://drive.google.com/drive/folders/1-GV4iofJgW17xEWMMIu47BEPczPhSqy6)

## Creators
This Project was built by -

| [<img alt="AM1CODES" src="https://avatars.githubusercontent.com/u/52394145?v=4" width="115"><br><sub>Aayush Mishra</sub>](https://github.com/AM1CODES) | [<img alt="mihir7121" src="https://avatars.githubusercontent.com/u/53087550?v=4" width="115"><br><sub>Aman Sharma</sub>](https://github.com/amansharma2910) | [<img alt="skully-coder" src="https://avatars.githubusercontent.com/u/55917548?v=4" width="115"><br><sub>Abhinav Agrawal</sub>](https://github.com/skully-coder)
| :---: |:---: |:---:

11 changes: 11 additions & 0 deletions android/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
gradle-wrapper.jar
/.gradle
/captures/
/gradlew
/gradlew.bat
/local.properties
GeneratedPluginRegistrant.java

# Remember to never publicly share your keystore.
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
key.properties
62 changes: 62 additions & 0 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
compileSdkVersion 30

sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}

defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.example.sian"
minSdkVersion 23
targetSdkVersion 30
multiDexEnabled true
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}

buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
}
}
}

flutter {
source '../..'
}

dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

apply plugin: 'com.google.gms.google-services'
47 changes: 47 additions & 0 deletions android/app/google-services.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{
"project_info": {
"project_number": "711214932514",
"project_id": "sian-gauth",
"storage_bucket": "sian-gauth.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:711214932514:android:a4964dd456bd962662a07b",
"android_client_info": {
"package_name": "com.example.sian"
}
},
"oauth_client": [
{
"client_id": "711214932514-7amfthn0sfco7rk2amsatgbt7n8tmbe7.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.example.sian",
"certificate_hash": "d15f62d87d97d491f84c9fc761f3bd5bd95f5479"
}
},
{
"client_id": "711214932514-747od3q8fv33pc3qsoukcvrua8dh4n1g.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyBWixG2hwdS-vRxsDgaz-TQjbeoLen-zkw"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "711214932514-747od3q8fv33pc3qsoukcvrua8dh4n1g.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
}
],
"configuration_version": "1"
}
7 changes: 7 additions & 0 deletions android/app/src/debug/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sian">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
45 changes: 45 additions & 0 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sian">
<application
android:label="Sian"
android:icon="@mipmap/launcher_icon">

<meta-data android:name="com.google.android.geo.API_KEY"
android:value="AIzaSyCYazFqlbhRGIvHAntqdfSSNT4xqCl0e5c"/>

<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<!-- Displays an Android View that continues showing the launch screen
Drawable until Flutter paints its first frame, then this splash
screen fades out. A splash screen is useful to avoid any visual
gap between the end of Android's launch screen and the painting of
Flutter's first frame. -->
<meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
</manifest>
6 changes: 6 additions & 0 deletions android/app/src/main/kotlin/com/example/sian/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.example.sian

import io.flutter.embedding.android.FlutterActivity

class MainActivity: FlutterActivity() {
}
12 changes: 12 additions & 0 deletions android/app/src/main/res/drawable-v21/launch_background.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="?android:colorBackground" />

<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>
12 changes: 12 additions & 0 deletions android/app/src/main/res/drawable/launch_background.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />

<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>
Binary file added android/app/src/main/res/mipmap-hdpi/ic_launcher.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added android/app/src/main/res/mipmap-mdpi/ic_launcher.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
18 changes: 18 additions & 0 deletions android/app/src/main/res/values-night/styles.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>
18 changes: 18 additions & 0 deletions android/app/src/main/res/values/styles.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>
Loading

0 comments on commit 724a470

Please sign in to comment.