Fwitter is an example application that demonstrates the features and functionality of Fauna.

Related tags

Templates fwitter
Overview

A full introduction to this project can be found in the docs.

This project is an example of how to build a 'real-world' app with highly dynamic data in a serverless fashion using React hooks and FaunaDB. Since FaunaDB was developed by ex-Twitter engineers, a Twitter-like application felt like an appropriately sentimental choice, and we call this serverless baby ‘Fwitter’.

There is a first CSS-tricks article that describes the application in general, explains auth, data modeling and simple queries and brushes over the other features. More articles are coming on the Fauna blog and/or CSS Tricks.

It uses the Fauna Query Language (FQL) and starts with a frontend-only approach that directly accesses the serverless database FaunaDB for data storage, authentication, and authorization.

A few features are still missing and will be covered in future articles, including streaming, pagination, benchmarks, and a more advanced security model with short-lived tokens, JWT tokens, single sign-on (possibly using a service like Auth0), IP-based rate limiting (with Cloudflare workers), e-mail verification (with a service like SendGrid), and HttpOnly cookies.

Prerequisites

This app requires Node.js version 14 (LTS) or later.

Set up the project

This app was created with Create React App. To start using it we need to:

Install npm packages

npm install

Set up the database

To set up the project, go to the FaunaDB Dashboard and sign up.

Once you are in the dashboard, click on New Database, select Classic for the Region Group, fill in a name, and click Save.

You should now be on the "Overview" page of your new database. Next, to manipulate the database from within our setup scripts, we need a key. Click on the Security tab in the left sidebar, then click the New key button.

In the "New key" form, the current database should already be selected. For "Role", leave it as "Admin" and give it a name.

Next, click Save and copy the key secret displayed on the next page. It will not be displayed again.

You now have the option to place it in your environment variables (REACT_APP_LOCAL___ADMIN) via .env.local, we have provided an example file .env.local.example that you can rename. Although the .env.local file is gitignored, make sure not to push your admin key, this key is powerful and meant to stay private. The setup scripts will therefore also ask you the key if you did not place it in your environment vars so you could opt to paste them in then instead.

REACT_APP_LOCAL___ADMIN=<insert your admin key>

We have prepared a few scripts so that you only have to run the following commands to initialize your app, create all collections, and populate your database. The scripts will ask for the admin token that you have created and will give you further instructions.

// run setup, this will create all the resources in your database
// provide the admin key when the script asks for it. 
npm run setup

When this script has finished setting up everything you will receive a new key which will automatically be written in your .env.local file (or create this file if it doesn't exist yet from the example file). This key is the bootstrap key that has very tight permissions (it can only register and login) and will be used to bootstrap our application.

REACT_APP_LOCAL___BOOTSTRAP_FAUNADB_KEY=<insert faunadb bootstrap key>

Populate the database (optional)

We also provide a script that adds some data to the database (accounts, users, fweets, comments, likes, etc..) for you to play around with. It will use or ask for the same admin key.

npm run populate

Once you do, you will get four users to login with:

all with password: 'testtest'

If you do not see a lot on the feed of the user you logged in with, search for another user (type in a letter such as 'b' or 'a') and click the + sign to follow him/her.

Run the project

This project has been created with Create React App and therefore has the same familiar commands:

npm start

to start your application.

Update something in the setup

What if I am experimenting and want to update something? To update User Defined Functions or Roles you can just alter the definition and run npm run setup again. It will verify whether the role/function exists and override it.

One thing that can't be altered just like that are indexes (makes sense of course, they could contain quite some data). In order to just set up from scratch again you can run npm run destroy followed by npm run setup. Note, that since names such as collections and indexes are cached, you will have to wait +-60 secs but we can easily get around that by just removing and adding the complete database. In that case, we would remove our ADMIN key as well which would mean that we have to generate a new one each time. However, if we just create an admin key and use that to add (on setup) and remove (on destroy) a child database, than we can get around that inconvenience. We have provided you with that option. When you add the environment variable 'REACT_APP_LOCAL___CHILD_DB_NAME', the script will create a child database on npm run setup and destroy it on npm run destroy instead of removing all collections/indexes/functions.

Comments
  • Jorislive patch optional region

    Jorislive patch optional region

    When your database was created in the region 'eu' or 'us' specificly the setup won't run, so I've added an optional domain parameter for the setup client.

    wontfix 
    opened by jorislive 5
  • error when build

    error when build

    > react-scripts build
    
    Creating an optimized production build...
    Failed to compile.
    
    Can't find self.__WB_MANIFEST in your SW source.
    
    
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! [email protected] build: `react-scripts build`
    npm ERR! Exit status 1
    

    npm start working fine. I'm using node v12.22.1

    wontfix 
    opened by vuau 4
  • Any Roadmap?

    Any Roadmap?

    Would be great to see this demo evolving frequently, it has a lot of potential.

    Any plans to add these features "streaming, pagination, benchmarks, and a more advanced security model..."

    opened by lobosan 4
  • Update README.md to specify that the Classic Region Group should be used. Update auth.js to include Identify (which is required by the script).

    Update README.md to specify that the Classic Region Group should be used. Update auth.js to include Identify (which is required by the script).

    Current Behavior

    Setup currently fails for two reasons:

    1. If user creates a database in a Region Group other than Classic, the code attempts to communicate to the class endpoint and cannot make use of the user's provided keys.
    2. Identify is not included in auth.js and so setup fails.

    Fix

    1. Update README to state that Classic should be chosen for the Region Group.
    2. Include Identify in auth.js

    Testing

    Region Group Issue:

    1. clone fauna-labs/fwitter
    2. create DB in United States
    3. Follow README to run setup, get an unauthorized error

    Identify Issue:

    1. clone fauna-labs/fwitter
    2. Create DB in Classic
    3. Follow README to run setup, script fails due to Identify missing
    4. Include Identify, and setup completes successfully.
    opened by cleve-fauna 2
  • Remove `Now` from index bindings

    Remove `Now` from index bindings

    Now is not permitted within index bindings. There is disclaimer that the result will not be what is intended, but in fact using Now can cause a runtime error that prevents the index from ever completing.

    https://github.com/fauna-labs/fwitter/blob/fcfc52c0005b4654d7c181aeb86f50a1349dafd1/src/fauna/setup/fweets.js#L139-L146

    Fweets should have a created_at field that can be referred to in the index binding. This is also more correct anyway, since created_at timestamp is better to use than the latest updated time stamp.

    opened by ptpaterson 2
  • Bump react-dropzone from 10.2.2 to 11.3.2

    Bump react-dropzone from 10.2.2 to 11.3.2

    Bumps react-dropzone from 10.2.2 to 11.3.2.

    Release notes

    Sourced from react-dropzone's releases.

    v11.3.2

    11.3.2 (2021-03-26)

    Bug Fixes

    • Check drag event contains files before showing "copy" cursor (ec93425), closes #1042

    v11.3.1

    11.3.1 (2021-02-08)

    Bug Fixes

    • allow validator to be null (6f0e826)

    v11.3.0

    11.3.0 (2021-02-03)

    Features

    • add {validator} for custom validation (ebe2130)

    v11.2.4

    11.2.4 (2020-11-08)

    Bug Fixes

    • add supported browsers via browserslist config and close #630 (5a4ae93)

    v11.2.3

    11.2.3 (2020-10-30)

    Bug Fixes

    • update internal state when maxFiles prop changes and close #1025 (bb42b94)

    v11.2.2

    11.2.2 (2020-10-28)

    Bug Fixes

    • set isDragReject true when maxFiles rejects (#1020) (b4a1ac6)

    v11.2.1

    11.2.1 (2020-10-23)

    ... (truncated)

    Commits
    • ec93425 fix: Check drag event contains files before showing "copy" cursor
    • 6f0e826 fix: allow validator to be null
    • ebe2130 feat: add {validator} for custom validation
    • 5a4ae93 fix: add supported browsers via browserslist config and close #630
    • c4cdc2a docs: add doka integration
    • bb42b94 fix: update internal state when maxFiles prop changes and close #1025
    • b4a1ac6 fix: set isDragReject true when maxFiles rejects (#1020)
    • 96e7c15 ci: add gitpod config (#1024)
    • b8d5245 fix(deps): update file-selector and close #1022
    • 1b1177d docs: add default props to Dropzone component for react-docgen (#1015)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    dependencies 
    opened by dependabot[bot] 2
  • Bump @testing-library/user-event from 7.2.1 to 13.2.0

    Bump @testing-library/user-event from 7.2.1 to 13.2.0

    Bumps @testing-library/user-event from 7.2.1 to 13.2.0.

    Release notes

    Sourced from @​testing-library/user-event's releases.

    v13.2.0

    13.2.0 (2021-07-17)

    Features

    • add keydownBehavior for ArrowLeft and ArrowRight on <textarea> (#686) (f8f00d4)

    v13.1.9

    13.1.9 (2021-05-12)

    Bug Fixes

    • keyboard: do not set document selection when typing on <input> (#679) (f2fec13)

    v13.1.8

    13.1.8 (2021-04-29)

    Bug Fixes

    • keyboard: maintain cursor position on controlled React input (#665) (03f38b9)

    v13.1.7

    13.1.7 (2021-04-29)

    Bug Fixes

    v13.1.6

    13.1.6 (2021-04-28)

    Bug Fixes

    • keyboard: add link to README in key descriptor error (#666) (ebc90d8)

    v13.1.5

    13.1.5 (2021-04-19)

    Bug Fixes

    • relax typing and throw error for unsupported elements (#649) (dc13160)

    v13.1.4

    13.1.4 (2021-04-18)

    ... (truncated)

    Commits
    • f8f00d4 feat: add keydownBehavior for ArrowLeft and ArrowRight on \<textarea> (#...
    • ffba2df chore: upgrade to Jest 27 (#693)
    • 4029441 chore: Don't test with node 10 or 15 (#685)
    • cd3baaf docs: add sydneyjodon-wk as a contributor (#680)
    • f2fec13 fix(keyboard): do not set document selection when typing on \<input> (#679)
    • 224b207 chore: continue testing on Node 15 (#663)
    • 03f38b9 fix(keyboard): maintain cursor position on controlled React input (#665)
    • 180a3d3 docs: add codepath2019 as a contributor (#673)
    • de09b1b fix(upload): apply changeInit correctly (#670)
    • 557caaf docs: add sydneyjodon-wk as a contributor (#671)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump sass from 1.34.1 to 1.35.2

    Bump sass from 1.34.1 to 1.35.2

    Bumps sass from 1.34.1 to 1.35.2.

    Release notes

    Sourced from sass's releases.

    Dart Sass 1.35.2

    To install Sass 1.35.2, download one of the packages below and add it to your PATH, or see the Sass website for full installation instructions.

    Changes

    • Potentially breaking bug fix: Properly throw an error for Unicode ranges that have too many ?s after hexadecimal digits, such as U+12345??.

    • Potentially breaking bug fix: Fixed a bug where certain local variable declarations nested within multiple @if statements would incorrectly override a global variable. It's unlikely that any real stylesheets were relying on this bug, but if so they can simply add !global to the variable declaration to preserve the old behavior.

    • Potentially breaking bug fix: Fix a bug where imports of root-relative URLs (those that begin with /) in @import rules would be passed to both Dart and JS importers as file: URLs.

    • Properly support selector lists for the $extendee argument to selector.extend() and selector.replace().

    • Fix an edge case where @extend wouldn't affect a selector within a pseudo-selector such as :is() that itself extended other selectors.

    • Fix a race condition where meta.load-css() could trigger an internal error when running in asynchronous mode.

    Dart API

    • Use the @internal annotation to indicate which Value APIs are available for public use.

    See the full changelog for changes in earlier releases.

    Dart Sass 1.35.1

    To install Sass 1.35.1, download one of the packages below and add it to your PATH, or see the Sass website for full installation instructions.

    Changes

    • Fix a bug where the quiet dependency flag didn't silence warnings in some stylesheets loaded using @import.

    See the full changelog for changes in earlier releases.

    Dart Sass 1.35.0

    To install Sass 1.35.0, download one of the packages below and add it to your PATH, or see the Sass website for full installation instructions.

    Changes

    • Fix a couple bugs that could prevent some members from being found in certain files that use a mix of imports and the module system.

    • Fix incorrect recommendation for migrating division expressions that reference namespaced variables.

    ... (truncated)

    Changelog

    Sourced from sass's changelog.

    1.35.2

    • Potentially breaking bug fix: Properly throw an error for Unicode ranges that have too many ?s after hexadecimal digits, such as U+12345??.

    • Potentially breaking bug fix: Fixed a bug where certain local variable declarations nested within multiple @if statements would incorrectly override a global variable. It's unlikely that any real stylesheets were relying on this bug, but if so they can simply add !global to the variable declaration to preserve the old behavior.

    • Potentially breaking bug fix: Fix a bug where imports of root-relative URLs (those that begin with /) in @import rules would be passed to both Dart and JS importers as file: URLs.

    • Properly support selector lists for the $extendee argument to selector.extend() and selector.replace().

    • Fix an edge case where @extend wouldn't affect a selector within a pseudo-selector such as :is() that itself extended other selectors.

    • Fix a race condition where meta.load-css() could trigger an internal error when running in asynchronous mode.

    Dart API

    • Use the @internal annotation to indicate which Value APIs are available for public use.

    1.35.1

    • Fix a bug where the quiet dependency flag didn't silence warnings in some stylesheets loaded using @import.

    1.35.0

    • Fix a couple bugs that could prevent some members from being found in certain files that use a mix of imports and the module system.

    • Fix incorrect recommendation for migrating division expressions that reference namespaced variables.

    JS API

    • Add a quietDeps option which silences compiler warnings from stylesheets loaded through importers and load paths.

    • Add a verbose option which causes the compiler to emit all deprecation warnings, not just 5 per feature.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump react-dropzone from 10.2.2 to 11.3.4

    Bump react-dropzone from 10.2.2 to 11.3.4

    Bumps react-dropzone from 10.2.2 to 11.3.4.

    Release notes

    Sourced from react-dropzone's releases.

    v11.3.4

    11.3.4 (2021-06-25)

    Bug Fixes

    • add the validator as dependency to onDropCb (4e625d2)

    v11.3.3

    11.3.3 (2021-06-25)

    Bug Fixes

    • typings: use generics for getRootProps and getInputProps (27243bc)

    v11.3.2

    11.3.2 (2021-03-26)

    Bug Fixes

    • Check drag event contains files before showing "copy" cursor (ec93425), closes #1042

    v11.3.1

    11.3.1 (2021-02-08)

    Bug Fixes

    • allow validator to be null (6f0e826)

    v11.3.0

    11.3.0 (2021-02-03)

    Features

    • add {validator} for custom validation (ebe2130)

    v11.2.4

    11.2.4 (2020-11-08)

    Bug Fixes

    • add supported browsers via browserslist config and close #630 (5a4ae93)

    v11.2.3

    11.2.3 (2020-10-30)

    ... (truncated)

    Commits
    • 4e625d2 fix: add the validator as dependency to onDropCb
    • fcacd74 chore: use initial state when reset state
    • 27243bc fix(typings): use generics for getRootProps and getInputProps
    • ec93425 fix: Check drag event contains files before showing "copy" cursor
    • 6f0e826 fix: allow validator to be null
    • ebe2130 feat: add {validator} for custom validation
    • 5a4ae93 fix: add supported browsers via browserslist config and close #630
    • c4cdc2a docs: add doka integration
    • bb42b94 fix: update internal state when maxFiles prop changes and close #1025
    • b4a1ac6 fix: set isDragReject true when maxFiles rejects (#1020)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump @testing-library/react from 11.2.7 to 12.0.0

    Bump @testing-library/react from 11.2.7 to 12.0.0

    Bumps @testing-library/react from 11.2.7 to 12.0.0.

    Release notes

    Sourced from @​testing-library/react's releases.

    v12.0.0

    12.0.0 (2021-06-23)

    Bug Fixes

    Features

    BREAKING CHANGES

    v12.0.0-alpha.2

    12.0.0-alpha.2 (2021-06-13)

    Bug Fixes

    v12.0.0-alpha.1

    12.0.0-alpha.1 (2021-06-12)

    Features

    BREAKING CHANGES

    • node 10 is no longer supported. It reached its end-of-life on 30.04.2021.

    v11.2.8-alpha.1

    11.2.8-alpha.1 (2021-06-08)

    Bug Fixes

    • Bump testing-library/dom to v8 alpha (#923) (770246e)
    Commits
    • 6e6bf85 feat: Bump @​testing-library/dom
    • 2e8dc03 Merge branch 'main' into alpha-release
    • 05c7421 fix: Update @​testing-library/dom (#931)
    • 42dad78 feat: Drop support for node 10 (#930)
    • c1878a9 test: Ignore React 18 legacy root deprecation warnings (#929)
    • 487eb85 test: Ignore React 18 legacy root deprecation warnings (#928)
    • 7957355 docs: add anpaopao as a contributor (#917)
    • c1a931d chore: Bump kcd-scripts to 11.x (#921)
    • 770246e fix: Bump testing-library/dom to v8 alpha (#923)
    • 875ee5b chore: Don't test with node 15 (#922)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump sass from 1.34.1 to 1.35.1

    Bump sass from 1.34.1 to 1.35.1

    Bumps sass from 1.34.1 to 1.35.1.

    Release notes

    Sourced from sass's releases.

    Dart Sass 1.35.1

    To install Sass 1.35.1, download one of the packages below and add it to your PATH, or see the Sass website for full installation instructions.

    Changes

    • Fix a bug where the quiet dependency flag didn't silence warnings in some stylesheets loaded using @import.

    See the full changelog for changes in earlier releases.

    Dart Sass 1.35.0

    To install Sass 1.35.0, download one of the packages below and add it to your PATH, or see the Sass website for full installation instructions.

    Changes

    • Fix a couple bugs that could prevent some members from being found in certain files that use a mix of imports and the module system.

    • Fix incorrect recommendation for migrating division expressions that reference namespaced variables.

    JS API

    • Add a quietDeps option which silences compiler warnings from stylesheets loaded through importers and load paths.

    • Add a verbose option which causes the compiler to emit all deprecation warnings, not just 5 per feature.

    See the full changelog for changes in earlier releases.

    Changelog

    Sourced from sass's changelog.

    1.35.1

    • Fix a bug where the quiet dependency flag didn't silence warnings in some stylesheets loaded using @import.

    1.35.0

    • Fix a couple bugs that could prevent some members from being found in certain files that use a mix of imports and the module system.

    • Fix incorrect recommendation for migrating division expressions that reference namespaced variables.

    JS API

    • Add a quietDeps option which silences compiler warnings from stylesheets loaded through importers and load paths.

    • Add a verbose option which causes the compiler to emit all deprecation warnings, not just 5 per feature.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Containers for spinning up the demo would be awesome

    Containers for spinning up the demo would be awesome

    It would be great to be able to spin up containers via Docker or Docker Compose and have it running out of the box without the need to have node or any npm's installed locally. I think this applies for al examples.

    This might be helfpul: https://btholt.github.io/complete-intro-to-containers/multi-stage-builds

    opened by amalic 0
  • Fixed order of arguments in If Statements

    Fixed order of arguments in If Statements

    Current Issue

    The IF statements on a few files seem to have the arguments in the wrong order and I've only made the change in the setup/accounts.js file to confirm that I've understood it correctly before running with the changes to the rest of the files.

    Proposed Fix

    As I understand it, the If statement works as follows: If(condition, true, false)

    In that case, when we are deleting a collection or index, we're checking if it exists so:

    // In PseudoCode
    If(Collection Exists, Delete it, Otherwise return true)
    
    // Or, in FQL
    If(Exists(Collection('accounts')), Delete(Collection('accounts')), true)
    

    Other Comments

    The way it's currently stated in the files, nothing will be deleted since when the collection or index exists, it simply returns true.

    opened by richardhaddadau 0
  • Code isn't aware of region groups

    Code isn't aware of region groups

    The documentation should either specify that the database needs to be created in Classic or the code needs to be refactored to be region group aware. It probably should be part of the setup process (or auto determined by the client somehow by interrogating the key). Thoughts on approach? I could take a stab at fixing.

    opened by sujal 1
Owner
Fauna Labs
Experiments, proofs of concept, and other code that is not quite production-ready.
Fauna Labs
Api Call Check flutter - A new Flutter project that demonstrates api calling and displays them in a scrollable list

api_fetch A new Flutter project that demonstrates api calling and displays them

Babish Shrestha 0 Jan 2, 2022
The Flutter app demonstrates displaying data in a weekly format.

Flutter weekly chart The Flutter app demonstrates displaying data in a weekly format. I came across this kind of screen in the app that I have been wo

BenBoonya 27 Jan 2, 2023
Demonstrates BLoC pattern in Flutter

bloc_test A real-world example of using the BLoC pattern in Flutter. This app features a searchable list of users and demonstrates an elegant way to k

First Floor Software 1 Jul 1, 2019
This project demonstrates the use of the new, in Flutter 1.20

Know where you drag & drop! This project demonstrates the use of the new, in Flutter 1.20, onAcceptWithDetails callback on DragTarget. It enables you

Daniel Iglesia 18 May 19, 2021
Demonstrates how to use the pdftron flutter plugin

read_pdf_and_edit_with_pdftron_package Demonstrates how to use the pdftron_flutter plugin. Getting Started This project is a starting point for a Flut

Ahmed Abdelkader Khedr 0 Jan 16, 2022
Pokedex-Flutter - Pokedex demonstrates modern Flutter development with GetX, Hive, Flow, Adaptive/Responsive Design

Pokedex-Flutter Pokedex demonstrates modern Flutter development with GetX, Hive,

Khoujani 3 Aug 17, 2022
Demonstrates how to use the awesome_notifications plugin

awesome_notifications_example Demonstrates how to use the awesome_notifications plugin. Getting Started This project is a starting point for a Flutter

null 1 Jun 18, 2022
This is an auction application just like eBay. Using firebase as the backend for signup & sign-in functionality. In addition to that, it's a two pages application with user bid in input and count down view.

Nilam This is an auction application just like eBay. Using firebase as the backend for signup & sign-in functionality. In addition to that, it's a two

Md. Siam 5 Nov 9, 2022
A Todo app with full fledge functionality and Awesome Look and feel.

to_do A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this is

Naveed kaimkhani 4 Aug 5, 2022
Lottie-package-example-Flutter - A simple example about lottie package in Flutter

Lottie Package example - Flutter ScreenShot ⚠️ Essential Packages lottie: ^1.2.1

AmirHossein Bayat 3 Dec 7, 2022
Smooth-Page-Indicator-Example-Flutter - A simple example about smooth page indicator in Flutter

Smooth Page Indicator Example - Flutter Screenshots ⚠️ Essential Packages smooth

AmirHossein Bayat 6 Dec 7, 2022
An online learning application with all needed features implemented

ELEARN An online learning application: completely functional with payment systems and firebase added. Overview This application has been developed to

null 1 Nov 4, 2021
Flutter Control is complex library to maintain App and State management. Library merges multiple functionality under one hood. This approach helps to tidily bound separated logic into complex solution.

Flutter Control is complex library to maintain App and State management. Library merges multiple functionality under one hood. This approach helps to

Roman Hornak 23 Feb 23, 2022
A Stable GeoFence Library - A flutter project to provide Geo Fence functionality in Android and IOS

A flutter project to provide Geo Fence functionality in Android and IOS Getting Started Android In your AndroidManifest.xml

TARIQUE KHAN 8 Nov 15, 2022
Allows send emails from flutter using native platform functionality.

flutter_email_sender Allows send emails from flutter using native platform functionality. In android it opens default mail app via intent. In iOS MFMa

Tautvydas Šidlauskas 107 Jan 3, 2023
Live News App Using Rest API with Searching Functionality

News App Flutter A Simple News App built with Flutter. In this app, there is a Home page, which will display top news from newsapi.org. News categorie

Jay Gajjar 146 Dec 30, 2022
A TextField flutter package with tagging functionality.

Flutter Tagging A flutter package with tagging or multi-select functionality. Useful for adding Tag or Label Selection Forms. List<Language> _selected

Sarbagya Dhaubanjar 149 Sep 6, 2022
Dart package to support Wake-on-LAN functionality

wake_on_lan Dart library package to easily send Wake-on-LAN magic packets to devices on your local network. Getting Started wake_on_lan has three core

Jagandeep Brar 3 Oct 24, 2022
Searchhelperexample - SearchHelper - code wrapper for searching functionality

Overview SearchHelper is code wrapper for searching functionality developed by D

Osama Qureshi 3 Dec 19, 2022