• Stars
    star
    1,434
  • Rank 32,829 (Top 0.7 %)
  • Language
    Dart
  • License
    BSD 2-Clause "Sim...
  • Created over 4 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

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

Demo Builds

To preview the app you can download from the app store on your device by visiting: https://flutter.gskinner.com/folio/#g-download

Installation

If you're new to Flutter the first thing you'll need is to follow the setup instructions.

Once Flutter is setup, you can use the latest stable channel:

  • Run flutter channel stable
  • Run flutter upgrade

Once you're on dev and desktop is enabled, you're ready to run the app:

  • flutter run -d windows
  • flutter run -d macos
  • flutter run -d linux
  • flutter run -d android
  • flutter run -d ios
  • flutter run -d web

If you re-start your IDE, you should also see a new launch option for your current desktop platform.

Client 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!

More Repositories

1

flutter_vignettes

A collection of fun Flutter experiments, created by gskinner, in partnership with Google.
Dart
4,500
star
2

flutter-wonderous-app

A showcase app for the Flutter SDK. Wonderous will educate and entertain as you uncover information about some of the most famous structures in the world.
Dart
3,910
star
3

flutter-folio

A platform adaptive Flutter app for desktop, mobile and web.
Dart
3,819
star
4

flutter_custom_carousel

A Flutter widget for creating fully custom, animated scrollable lists. It manages all of the tricky logic surrounding scroll interactions and physics, and leaves the visual presentation of items up to you.
Dart
129
star
5

flutter-sized-context

Flutter code extension that provides MediaQuery sizing info directly on the BuildContext instance. Also adds some helper methods for sizing and layout.
Dart
113
star
6

flutter-universal-platform

A web-safe implementation of dart.io.Platforms. Helps avoid the "Unsupported operation: Platform._operatingSystem" runtime error.
Dart
105
star
7

flutter-stats-fl

A simple FPS monitor for Flutter
C++
72
star
8

flutter-defer-pointer

Dart
57
star
9

flutter-adaptive-demo

Dart
48
star
10

flutter-flextras

A collection of Flex widgets (Columns and Rows) with additional functionality.
C++
43
star
11

flutter-mvcs-hello-world

C++
36
star
12

flutter-context-menu

A package to show context menus on right-click or long-press.
Dart
32
star
13

flutter-nav-stack

A simple but powerful path-based navigation router with full web-browser and deeplink support.
Dart
23
star
14

SCSS-Baseline-Type-Utility

CSS
22
star
15

flutter-flippable-box

Dart
22
star
16

flutter-stateful-props

Dart
21
star
17

flutter-focusable-control-builder

Dart
21
star
18

flutter-textstyle-extensions

Syntactic sugar for quickly modifying TextStyles
C++
19
star
19

flutter-integration-test-examples

C++
19
star
20

flutter-extra-alignments

Additional alignments to help make your layouts more readable (TopLeft, TopRight, etc)
Dart
15
star
21

flutter-anchored-popups

Show tooltips and popup menus that are anchored / pinned to another Widget.
Dart
11
star
22

Coasting-on-Cos-Waves

An experiment to showcase the new StageGL functionality in EaselJS
JavaScript
9
star
23

Vexr

A 2D Vector and Behavior Library
JavaScript
8
star
24

camera-2.5d

An EaselJS/Canvas approach to 2.5d
JavaScript
7
star
25

flutter-url-router

An un-opinionated url-based Router for Nav 2.0
C++
7
star
26

flutter-routed-widget-switcher

Declaratively switch child widgets based on the current `Router` location.
Dart
7
star
27

wobble_drag

A single image used with an EaselJS SpriteSheet
HTML
6
star
28

flutter-experiments

Dart
5
star
29

scssBreakpointUtility

CSS
5
star
30

color_swirl

HTML
5
star
31

flutter-gtween

Dart
3
star
32

flutter-navigator-routing-examples

C++
2
star
33

Backbone-history

JavaScript
2
star
34

flutter-home-widget-vignette

Dart
2
star
35

flutter-demo-extending-state

Demonstrates a couple different methods of extending the base State<T> behavior
Dart
1
star
36

Orcastra

JavaScript
1
star