Skip to content

powersync-ja/powersync-nodejs-backend-todolist-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PowerSync Node.js Backend: Todo List Demo

Overview

This repo contains a demo Node.js server application which has HTTP endpoints to authorize a PowerSync enabled application to sync data between a client device and a PostgreSQL database.

The endpoints are as follows:

  1. GET /api/auth/token

    • PowerSync uses this endpoint to retrieve a JWT access token which is used for authentication.
  2. GET /api/auth/keys

    • PowerSync uses this endpoint to validate the JWT returned from the endpoint above.
  3. PUT /api/data

    • PowerSync uses this endpoint to sync upsert events that occurred on the client application.
  4. PATCH /api/data

    • PowerSync uses this endpoint to sync update events that occurred on the client application.
  5. DELETE /api/data

    • PowerSync uses this endpoint to sync delete events that occurred on the client application.

Packages

node-postgres is used to interact with the Postgres database when a PowerSync enabled client performs requests to the /api/data endpoint.

jose is used to sign the JWT which PowerSync uses for authorization.

Requirements

This app needs a Postgres instance that's hosted. For a free version for testing/demo purposes, visit Supabase.

Running the app

  1. Clone the repository
  2. Follow the steps outlined in PowerSync Custom Authentication ExampleGenerate a key-pair to get the keys you need for this app. This is an easy way to get started with this demo app. You can use your own public/private keys as well.
  3. Create a new .env file in the root project directory and add the variables as defined in the .env file:
cp .env.template .env
  1. Install dependancies
nvm use
yarn install

Start App

  1. Run the following to start the application
yarn start

This will start the app on http://127.0.0.1:PORT, where PORT is what you specify in your .env file.

  1. Test if the app is working by opening http://127.0.0.1:PORT/api/auth/token/ in the browser

  2. You should get a JSON object as the response to that request

Connecting the app with PowerSync

This process is only designed for demo/testing purposes, and is not intended for production use. You won't be using ngrok to host your application and database.

  1. Download and install ngrok
  2. Run the ngrok command to create a HTTPS tunnel to your local application
ngrok http 8000

This should create the tunnel and a new HTTPS URL should be availible e.g.

ngrok by @inconshreveable                                                                                                                  (Ctrl+C to quit)

Session Status                online
Account                       Michael Barnes (Plan: Free)
Update                        update available (version 2.3.41, Ctrl-U to update)
Version                       2.3.40
Region                        United States (us)
Web Interface                 http://127.0.0.1:4040
Forwarding                    http://your_id.ngrok-free.app -> http://localhost:8000
Forwarding                    https://your_id.ngrok-free.app -> http://localhost:8000

Connections                   ttl     opn     rt1     rt5     p50     p90
                              1957    0       0.04    0.03    0.01    89.93
  1. Open the PowerSync Dashboard and paste the Forwarding URL starting with HTTPS into the Credentials tab of your PowerSync instance e.g.
JWKS URI 
https://your_id.ngrok-free.app/api/auth/keys/

Pay special attention to the URL, it should include the /api/auth/keys/ path as this is used by the PowerSync server to validate tokens.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published