You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Removed the default user account.
* Improved documentation.
* Added some logging of Plaid API requests to store request identifiers (to align with the [Plaid docs][plaid-docs]).
* Removed the Plaid item id from the client (to align with the [Plaid docs][plaid-docs]).
* Removed the Beta label.
[plaid-docs]: https://plaid.com/docs/#storing-plaid-api-identifiers
Copy file name to clipboardExpand all lines: README.md
+19-4Lines changed: 19 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,4 @@
1
-
# Plaid Pattern (Beta)
1
+
# Plaid Pattern
2
2
3
3
![Plaid Pattern client][client-img]
4
4
@@ -8,7 +8,7 @@ This is a reference application demonstrating an end-to-end [Plaid][plaid] integ
8
8
9
9
## Requirements
10
10
11
-
-[Docker][docker] Version 2.0.0.3 (31259) or higher, installedand running
11
+
-[Docker][docker] Version 2.0.0.3 (31259) or higher, installed, running, and signed in
12
12
-[Plaid API keys][plaid-keys] - [sign up][plaid-signup] for a free Sandbox account if you don't already have one
13
13
14
14
## Getting Started
@@ -38,8 +38,16 @@ This is a reference application demonstrating an end-to-end [Plaid][plaid] integ
38
38
All available commands can be seen by calling `make help`.
39
39
40
40
## Architecture
41
+
As a modern full-stack application, Pattern consists of multiple services handling different segments of the stack:
41
42
42
-
For more information about the individual services, see the readmes for the [client][client-readme], [database][database-readme], and [server][server-readme].
43
+
- [`database`][database-readme] runs a [PostgreSQL][postgres] database
44
+
- [`server`][server-readme] runs an application back-end server using [NodeJS] and [Express]
45
+
- [`client`][client-readme] runs a [React]-based single-page web frontend
46
+
- [`ngrok`][ngrok-readme] exposes a [ngrok] tunnel from your local machine to the Internet to receive webhooks
47
+
48
+
We use [Docker Compose][docker-compose] to orchestrate these services. As such, each individual service has its own Dockerfile, which Docker Compose reads when bringing up the services.
49
+
50
+
For more information about the individual services, see their readmes, linked in the list above.
43
51
44
52
## Troubleshooting
45
53
@@ -59,13 +67,20 @@ See [`docs/troubleshooting.md`][troubleshooting].
The client-side code demonstrates a [Plaid Link](https://plaid.com/docs/#integrating-with-link) integration. It is written using [React](https://reactjs.org/) (bootstrapped with [Create React App](https://github.com/facebook/create-react-app)). The app runs on port 3000 by default, although you can modify this in [docker-compose.yml](../docker-compose.yml).
3
+
The Pattern web client is written in JavaScript using [React]. It presents a basic [Link][plaid-link] workflow to the user, as well as a simple dashboard displaying linked accounts and transactions. The app runs on port 3000 by default, although you can modify this in [docker-compose.yml](../docker-compose.yml).
Aside from websocket listeners (see below), all HTTP calls to the Pattern server are defined in `src/services/api.js`.
9
+
10
+
### Instantiating Link
11
+
You'll notice that we don't create a Link instance until the user clicks the Link button. This is because we need information about which user or item to set up Link for before we can create the instance, both for the purposes of setting the necessary callbacks and for letting Plaid know whether we're adding a new item or updating an existing one. Note also that we maintain each individual Link instance indefinitely after creation, so we don't need to repeatedly recreate the same instances for the same users and items. This has a minimal memory footprint relative to the initial load of the Link SDK.
12
+
13
+
### Webhooks and Websockets
14
+
The Pattern server is configured to send a message over a websocket whenever it receives a webhook from Plaid. On the client side have websocket listeners defined in `src/components/Sockets.jsx` that wait for these messages and update data in real time accordingly.
0 commit comments