A fresh and modern Google Contacts manager that integrates with GitHub and Twitter.

Related tags

Desktop flokk
Overview

Flokk

A fresh and modern Google Contacts manager that integrates with GitHub and Twitter.

Demo Builds

Contributing

You are invited to improve Flokk Contacts! Submitting pull requests, answering and asking questions in the Issues page, and updating documentation are all ways you can contribute to the app.

Please note that although we are monitoring GitHub issues, we aren't actively maintaining the codebase, so community involvement and contributions are really appreciated going forward. We're aiming to review pull requests on a weekly basis.

Getting Set Up

1. Flutter

2. Add Required API Keys

Google Sign In is required in order to run the app (unless running with cached data). The app uses the Google People API, and you will need to provide your own Google OAuth 2 client credentials in the /lib/api_keys.dart file.

Follow the instructions here to enable the People API and create credentials:

To optionally fetch social data for your contacts, add your own API keys for those as well:

Although the Twitter and GitHub keys are optional, they are recommended. Otherwise the app will not be able to fetch tweets and GitHub calls will be subject to a rate limit (https://developer.github.com/v3/#rate-limiting).

Web Builds

If you're building for web:

  • Edit /web/index.html to include your web credentials (web client Id) <meta name="google-signin-client_id" content="YOUR_GOOGLE_SIGN_IN_OAUTH_CLIENT_ID.apps.googleusercontent.com">.
  • This is needed for Google Sign In to work on web builds. For more details, see https://pub.dev/packages/google_sign_in_web

CORS Proxy

For Twitter support to work on web builds, it is necessary to use a CORS proxy. You can set up a proxy on your own domain, or else run a localhost instance with proxy/app.js.

If setting up on your domain, ensure you have enabled https (https://letsencrypt.org/). Once you have the security certificate, edit proxy/app.js and insert your cert and key. This is not necessary if running a localhost instance.

After the proxy is set up, edit services/twitter_rest_service.dart to point to your running proxy instance (e.g. "https://my-proxy.com", "http://localhost", etc.)

For more information, see https://github.com/Rob--W/cors-anywhere

Running With Cached Data

If you simply want to see the app running, it is possible to run the app using cached data:

  • Run the app at least once, to create your data folders
  • Extract the contents of /sample_data.zip to the newly created data folder on your machine:
    • Windows: \Users\[USER]\AppData\Roaming\flokk
    • Linux: $HOME/.local/share/flokk-contacts
    • macOS: /Users/[USER]/Library/Containers/app.flokk/Data/Library/Application Support/app.flokk
  • Overwrite any files that are there
  • Launch the app again, it should now sign in, and load with existing data.
  • If you sign out, your saved data will be wiped and you will need to repeat the process.

Note: This is meant as a 'read-only' mode so you can quickly explore all the widgets and features of the app. Updates, deletes, etc are not expected to work.

Test & Build

Debug Builds

  • Use flutter run -d DEVICE_ID to deploy a test build
  • To get a list of available DEVICE_ID, use flutter run
  • Typical values are: windows, linux, macos, chrome
  • Add --release to deploy an optimized build

Release Builds

  • Use flutter build PACKAGE_TYPE to build a release package
  • To get a list of available PACKAGE_TYPE, use flutter build
  • Typical values are windows, linux, apk, ios
  • In order to build the snap package one must first run lxd init on your system if you haven't already. ** Then execute snapcraft --use-lxd to create the snap from the flutter build

Force Log In

  • The app uses a kForceWebLogin flag to force release builds to skip the oauth screen.
  • Add --dart-define=flokk.forceWebLogin=true to your build command to enable
  • E.g. flutter build web --dart-define=flokk.forceWebLogin=true

Desktop Runners

The /linux and /windows folders contain modifications and should not be upgraded to upstream without first verifying that each plugin works correctly with the new upstream code and any modifications are made.

Since the desktop runners for this project may contain modifications, upgrades should not be made without first verifying that every plugin and embedder can be upgraded and that they remain compatible after an upgrade. Hopefully this will not be as much of an issue once Flutter's desktop support becomes more mature.

--

Happy Flokking!

Comments
  • sqflite issues

    sqflite issues

    Hi, wanna ask how do u guys implement solved the SQL problem in flokk on desktop version. AFAIK, there were no such plugin for sqflite for now in flutter.

    opened by jinfagang 3
  • Couldn't `flutter pub get`

    Couldn't `flutter pub get`

    Hello, After flutter pub get I've got such error:

    Because dartx >=0.2.0 depends on collection >=1.14.11 <1.15.0 and every version of flutter from sdk depends on collection 1.15.0-nullsafety, dartx >=0.2.0 is incompatible with flutter from sdk.
    So, because flokk depends on both flutter any from sdk and dartx ^0.4.0, version solving failed.
    pub get failed (1; So, because flokk depends on both flutter any from sdk and dartx ^0.4.0, version solving failed.)
    

    I have

    $ flutter --version
    Flutter 1.20.0-8.0.pre.125 • channel master • https://github.com/flutter/flutter.git
    Framework • revision 9c4a5ef1ed (9 hours ago) • 2020-07-15 21:41:27 +0100
    Engine • revision 774ae0313d
    Tools • Dart 2.9.0 (build 2.9.0-21.0.dev 89fe12b12a)
    
    opened by gagarin55 2
  • Empty window on Ubuntu 20.04

    Empty window on Ubuntu 20.04

    Just installed the snap version. After starting the app, I can only see an empty window. When I start the app from terminal I get this:

    michal@michal-laptop:~$ flokk-contacts 
    
    (flokk-contacts:3482): Gdk-WARNING **: 09:52:42.440: ../../../../../gdk/x11/gdkwindow-x11.c:5579 drawable is not a native X11 window
    
    ** (flokk-contacts:3482): WARNING **: 09:52:42.450: Failed to start Flutter engine: Failed to create EGL surface: Bad Native Window
    
    platform-linux 
    opened by mivoligo 2
  • Running with cached data for web target

    Running with cached data for web target

    The README doesn't mention if this is supported or not. When I give it a try I am met with the following errors:

    An Observatory debugger and profiler on Chrome is available at: http://127.0.0.1:59442/WqBomgPWUuI= Flutter Web Bootstrap: Auto [ERROR] Exception: app.settings not found /################################################## [BootstrapCommand] ################################################## [ERROR] Exception: auth.dat not found [ERROR] Exception: twitter.dat not found [ERROR] Exception: github.dat not found [ERROR] Exception: contacts.dat not found [RefreshAuthTokensCommand] Refreshing with token: 1//06TVHZgXSuhqfCgYIARAAGAYSNwF-L9IrPuIVzs3JSYt1xzWSXnK8Vx5cUPgYrEN4FouCtOy1j01hosURDlWogymULquE-e1lXm0 Error: Exception: error-log.txt not found

    Is it possible to extract sample_data.zip somewhere to be able to use cached data?

    opened by rolodex 1
  • Question: Does static instance of context make a perf difference

    Question: Does static instance of context make a perf difference

    I noticed that the AbstractCommand checks to see if the context passed into the constructor matches a previously passed in context.

    https://github.com/gskinnerTeam/flokk/blob/861553120f153a6cba8bf262d6fc02002234469b/flokk_src/lib/commands/abstract_command.dart#L25-L30

    Wondering whether this done purely for perf gains, and if so how noticeable is the difference?

    opened by chimon2000 1
  • README gives incorrect Flutter hash

    README gives incorrect Flutter hash

    The recent changes to the repo appear to be using a recent master—it's using the latest FDE plugin versions, and a fairly recent version of the Windows runner—but the README still says to use Flutter 9c3f0faa6d, which is from June. That wouldn't compile.

    The README should be updated to whatever version you updated against.

    platform-windows 
    opened by stuartmorgan 1
  • Unable to copy text

    Unable to copy text

    Hey, I'm trying to make a flutter desktop app for Linux and in a text field, I'm not able to use any keyboard shortcuts for eg, ctrl+c for copy or ctrl+a for all selection. Can you help me with this?

    opened by rish07 1
  • Fix default geometry for scaled screens

    Fix default geometry for scaled screens

    There is an issue when the application starts up on a scaled (HiDpi) monitor. gtk_widget_set_size_request sets the minimum size for the window. It currently uses 1376x768. On a screen with scale factor of 2, this 2752x1376. I have a 2160x1440 display. Therefore the width is too large to fit on the screen. I updated the code to first get the scale factor and divide the preferred width and height by the scale factor. This now shows up correctly on my display.

    opened by harriseldon 1
  • Cannot resize on Gnome with scaling

    Cannot resize on Gnome with scaling

    I currently use 200% scaling in Gnome. When I launch Flokk, it is larger than my available screen and cannot be resized.

    If I switch the scaling back to 100% and launch Flokk, it appears smaller than my screen and I am able to resize it.

    opened by harriseldon 1
  • Delete login module

    Delete login module

    수정 <flokk_src/lib/main.dart>

    • home: WelcomePage() -> home: MainScaffold()
    • 앱 실행 시 작동되던 시작화면을 로그인화면(WelcomePage)에서 홈화면(MainScaffold)으로 변경함.

    아래 세개의 경로는 위 파일을 수정하니, 자동수정 됨. <flokk_src/linux/flutter/generated_plugins.cmake> <flokk_src/macos/Flutter/GeneratedPluginRegistrant.swift> <flokk_src/windows/flutter/generated_plugins.cmake>

    opened by rhth1998 0
  • Build fails with No named parameter with the name 'autovalidate' on flutter master

    Build fails with No named parameter with the name 'autovalidate' on flutter master

    Flutter master version: 2.9.0-1.0.pre.293

    Build error with No named parameter with the name 'autovalidate'.

    To fix it:

    change autovalidate to autovalidateMode. change final bool autoValidate to final AutovalidateMode autoValidate change this.autoValidate =false to this.autoValidate = AutovalidateMode.disabled

    opened by sgon00 0
  • build fails with KeyEventResult type errors

    build fails with KeyEventResult type errors

    (latest flutter on ubuntu)

    > flutter run -d linux
    Running "flutter pub get" in flokk_src...                          15.8s
    Launching lib/main.dart on Linux in debug mode...
    ERROR: lib/styled_components/styled_text_input.dart:149:20: Error: A value of type 'bool' can't be returned from a function with return type 'KeyEventResult'.
    ERROR:  - 'KeyEventResult' is from 'package:flutter/src/widgets/focus_manager.dart' ('/home/dym/snap/flutter/common/flutter/packages/flutter/lib/src/widgets/focus_manager.dart').
    ERROR:             return true;
    ERROR:                    ^
    ERROR: lib/styled_components/styled_text_input.dart:152:16: Error: A value of type 'bool' can't be returned from a function with return type 'KeyEventResult'.
    ERROR:  - 'KeyEventResult' is from 'package:flutter/src/widgets/focus_manager.dart' ('/home/dym/snap/flutter/common/flutter/packages/flutter/lib/src/widgets/focus_manager.dart').
    ERROR:         return false;
    ERROR:                ^
    ERROR: lib/views/search/search_bar_view.dart:46:14: Error: The argument type 'bool Function(FocusNode, RawKeyEvent)' can't be assigned to the parameter type 'KeyEventResult Function(FocusNode, RawKeyEvent)?'.
    ERROR:  - 'FocusNode' is from 'package:flutter/src/widgets/focus_manager.dart' ('/home/dym/snap/flutter/common/flutter/packages/flutter/lib/src/widgets/focus_manager.dart').
    ERROR:  - 'RawKeyEvent' is from 'package:flutter/src/services/raw_keyboard.dart' ('/home/dym/snap/flutter/common/flutter/packages/flutter/lib/src/services/raw_keyboard.dart').
    ERROR:  - 'KeyEventResult' is from 'package:flutter/src/widgets/focus_manager.dart' ('/home/dym/snap/flutter/common/flutter/packages/flutter/lib/src/widgets/focus_manager.dart').
    ERROR:       onKey: _handleKeyPress,
    ERROR:              ^
    Building Linux application...
    Exception: Build process failed
    
    opened by dym-sh 2
  • Where do i place the sample data?

    Where do i place the sample data?

    I'm currently using vscode on windows to launch the web app. As per the README to use cache data, I copy the contents of "sample_data.zip" to "C:\Users<USER>\AppData\Roaming\flokk"

    However, i got some error and exception:

    [ERROR] Exception: app.settings not found ............... Error: Exception: error-log.txt not found .............

    Am i missing any steps?

    opened by jeremy-chua 0
  • Loading only 1000 out of 2566 contacts

    Loading only 1000 out of 2566 contacts

    I am only getting 1000 contacts. I think there is a error in "load more" mechanism. Logs:

    Restarted application in 703ms. flutter: /################################################## flutter: [BootstrapCommand] flutter: DataDir is: C:\Users\jrvid\AppData\Roaming\flokk flutter: ################################################## flutter: [RefreshAuthTokensCommand] Refreshing with token: <<>> flutter: Response: 200 / { "access_token": "<<>>", "expires_in": 3599, "scope": "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/contacts", "token_type": "Bearer", "id_token": "<<>>" } flutter: Refresh token success. authKey = <<>>, refreshToken = <<>> flutter: [RefreshContactsCommand] flutter: [RefreshAuthTokensCommand] Refreshing with token: <<>> flutter: REQUEST: https://people.googleapis.com/v1/people/me/connections?access_token=<<>>&personFields=addresses,ageRanges,biographies,birthdays,braggingRights,coverPhotos,emailAddresses,events,genders,imClients,interests,locales,memberships,metadata,names,nicknames,occupations,organizations,phoneNumbers,photos,relations,relationshipInterests,relationshipStatuses,residences,sipAddresses,skills,taglines,urls,userDefined&sortOrder=FIRST_NAME_ASCENDING&pageSize=2000&requestSyncToken=true /// RESPONSE: 200 flutter: token: <<>> 1000 out of 2566 flutter: [RefreshContactGroupsCommand] flutter: [RefreshAuthTokensCommand] Refreshing with token: <<>> flutter: REQUEST: https://people.googleapis.com/v1/contactGroups?access_token=<<>>&pageSize=1000 /// RESPONSE: 200 flutter: Groups loaded = 13 flutter: Contacts loaded = 1000 flutter: ######################### flutter: BootstrapCommand Complete flutter: ######################### flutter: [RefreshContactsCommand] flutter: [RefreshAuthTokensCommand] Refreshing with token: <<>> flutter: REQUEST: https://people.googleapis.com/v1/people/me/connections?access_token=<<>>&personFields=addresses,ageRanges,biographies,birthdays,braggingRights,coverPhotos,emailAddresses,events,genders,imClients,interests,locales,memberships,metadata,names,nicknames,occupations,organizations,phoneNumbers,photos,relations,relationshipInterests,relationshipStatuses,residences,sipAddresses,skills,taglines,urls,userDefined&sortOrder=FIRST_NAME_ASCENDING&pageSize=2000&requestSyncToken=true /// RESPONSE: 200 flutter: token: <<>> 1000 out of 2566

    opened by vidz1979 1
Releases(1.0.1+1)
  • 1.0.1+1(Sep 18, 2020)

    A small update to the Windows build to show the latest and greatest from Flutter's Windows alpha.

    • Web: https://flokk.app
    • Linux: https://snapcraft.io/flokk-contacts
    • macOS: https://flokk.app/macos/Flokk_Contacts_v1.0.1.dmg
    • Windows: https://flokk.app/windows/flokk-v1.0.1-signed.zip

    You are invited to improve Flokk Contacts! Submitting pull requests, answering and asking questions in the Issues page, and updating documentation are all ways you can contribute to the app.

    Please note that although we are monitoring GitHub issues, we aren’t actively maintaining the codebase, so community involvement and contributions are really appreciated going forward. We’re aiming to review pull requests on a weekly basis.

    Source code(tar.gz)
    Source code(zip)
  • 1.0.1(Jul 8, 2020)

    • Web: https://flokk.app
    • Linux: https://snapcraft.io/flokk-contacts
    • macOS: https://flokk.app/macos/Flokk_Contacts_v1.0.1.dmg
    • Windows: https://flokk.app/windows/Flokk_Contacts_v1.0.1.zip
    Source code(tar.gz)
    Source code(zip)
Owner
gskinner team
We collaborate with smart, motivated clients to conceptualize, design, and build world-class interactive experiences.
gskinner team
A simple, modern AppImageHub Client, powered by flutter.

AppImagePool Simple AppImageHub Client Main Features FLOSS and non profit app Simple categories Download from github directly, no extra-server involve

Prateek SU 488 Dec 30, 2022
Trident - The magic kernel manager for elementary os and ubuntu based distros.

trident The magic kernel manager for elementary os and ubuntu based distros. testing Make a cache directory for trident in /var/cache/ sudo mkdir /var

Quinten Van Damme 4 Apr 5, 2022
AuthPass - Password Manager based on Flutter for all platforms. Keepass 2.x (kdbx 3.x) compatible.

AuthPass.app - Open Source Password Manager for mobile and desktop AuthPass - Password Manager based on Flutter for all platforms. Keepass 2.x (kdbx 3

AuthPass 1.5k Jan 3, 2023
File manager application

Website ● Discord ● Releases ● Donate ● Documentation File manager application File manager for dahliaOS Written in Flutter Contribute If you're inter

dahliaOS 31 Dec 16, 2022
A cross-platform flutter plugin for C/C++/ObjC crash report via Google Breakpad

quick_breakpad A cross-platform flutter plugin for C/C++/ObjC crash report via Google Breakpad Use breakpad for quick_breakpad_example $CLI_BREAKPAD i

Woodemi Co., Ltd 16 Jul 30, 2022
Yocto meta layer for recipes related to using Google Flutter Engine

meta-flutter Notice: Layer has moved to https://github.com/meta-flutter/meta-flutter. Redirection will be automatic in the next couple of weeks. Yocto

Joel Winarske 46 Dec 4, 2022
My Notes is an app to create simple notes and add 3 levels of tags to them. The uniqueness of the app lies in its design and dark theme

?? My Notes | Simple & Beautiful Note Taking App ?? About The App ?? My Notes is an app to create simple notes and add 3 levels of tags to them. The u

null 4 Apr 27, 2022
A web dashboard that allows you to monitor your Chia farm and sends notifications when blocks are found and new plots are completed through a discord bot. It can link multiple farmers/harvesters to your account.

farmr A web dashboard that allows you to monitor your Chia farm and sends notifications when blocks are found and new plots are completed through a di

Gil Nobrega 261 Nov 10, 2022
Flutter on Windows, MacOS and Linux - based on Flutter Embedding, Go and GLFW.

go-flutter - A package that brings Flutter to the desktop Purpose Flutter allows you to build beautiful native apps on iOS and Android from a single c

null 5.5k Jan 6, 2023
Serverpod is a next-generation app and web server, explicitly built for the Flutter and Dart ecosystem.

Serverpod Serverpod is a next-generation app and web server, explicitly built for the Flutter and Dart ecosystem. It allows you to write your server-s

Serverpod 1k Jan 8, 2023
Suwariyomi means to sit and read. Opposite of Tachiyomi which is to stand and read.

Suwariyomi Suwariyomi means to sit and read. Opposite of Tachiyomi which is to stand and read. Getting Started Install Android Studio (or any IDE you

Woon Eusean 5 Mar 24, 2022
A project that makes use of a Typescript back end and a Flutter web front end to consume the Jira API in order to visualize and interact with issues.

A project that makes use of a Typescript back end and a Flutter web front end to consume the Jira API in order to visualize and interact with issues.

Lucas Coelho 1 Mar 20, 2022
A material theme editor and generator for Flutter to configure and preview the overall visual theme of your material app

A material theme editor and generator for Flutter to configure and preview the overall visual theme of your material app

Joshua 301 Jan 3, 2023
A Flutter package that makes it easy to customize and work with your Flutter desktop app window.

bitsdojo_window A Flutter package that makes it easy to customize and work with your Flutter desktop app window on Windows, macOS and Linux. Watch the

Bits Dojo 607 Jan 4, 2023
Windows95 UI components for Flutter apps. Bring back the nostalgic look and feel of old operating systems with this set of UI components ready to use.

Flutter95 Windows95 UI components for Flutter apps. UNDER CONSTRUCTION Screenshots Components Scaffold95 Scaffold as a Windows95 styled window. Provid

Miguel Beltran 141 Dec 26, 2022
A Javascript engine to use with flutter. It uses quickjs on Android and JavascriptCore on IOS

Flutter JS plugin A Javascript engine to use with flutter. Now it is using QuickJS on Android through Dart ffi and JavascriptCore on IOS also through

Ábner Oliveira 334 Jan 3, 2023
Implements GTK Widgets, themes and titlebar buttons in Flutter. Based on the GNOME HIG

GTK ❤️ Flutter Unofficial implementation of GTK Widgets and libadwaita in Flutter. Based on the GNOME Human Interface Guidelines. NOTE: For getting co

Prateek SU 164 Dec 26, 2022
Flutter widgets and themes implementing the current macOS design language.

macos_ui Flutter widgets and themes implementing the current macOS design language. NOTE: This package depends on the excellent native_context_menu pl

Reuben Turner 1.1k Jan 1, 2023
A Flutter package that makes it easy to customize and work with your Flutter desktop app's system tray.

system_tray A Flutter package that that enables support for system tray menu for desktop flutter apps. on Windows, macOS and Linux. Features: - Modify

AnTler 140 Dec 30, 2022