Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
04657b7
Merge pull request #44 from techstartucalgary/rhenaldi/settingspage
nurgul-ths Jan 20, 2023
24e18d1
Added liked state
AarshShah9 Jan 20, 2023
109cd37
Changed to trending
AarshShah9 Jan 20, 2023
882cbae
Added badges for tech stack to readme
AarshShah9 Feb 1, 2023
5682195
Update README.md
nurgul-ths Feb 2, 2023
285946f
Update README.md
nurgul-ths Feb 3, 2023
58c9844
added basic maps page
AarshShah9 Feb 10, 2023
046433e
Location feature implemented on Privacy Page
Axeloooo Feb 11, 2023
0ba91b6
Lat and Lng added
Axeloooo Feb 11, 2023
069742c
Privacy v0.1
Axeloooo Feb 11, 2023
271c345
Android build.gradle & AndroidManifest.xml changed
Axeloooo Feb 23, 2023
0f15f0c
Added maps integration - apikey not exposed
AarshShah9 Mar 1, 2023
a854a5c
Settings page remade and privacy page improved
Axeloooo Mar 6, 2023
daf1d75
Search bar component created
Axeloooo Mar 10, 2023
0f61295
move header to settings page
nurgul-ths Mar 10, 2023
8e35941
Dependencies updated
Axeloooo Mar 10, 2023
31571ed
Merge branch 'Axel/Geolocation' of https://github.com/techstartucalga…
Axeloooo Mar 10, 2023
48948c8
Merge branch axel geolocation
AarshShah9 Mar 10, 2023
936eefb
fixed build.gradle file WARNING DANGEROUS CHANGE
AarshShah9 Mar 10, 2023
15fc50b
integrate users current location into google maps
AarshShah9 Mar 10, 2023
f472d40
updated maps page
AarshShah9 Mar 24, 2023
695dc0d
Merge branch 'GoogleMapsApiCopy' of https://github.com/techstartucalg…
AarshShah9 Apr 6, 2023
08e5dad
Merge branch 'AarshLikedState' of https://github.com/techstartucalgar…
AarshShah9 Apr 6, 2023
d86394d
merged likedstate
AarshShah9 Apr 6, 2023
e0a7270
maps page
AarshShah9 Apr 6, 2023
57378e0
add search bar feature
rhenaldi-eeng Apr 29, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
"cmake.configureOnOpen": false,
"cmake.sourceDirectory": "${workspaceFolder}/linux"
}
"cmake.sourceDirectory": "${workspaceFolder}/linux",
"java.configuration.updateBuildConfiguration": "interactive"
}
55 changes: 55 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,59 @@
# Bandist

<img src="https://user-images.githubusercontent.com/79397892/216474788-c0195db8-dbf9-4822-a12e-65bbb6c3d382.png" width="700" height="500">

<a href="">![Dart](https://img.shields.io/badge/Dart-0175C2.svg?style=for-the-badge&logo=Dart&logoColor=white)</a>
<a href="">![Flutter](https://img.shields.io/badge/Flutter-02569B.svg?style=for-the-badge&logo=Flutter&logoColor=white)</a>
<a href="">![Django](https://img.shields.io/badge/Django-092E20.svg?style=for-the-badge&logo=Django&logoColor=white)</a>
<a href="">![Python](https://img.shields.io/badge/Python-3776AB.svg?style=for-the-badge&logo=Python&logoColor=white)</a>
<a href="">![Spotify](https://img.shields.io/badge/Spotify-1DB954.svg?style=for-the-badge&logo=Spotify&logoColor=white)</a>
<a href="">![iOS](https://img.shields.io/badge/iOS-000000.svg?style=for-the-badge&logo=iOS&logoColor=white)</a>
<a href="">![Andriod](https://img.shields.io/badge/Android-3DDC84.svg?style=for-the-badge&logo=Android&logoColor=white)</a>
<a href="">![Windows](https://img.shields.io/badge/Windows-0078D6.svg?style=for-the-badge&logo=Windows&logoColor=white)</a>

An app to notify users about upcoming concerts from their favorite artists!

Key features:

- Free: get notified about biggest concerts at no cost.
- Easy to use: login with your Spotify account in a few seconds and use our app.
- Smooth UI experience: enjoy the most modern mobile app design.

## Getting Started

To view the app at its current state:

1. Visit https://github.com/techstartucalgary/Bandist

git clone https://github.com/techstartucalgary/Bandist.git

2. We recommend to use virtualenv for development:
Start by installing virtualenv if you don't have it

pip install virtualenv

3. Once installed access the project folder

cd flutter-concert-app

4. Create a virtual environment

virtualenv venv

5. Enable the virtual environment

source venv/bin/activate

6. Install the python dependencies on the virtual environment

pip install -r requirements.txt

7. Start the web application

cd backend/bandist/
python manage.py runserver 8000


## LIST OF CONTRIBUTORS

- Nurgul Akhshatayeva
Expand All @@ -8,3 +62,4 @@
- MD Sakil Al Mahmud
- Aarsh Shah
- Rhenaldi Ashif Wijaya
- Sajwal Pageni
12 changes: 8 additions & 4 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ if (localPropertiesFile.exists()) {

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.")
throw GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
Expand All @@ -26,7 +26,9 @@ apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
compileSdkVersion flutter.compileSdkVersion
compileSdkVersion 33

// compileSdkVersion flutter.compileSdkVersion
ndkVersion flutter.ndkVersion

compileOptions {
Expand All @@ -43,11 +45,13 @@ android {
}

defaultConfig {
targetSdkVersion 33
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.example.flutter_concert_app"
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
minSdkVersion flutter.minSdkVersion
// minSdkVersion flutter.minSdkVersion
minSdkVersion 20
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
Expand All @@ -68,4 +72,4 @@ flutter {

dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}
}
30 changes: 9 additions & 21 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,34 +1,22 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.flutter_concert_app">
<application
android:label="flutter_concert_app"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:exported="true"
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">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.flutter_concert_app">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<application android:label="flutter_concert_app" android:name="${applicationName}" android:icon="@mipmap/ic_launcher">
<activity android:name=".MainActivity" android:exported="true" 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"
/>
<meta-data android:name="io.flutter.embedding.android.NormalTheme" android:resource="@style/NormalTheme" />
<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" />
<meta-data android:name="flutterEmbedding" android:value="2" />

<meta-data android:name="com.google.android.geo.API_KEY" android:value="REPLACE_APIKEY"/>
</application>
</manifest>
2 changes: 2 additions & 0 deletions android/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@ distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
android.useAndroidX=true
android.enableJetifier=true
36 changes: 36 additions & 0 deletions ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,56 @@ PODS:
- Flutter (1.0.0)
- flutter_native_splash (0.0.1):
- Flutter
- geocoding (1.0.5):
- Flutter
- geolocator_apple (1.2.0):
- Flutter
- google_maps_flutter_ios (0.0.1):
- Flutter
- GoogleMaps
- GoogleMaps (5.2.0):
- GoogleMaps/Maps (= 5.2.0)
- GoogleMaps/Base (5.2.0)
- GoogleMaps/Maps (5.2.0):
- GoogleMaps/Base
- shared_preferences_foundation (0.0.1):
- Flutter
- FlutterMacOS

DEPENDENCIES:
- Flutter (from `Flutter`)
- flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
- geocoding (from `.symlinks/plugins/geocoding/ios`)
- geolocator_apple (from `.symlinks/plugins/geolocator_apple/ios`)
- google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`)
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/ios`)

SPEC REPOS:
trunk:
- GoogleMaps

EXTERNAL SOURCES:
Flutter:
:path: Flutter
flutter_native_splash:
:path: ".symlinks/plugins/flutter_native_splash/ios"
geocoding:
:path: ".symlinks/plugins/geocoding/ios"
geolocator_apple:
:path: ".symlinks/plugins/geolocator_apple/ios"
google_maps_flutter_ios:
:path: ".symlinks/plugins/google_maps_flutter_ios/ios"
shared_preferences_foundation:
:path: ".symlinks/plugins/shared_preferences_foundation/ios"

SPEC CHECKSUMS:
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef
geocoding: 32cfcdb16d38d907caaba65e2e42ad10d38bee58
geolocator_apple: cc556e6844d508c95df1e87e3ea6fa4e58c50401
google_maps_flutter_ios: 66201f392bf62d500f07670a30488a247b9bb5b9
GoogleMaps: 025272d5876d3b32604e5c080dc25eaf68764693
shared_preferences_foundation: 986fc17f3d3251412d18b0265f9c64113a8c2472

PODFILE CHECKSUM: ef19549a9bc3046e7bb7d2fab4d021637c0c58a3

Expand Down
30 changes: 12 additions & 18 deletions ios/Runner.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
7FD84A108D19F485DAF44F84 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CF1EF4418E17518E6CEC3F3 /* Pods_Runner.framework */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
Expand Down Expand Up @@ -40,7 +39,6 @@
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
7EA4B86657FAC156607A4177 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
Expand Down Expand Up @@ -142,6 +140,7 @@
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
94E1B1C53AE3593E655F5AA9 /* [CP] Embed Pods Frameworks */,
5A5252D1807103D420E18589 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
Expand Down Expand Up @@ -200,41 +199,36 @@
/* End PBXResourcesBuildPhase section */

/* Begin PBXShellScriptBuildPhase section */
0C49BEC204A47601390B5C5E /* [CP] Check Pods Manifest.lock */ = {
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
name = "Thin Binary";
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
5A5252D1807103D420E18589 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
);
name = "Thin Binary";
outputPaths = (
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
showEnvVarsInLog = 0;
};
62EEF107FD7FE94050E3CA1F /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
Expand Down
18 changes: 17 additions & 1 deletion ios/Runner/AppDelegate.swift
Original file line number Diff line number Diff line change
@@ -1,13 +1,29 @@
// import UIKit
// import Flutter

// @UIApplicationMain
// @objc class AppDelegate: FlutterAppDelegate {
// override func application(
// _ application: UIApplication,
// didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
// ) -> Bool {
// GeneratedPluginRegistrant.register(with: self)
// return super.application(application, didFinishLaunchingWithOptions: launchOptions)
// }
// }

import UIKit
import Flutter
import GoogleMaps

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GMSServices.provideAPIKey("REPLACE_APIKEY")
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
}
4 changes: 4 additions & 0 deletions ios/Runner/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,9 @@
<true/>
<key>UIStatusBarHidden</key>
<false/>
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs access to location when open.</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>This app needs access to location when in the background.</string>
</dict>
</plist>
5 changes: 5 additions & 0 deletions lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
import 'package:flutter/material.dart';
import 'package:flutter_concert_app/constants/ColorConstants.dart';
import 'package:flutter_concert_app/pages/PrivacyPage.dart';
import 'package:flutter_concert_app/pages/SettingsPage.dart';
import 'package:flutter_concert_app/provider/fav_provider.dart';
import 'package:flutter_concert_app/widgets/BottomBar.dart';
import 'package:flutter_concert_app/pages/ConcertsPage.dart';
import 'package:flutter_concert_app/pages/MapsPage.dart';
import 'package:http/http.dart' as http;
import 'package:provider/provider.dart';
import 'pages/HomePage.dart';
Expand Down Expand Up @@ -51,6 +54,8 @@ class MyApp extends StatelessWidget {
'/bottom-bar': (context) => const BottomBar(),
'/home': (context) => const HomePage(),
'/concerts': (context) => const ConcertsPage(),
'/map': (context) => const MapsPage(),
'/privacy': (context) => const PrivacyPage(),
},
));
}
Expand Down
Loading