├── devtools_options.yaml
├── ios
├── Runner
│ ├── Runner-Bridging-Header.h
│ ├── Assets.xcassets
│ │ ├── LaunchImage.imageset
│ │ │ ├── LaunchImage.png
│ │ │ ├── LaunchImage@2x.png
│ │ │ ├── LaunchImage@3x.png
│ │ │ ├── README.md
│ │ │ └── Contents.json
│ │ └── AppIcon.appiconset
│ │ │ ├── Icon-App-20x20@1x.png
│ │ │ ├── Icon-App-20x20@2x.png
│ │ │ ├── Icon-App-20x20@3x.png
│ │ │ ├── Icon-App-29x29@1x.png
│ │ │ ├── Icon-App-29x29@2x.png
│ │ │ ├── Icon-App-29x29@3x.png
│ │ │ ├── Icon-App-40x40@1x.png
│ │ │ ├── Icon-App-40x40@2x.png
│ │ │ ├── Icon-App-40x40@3x.png
│ │ │ ├── Icon-App-60x60@2x.png
│ │ │ ├── Icon-App-60x60@3x.png
│ │ │ ├── Icon-App-76x76@1x.png
│ │ │ ├── Icon-App-76x76@2x.png
│ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ ├── Icon-App-83.5x83.5@2x.png
│ │ │ └── Contents.json
│ ├── AppDelegate.swift
│ ├── Base.lproj
│ │ ├── Main.storyboard
│ │ └── LaunchScreen.storyboard
│ └── Info.plist
├── Flutter
│ ├── Debug.xcconfig
│ ├── Release.xcconfig
│ └── AppFrameworkInfo.plist
├── Runner.xcodeproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── WorkspaceSettings.xcsettings
│ │ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── WorkspaceSettings.xcsettings
│ │ └── IDEWorkspaceChecks.plist
├── .gitignore
├── Podfile
└── Podfile.lock
├── assets
├── avatars
│ └── rdj.png
└── images
│ └── empty.png
├── lib
├── l10n.yaml
├── repositories
│ ├── applicant.dart
│ ├── user.dart
│ ├── contact.dart
│ ├── personal.dart
│ ├── language.dart
│ ├── certificate.dart
│ ├── skill.dart
│ ├── reference.dart
│ ├── award.dart
│ ├── interest.dart
│ ├── experience.dart
│ ├── education.dart
│ ├── auth.dart
│ └── resume.dart
├── providers
│ ├── user_profile_provider.dart
│ ├── resume_list_provider.dart
│ ├── current_resume_provider.dart
│ ├── contact_data_provider.dart
│ ├── personal_data_provider.dart
│ ├── experience_list_provider.dart
│ ├── user_data_provider.dart
│ └── settings_provider.dart
├── widgets
│ ├── dialog_helper.dart
│ ├── empty_view.dart
│ ├── custom_button.dart
│ └── custom_text_form_field.dart
├── utils
│ ├── colors.dart
│ ├── local_storage.dart
│ ├── urls.dart
│ ├── constants.dart
│ ├── routes_handler.dart
│ ├── theme.dart
│ └── helper.dart
├── models
│ ├── applicant.dart
│ ├── skill.dart
│ ├── language.dart
│ ├── certificate.dart
│ ├── reference.dart
│ ├── award.dart
│ ├── interest.dart
│ ├── education.dart
│ ├── experience.dart
│ ├── contact.dart
│ ├── user.dart
│ ├── resume.dart
│ ├── personal.dart
│ └── resume_preview.dart
├── screens
│ ├── utility_screens
│ │ ├── not_found_screen.dart
│ │ ├── account_settings_screen.dart
│ │ ├── splash_screen.dart
│ │ ├── email_update_screen.dart
│ │ └── settings_screen.dart
│ ├── auth_screens
│ │ └── login_screen.dart
│ ├── profile_screens
│ │ └── profile_screen.dart
│ └── main_screens
│ │ └── resume_details
│ │ ├── interest
│ │ └── add_edit_interest_screen.dart
│ │ └── language
│ │ └── language_screen.dart
├── main.dart
├── l10n
│ ├── app_en.arb
│ └── app_bn.arb
└── apis
│ └── api.dart
├── android
├── gradle.properties
├── app
│ ├── src
│ │ ├── main
│ │ │ ├── res
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── drawable
│ │ │ │ │ └── launch_background.xml
│ │ │ │ ├── drawable-v21
│ │ │ │ │ └── launch_background.xml
│ │ │ │ ├── values
│ │ │ │ │ └── styles.xml
│ │ │ │ └── values-night
│ │ │ │ │ └── styles.xml
│ │ │ ├── kotlin
│ │ │ │ └── com
│ │ │ │ │ └── meheraj
│ │ │ │ │ └── gocv
│ │ │ │ │ └── MainActivity.kt
│ │ │ └── AndroidManifest.xml
│ │ ├── debug
│ │ │ └── AndroidManifest.xml
│ │ └── profile
│ │ │ └── AndroidManifest.xml
│ └── build.gradle
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
├── .gitignore
├── settings.gradle
└── build.gradle
├── test
└── widget_test.dart
├── .gitignore
├── LICENSE
├── analysis_options.yaml
├── .metadata
├── CONTRIBUTING.md
├── CODE_OF_CONDUCT.md
├── pubspec.yaml
└── README.md
/devtools_options.yaml:
--------------------------------------------------------------------------------
1 | extensions:
2 |
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/assets/avatars/rdj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/assets/avatars/rdj.png
--------------------------------------------------------------------------------
/assets/images/empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/assets/images/empty.png
--------------------------------------------------------------------------------
/lib/l10n.yaml:
--------------------------------------------------------------------------------
1 | arb-dir: lib/l10n
2 | template-arb-file: app_en.arb
3 | output-localization-file: app_localizations.dart
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MeherajUlMahmmud/GoCV/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/meheraj/gocv/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.meheraj.gocv
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
7 |
--------------------------------------------------------------------------------
/lib/repositories/applicant.dart:
--------------------------------------------------------------------------------
1 | import 'package:gocv/providers/user_data_provider.dart';
2 |
3 | class ApplicantRepository {
4 | String getAccessToken() {
5 | return UserProvider().tokens['access'];
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | zipStoreBase=GRADLE_USER_HOME
4 | zipStorePath=wrapper/dists
5 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
6 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 |
9 | # Remember to never publicly share your keystore.
10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
11 | key.properties
12 | **/*.keystore
13 | **/*.jks
14 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/lib/providers/user_profile_provider.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import '../models/user.dart';
4 |
5 | class UserProfileProvider with ChangeNotifier {
6 | UserProfile _userProfile = UserProfile();
7 |
8 | UserProfile get userProfile => _userProfile;
9 |
10 | void setUserProfile(UserProfile userProfile) {
11 | _userProfile = userProfile;
12 | notifyListeners();
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import Flutter
3 |
4 | @main
5 | @objc class AppDelegate: FlutterAppDelegate {
6 | override func application(
7 | _ application: UIApplication,
8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
9 | ) -> Bool {
10 | GeneratedPluginRegistrant.register(with: self)
11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
4 | def properties = new Properties()
5 |
6 | assert localPropertiesFile.exists()
7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
8 |
9 | def flutterSdkPath = properties.getProperty("flutter.sdk")
10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
12 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchImage.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchImage@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "LaunchImage@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/lib/widgets/dialog_helper.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class DialogHelper {
4 | static void showCustomDialog({
5 | required BuildContext context,
6 | required String title,
7 | required Widget content,
8 | required List actions,
9 | }) {
10 | AlertDialog alert = AlertDialog(
11 | title: Text(title),
12 | content: content,
13 | actions: actions,
14 | );
15 |
16 | showDialog(
17 | context: context,
18 | builder: (BuildContext context) {
19 | return alert;
20 | },
21 | );
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/lib/providers/resume_list_provider.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:gocv/models/resume.dart';
3 |
4 | class ResumeListProvider with ChangeNotifier {
5 | final List _resumeList = [];
6 |
7 | List get resumeList => _resumeList;
8 |
9 | void addResume(Resume resume) {
10 | _resumeList.add(resume);
11 | notifyListeners();
12 | }
13 |
14 | void setResumeList(List resumeList) {
15 | _resumeList.clear();
16 | _resumeList.addAll(resumeList);
17 | notifyListeners();
18 | }
19 |
20 | void removeResume(int index) {
21 | _resumeList.removeAt(index);
22 | notifyListeners();
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/ios/.gitignore:
--------------------------------------------------------------------------------
1 | **/dgph
2 | *.mode1v3
3 | *.mode2v3
4 | *.moved-aside
5 | *.pbxuser
6 | *.perspectivev3
7 | **/*sync/
8 | .sconsign.dblite
9 | .tags*
10 | **/.vagrant/
11 | **/DerivedData/
12 | Icon?
13 | **/Pods/
14 | **/.symlinks/
15 | profile
16 | xcuserdata
17 | **/.generated/
18 | Flutter/App.framework
19 | Flutter/Flutter.framework
20 | Flutter/Flutter.podspec
21 | Flutter/Generated.xcconfig
22 | Flutter/ephemeral/
23 | Flutter/app.flx
24 | Flutter/app.zip
25 | Flutter/flutter_assets/
26 | Flutter/flutter_export_environment.sh
27 | ServiceDefinitions.json
28 | Runner/GeneratedPluginRegistrant.*
29 |
30 | # Exceptions to above rules.
31 | !default.mode1v3
32 | !default.mode2v3
33 | !default.pbxuser
34 | !default.perspectivev3
35 |
--------------------------------------------------------------------------------
/lib/utils/colors.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | MaterialColor createMaterialColor(Color color) {
4 | List strengths = [.05];
5 | Map swatch = {};
6 | final int r = color.red, g = color.green, b = color.blue;
7 |
8 | for (int i = 1; i < 10; i++) {
9 | strengths.add(0.1 * i);
10 | }
11 | for (var strength in strengths) {
12 | final double ds = 0.5 - strength;
13 | swatch[(strength * 1000).round()] = Color.fromRGBO(
14 | r + ((ds < 0 ? r : (255 - r)) * ds).round(),
15 | g + ((ds < 0 ? g : (255 - g)) * ds).round(),
16 | b + ((ds < 0 ? b : (255 - b)) * ds).round(),
17 | 1,
18 | );
19 | }
20 |
21 | return MaterialColor(color.value, swatch);
22 | }
23 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '1.7.10'
3 | repositories {
4 | google()
5 | mavenCentral()
6 | }
7 |
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:7.2.0'
10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11 | }
12 | }
13 |
14 | allprojects {
15 | repositories {
16 | google()
17 | mavenCentral()
18 | }
19 | }
20 |
21 | rootProject.buildDir = '../build'
22 | subprojects {
23 | project.buildDir = "${rootProject.buildDir}/${project.name}"
24 | }
25 | subprojects {
26 | project.evaluationDependsOn(':app')
27 | }
28 |
29 | tasks.register("clean", Delete) {
30 | delete rootProject.buildDir
31 | }
32 |
--------------------------------------------------------------------------------
/test/widget_test.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_test/flutter_test.dart';
3 |
4 | import 'package:gocv/main.dart';
5 |
6 | void main() {
7 | testWidgets('Counter increments smoke test', (WidgetTester tester) async {
8 | // Build our app and trigger a frame.
9 | await tester.pumpWidget(const App());
10 |
11 | // Verify that our counter starts at 0.
12 | expect(find.text('0'), findsOneWidget);
13 | expect(find.text('1'), findsNothing);
14 |
15 | // Tap the '+' icon and trigger a frame.
16 | await tester.tap(find.byIcon(Icons.add));
17 | await tester.pump();
18 |
19 | // Verify that our counter has incremented.
20 | expect(find.text('0'), findsNothing);
21 | expect(find.text('1'), findsOneWidget);
22 | });
23 | }
24 |
--------------------------------------------------------------------------------
/lib/widgets/empty_view.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class EmptyView extends StatelessWidget {
4 | const EmptyView({super.key});
5 |
6 | @override
7 | Widget build(BuildContext context) {
8 | return Center(
9 | child: Column(
10 | mainAxisSize: MainAxisSize.min,
11 | children: [
12 | Image.asset(
13 | 'assets/images/empty.png',
14 | height: 300.0,
15 | width: 300.0,
16 | ),
17 | const Text(
18 | 'Nothing is here yet',
19 | style: TextStyle(
20 | fontSize: 24.0,
21 | color: Colors.greenAccent,
22 | fontWeight: FontWeight.bold,
23 | ),
24 | ),
25 | ],
26 | ),
27 | );
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/lib/providers/current_resume_provider.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:gocv/models/resume.dart';
3 |
4 | class CurrentResumeProvider with ChangeNotifier {
5 | late Resume _currentResume;
6 | late String _personalId;
7 | late String _contactId;
8 |
9 | Resume get currentResume => _currentResume;
10 | String get personalId => _personalId;
11 | String get contactId => _contactId;
12 |
13 | void setCurrentResume(Resume resume) {
14 | _currentResume = resume;
15 | notifyListeners();
16 | }
17 |
18 | void updateCurrentResume(Resume resume) {
19 | _currentResume = resume;
20 | notifyListeners();
21 | }
22 |
23 | void setPersonalId(String id) {
24 | _personalId = id;
25 | notifyListeners();
26 | }
27 |
28 | void setContactId(String id) {
29 | _contactId = id;
30 | notifyListeners();
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 | migrate_working_dir/
12 |
13 | # IntelliJ related
14 | *.iml
15 | *.ipr
16 | *.iws
17 | .idea/
18 |
19 | # The .vscode folder contains launch configuration and tasks you configure in
20 | # VS Code which you may wish to be included in version control, so this line
21 | # is commented out by default.
22 | #.vscode/
23 |
24 | # Flutter/Dart/Pub related
25 | **/doc/api/
26 | **/ios/Flutter/.last_build_id
27 | .dart_tool/
28 | .flutter-plugins
29 | .flutter-plugins-dependencies
30 | .packages
31 | .pub-cache/
32 | .pub/
33 | /build/
34 |
35 | # Symbolication related
36 | app.*.symbols
37 |
38 | # Obfuscation related
39 | app.*.map.json
40 |
41 | # Android Studio will place build artifacts here
42 | /android/app/debug
43 | /android/app/profile
44 | /android/app/release
45 |
--------------------------------------------------------------------------------
/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 12.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/lib/providers/contact_data_provider.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:gocv/models/contact.dart';
3 |
4 | class ContactDataProvider extends ChangeNotifier {
5 | final Contact _contactData = Contact(
6 | id: 0,
7 | email: '',
8 | );
9 |
10 | Contact get contactData => _contactData;
11 |
12 | void setContactData(Contact contactData) {
13 | _contactData.id = contactData.id;
14 | _contactData.resume = contactData.resume;
15 | _contactData.phoneNumber = contactData.phoneNumber;
16 | _contactData.email = contactData.email;
17 | _contactData.address = contactData.address;
18 | _contactData.zipCode = contactData.zipCode;
19 | _contactData.facebook = contactData.facebook;
20 | _contactData.linkedin = contactData.linkedin;
21 | _contactData.github = contactData.github;
22 | _contactData.website = contactData.website;
23 | notifyListeners();
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/lib/providers/personal_data_provider.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:gocv/models/personal.dart';
3 |
4 | class PersonalDataProvider extends ChangeNotifier {
5 | final Personal _personalData = Personal();
6 |
7 | Personal get personalData => _personalData;
8 |
9 | void setPersonalData(Personal personalData) {
10 | _personalData.id = personalData.id;
11 | _personalData.firstName = personalData.firstName;
12 | _personalData.lastName = personalData.lastName;
13 | _personalData.aboutMe = personalData.aboutMe;
14 | _personalData.dateOfBirth = personalData.dateOfBirth;
15 | _personalData.city = personalData.city;
16 | _personalData.state = personalData.state;
17 | _personalData.country = personalData.country;
18 | _personalData.nationality = personalData.nationality;
19 | _personalData.resumePicture = personalData.resumePicture;
20 | notifyListeners();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/lib/models/applicant.dart:
--------------------------------------------------------------------------------
1 | class Applicant {
2 | int? id;
3 | String firstName = '';
4 | String lastName = '';
5 | String? profilePicture;
6 | String? phoneNumber;
7 | int? resume;
8 |
9 | Applicant({
10 | this.id,
11 | required this.firstName,
12 | required this.lastName,
13 | this.profilePicture,
14 | this.phoneNumber,
15 | this.resume,
16 | });
17 |
18 | Applicant.fromJson(Map json) {
19 | id = json['id'];
20 | firstName = json['first_name'];
21 | lastName = json['last_name'];
22 | profilePicture = json['profile_picture'];
23 | phoneNumber = json['phone_number'];
24 | resume = json['resume'];
25 | }
26 |
27 | Map toJson() {
28 | final Map data = {};
29 | data['first_name'] = firstName;
30 | data['last_name'] = lastName;
31 | data['profile_picture'] = profilePicture;
32 | data['phone_number'] = phoneNumber;
33 | data['resume'] = resume;
34 | data['id'] = id;
35 | return data;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/lib/models/skill.dart:
--------------------------------------------------------------------------------
1 | class Skill {
2 | int id = 0;
3 | int resume = 0;
4 | String name = '';
5 | String? proficiency;
6 | String? description;
7 | bool? isActive;
8 | bool? isDeleted;
9 | int? createdBy;
10 | String? createdAt;
11 | int? updatedBy;
12 | String? updatedAt;
13 |
14 | Skill({
15 | required this.id,
16 | required this.resume,
17 | required this.name,
18 | this.proficiency,
19 | this.description,
20 | this.isActive,
21 | this.isDeleted,
22 | this.createdBy,
23 | this.createdAt,
24 | this.updatedBy,
25 | this.updatedAt,
26 | });
27 |
28 | Skill.fromJson(Map json) {
29 | resume = json['resume'];
30 | name = json['name'];
31 | proficiency = json['proficiency'];
32 | description = json['description'];
33 | id = json['id'];
34 | isActive = json['is_active'];
35 | isDeleted = json['is_deleted'];
36 | createdBy = json['created_by'];
37 | createdAt = json['created_at'];
38 | updatedBy = json['updated_by'];
39 | updatedAt = json['updated_at'];
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/lib/models/language.dart:
--------------------------------------------------------------------------------
1 | class Language {
2 | int id = 0;
3 | int resume = 0;
4 | String name = '';
5 | String? proficiency;
6 | String? description;
7 | bool? isActive;
8 | bool? isDeleted;
9 | int? createdBy;
10 | String? createdAt;
11 | int? updatedBy;
12 | String? updatedAt;
13 |
14 | Language({
15 | required this.id,
16 | required this.resume,
17 | required this.name,
18 | this.proficiency,
19 | this.description,
20 | this.isActive,
21 | this.isDeleted,
22 | this.createdBy,
23 | this.createdAt,
24 | this.updatedBy,
25 | this.updatedAt,
26 | });
27 |
28 | Language.fromJson(Map json) {
29 | resume = json['resume'];
30 | name = json['name'];
31 | proficiency = json['proficiency'];
32 | description = json['description'];
33 | id = json['id'];
34 | isActive = json['is_active'];
35 | isDeleted = json['is_deleted'];
36 | createdBy = json['created_by'];
37 | createdAt = json['created_at'];
38 | updatedBy = json['updated_by'];
39 | updatedAt = json['updated_at'];
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/lib/providers/experience_list_provider.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:gocv/models/experience.dart';
3 |
4 | class ExperienceListProvider extends ChangeNotifier {
5 | final List _experienceList = [];
6 |
7 | List get experienceList => _experienceList;
8 |
9 | void setExperienceList(List experienceList) {
10 | _experienceList.clear();
11 | _experienceList.addAll(experienceList);
12 | notifyListeners();
13 | }
14 |
15 | void addExperience(Experience experience) {
16 | _experienceList.add(experience);
17 | notifyListeners();
18 | }
19 |
20 | void updateExperience(String experienceId, Experience experience) {
21 | final int index = _experienceList
22 | .indexWhere((element) => element.id.toString() == experienceId);
23 | // print('index: $index');
24 | if (index != -1) {
25 | _experienceList[index] = experience;
26 | notifyListeners();
27 | }
28 | }
29 |
30 | void removeExperience(Experience experience) {
31 | _experienceList.remove(experience);
32 | notifyListeners();
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/lib/repositories/user.dart:
--------------------------------------------------------------------------------
1 | import '../apis/api.dart';
2 | import '../providers/user_data_provider.dart';
3 | import '../utils/helper.dart';
4 | import '../utils/urls.dart';
5 |
6 | class UserRepository {
7 | String getAccessToken() {
8 | return UserProvider().tokens['access'];
9 | }
10 |
11 | getUserProfile() async {
12 | try {
13 | final String accessToken = getAccessToken();
14 | const String url = '${URLS.kUserUrl}profile/';
15 |
16 | final data = await APIService().sendGetRequest(accessToken, url);
17 | return data;
18 | } catch (error) {
19 | return Helper().handleApiError(error);
20 | }
21 | }
22 |
23 | updateUserProfile(String userId, Map data) async {
24 | try {
25 | final String accessToken = getAccessToken();
26 | final String url = '${URLS.kUserUrl}$userId/update/';
27 |
28 | final response = await APIService().sendPatchRequest(
29 | accessToken,
30 | data,
31 | url,
32 | );
33 | return response;
34 | } catch (error) {
35 | return Helper().handleApiError(error);
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 Meheraj Ul Mahmmud
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/lib/models/certificate.dart:
--------------------------------------------------------------------------------
1 | class Certificate {
2 | int? resume;
3 | String? title;
4 | String? description;
5 | String? link;
6 | String? startDate;
7 | String? endDate;
8 | int? id;
9 | bool? isActive;
10 | bool? isDeleted;
11 | int? createdBy;
12 | String? createdAt;
13 | int? updatedBy;
14 | String? updatedAt;
15 |
16 | Certificate({
17 | this.resume,
18 | this.title,
19 | this.description,
20 | this.link,
21 | this.startDate,
22 | this.endDate,
23 | this.id,
24 | this.isActive,
25 | this.isDeleted,
26 | this.createdBy,
27 | this.createdAt,
28 | this.updatedBy,
29 | this.updatedAt,
30 | });
31 |
32 | Certificate.fromJson(Map json) {
33 | resume = json['resume'];
34 | title = json['title'];
35 | description = json['description'];
36 | link = json['link'];
37 | startDate = json['start_date'];
38 | endDate = json['end_date'];
39 | id = json['id'];
40 | isActive = json['is_active'];
41 | isDeleted = json['is_deleted'];
42 | createdBy = json['created_by'];
43 | createdAt = json['created_at'];
44 | updatedBy = json['updated_by'];
45 | updatedAt = json['updated_at'];
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/lib/providers/user_data_provider.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import '../models/user.dart';
4 |
5 | class UserProvider with ChangeNotifier {
6 | // Singleton instance
7 | static final UserProvider _singleton = UserProvider._internal();
8 |
9 | // Private constructor
10 | UserProvider._internal();
11 |
12 | // Factory method to provide access to the singleton instance
13 | factory UserProvider() {
14 | return _singleton;
15 | }
16 |
17 | final Map _tokens = {
18 | 'access': '',
19 | 'refresh': '',
20 | };
21 | UserBase? _userData;
22 |
23 | // Getters for tokens and userData
24 | Map get tokens => _tokens;
25 | UserBase? get userData => _userData;
26 |
27 | // Methods to modify tokens and userData
28 | void setTokens(Map tokens) {
29 | _tokens['access'] = tokens['access'];
30 | _tokens['refresh'] = tokens['refresh'];
31 | notifyListeners();
32 | }
33 |
34 | void setUserData(UserBase userData) {
35 | _userData = userData;
36 | notifyListeners();
37 | }
38 |
39 | void clearData() {
40 | _tokens['access'] = '';
41 | _tokens['refresh'] = '';
42 | _userData = null;
43 | notifyListeners();
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/lib/models/reference.dart:
--------------------------------------------------------------------------------
1 | class Reference {
2 | int id = 0;
3 | int resume = 0;
4 | String name = '';
5 | String email = '';
6 | String? phone;
7 | String? companyName;
8 | String? position;
9 | String? description;
10 | String? portfolio;
11 | int? createdBy;
12 | String? createdAt;
13 | int? updatedBy;
14 | String? updatedAt;
15 |
16 | Reference({
17 | required this.id,
18 | required this.resume,
19 | required this.name,
20 | required this.email,
21 | this.phone,
22 | this.companyName,
23 | this.position,
24 | this.description,
25 | this.portfolio,
26 | this.createdBy,
27 | this.createdAt,
28 | this.updatedBy,
29 | this.updatedAt,
30 | });
31 |
32 | Reference.fromJson(Map json) {
33 | id = json['id'];
34 | resume = json['resume'];
35 | name = json['name'];
36 | email = json['email'];
37 | phone = json['phone'];
38 | companyName = json['company_name'];
39 | position = json['position'];
40 | description = json['description'];
41 | portfolio = json['portfolio'];
42 | createdBy = json['created_by'];
43 | createdAt = json['created_at'];
44 | updatedBy = json['updated_by'];
45 | updatedAt = json['updated_at'];
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/lib/models/award.dart:
--------------------------------------------------------------------------------
1 | class Award {
2 | int? resume;
3 | String? title;
4 | String? description;
5 | String? link;
6 | int? id;
7 | bool? isActive;
8 | bool? isDeleted;
9 | int? createdBy;
10 | String? createdAt;
11 | int? updatedBy;
12 | String? updatedAt;
13 |
14 | Award(
15 | {this.resume,
16 | this.title,
17 | this.description,
18 | this.link,
19 | this.id,
20 | this.createdBy,
21 | this.createdAt,
22 | this.updatedBy,
23 | this.updatedAt});
24 |
25 | Award.fromJson(Map json) {
26 | resume = json['resume'];
27 | title = json['title'];
28 | description = json['description'];
29 | link = json['link'];
30 | id = json['id'];
31 | isActive = json['is_active'];
32 | isDeleted = json['is_deleted'];
33 | createdBy = json['created_by'];
34 | createdAt = json['created_at'];
35 | updatedBy = json['updated_by'];
36 | updatedAt = json['updated_at'];
37 | }
38 |
39 | Map toJson() {
40 | final Map data = {};
41 | data['resume'] = resume;
42 | data['title'] = title;
43 | data['description'] = description;
44 | data['link'] = link;
45 | data['id'] = id;
46 | return data;
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/lib/repositories/contact.dart:
--------------------------------------------------------------------------------
1 | import '../apis/api.dart';
2 | import '../providers/user_data_provider.dart';
3 | import '../utils/helper.dart';
4 | import '../utils/urls.dart';
5 |
6 | class ContactRepository {
7 | String getAccessToken() {
8 | return UserProvider().tokens['access'];
9 | }
10 |
11 | Future