Liquid
Seamless and highly customizable authentication and user management server for any project. ✨
Liquid is a Docker-based open-source authentication server that supercharges your product development by offering out of the box APIs for features like follow-unfollow, blocking, and banning so that you can focus on just your application logic. 🚀

Think of Liquid like integrating a readymade authentication and user management server with your own codebase. You just boot up Liquid in a docker container with a few configuration files and it is all good to go.
For setting up Liquid, refer to the Setup page.
Quick Start
You should NEVER use the Quickstart for production deployments. For production usage, please follow the Setup page and then refer to the Production Guide.
If you're looking for the quickest and most convenient way to run Liquid without installing manually the dependencies for database and cache by yourself, do the following:
- Run
curl -sSL --insecure https://raw.githubusercontent.com/shrihari-prakash/liquid/main/quickstart/docker-compose.yaml > docker-compose.yaml
curl -sSL --insecure https://raw.githubusercontent.com/shrihari-prakash/liquid/main/quickstart/app-config.service.json > app-config.service.json
curl -sSL --insecure https://raw.githubusercontent.com/shrihari-prakash/liquid/main/quickstart/app-config.static.json > app-config.static.json
- In the
app-config.service.jsonfile, add your frontend origin incors.allowed-originsarray (just the origin, not the redirect URI). - Run
docker-compose up -d.
This is useful if you want to try and evaluate Liquid to see if it fits your needs or to locally develop your apps with Liquid.
Connecting Your Frontend Application to Liquid Quickstart Instance
For Liquid to securely allow your frontend to authenticate, you will need to add your frontend redirect URI to the trusted list.
Nitrogen Configuration
- Login to the Nitrogen admin panel.
- Navigate to the
Applicationstab. - Click the Edit button.
- In the redirect URIs section, add your frontend origin.
- Press Enter.
- Click Save.
Test connectivity
- Open your client application (or Nitrogen at http://localhost:2001) which initiates the login redirect with PKCE parameters (
code_challengeandcode_challenge_method=S256). - Enter the login details on Liquid's authentication page and click Login.
- You are now navigated back to your application with
codeandstateparameters in the URL. - Refer to this section to see how your app exchanges
codeandcode_verifieratPOST /oauth/tokenfor access tokens.
The Quickstart script by default runs in "Demo Mode", which means, an application and a user is already created for you so that you can jump straight into evaluating Liquid with zero configuration. The script also comes with the Nitrogen admin panel preconfigured. You can manage users and permissions by navigating to http://localhost:2001.
Demo user
Username: liquid_demo
Password: liquid_demo
Again, you should NEVER use the Quickstart for production deployments. For production usage, please follow the Setup page and then refer to the Production Guide.
Connecting Your Backend Service to Liquid Quickstart Instance
Refer to this section to find out how to authenticate users connecting to your service using Liquid.
🔐 OAuth 2.0 Core Concepts & Standards
If you are new to OAuth 2.0, Liquid adheres strictly to official IETF standards and RFC specifications. Here are key concepts and official references to help you learn:
- Authorization Code Grant (RFC 6749 § 4.1) — The standard authorization flow for web applications and SPAs (OAuth.net Guide).
- Client Credentials Grant (RFC 6749 § 4.4) — Machine-to-machine server authentication (OAuth.net Guide).
- PKCE - Proof Key for Code Exchange (RFC 7636) — Mandatory security extension for public clients (SPAs and Mobile apps) (OAuth.net Guide).
- Refresh Token Grant (RFC 6749 § 6) — Token renewal without forcing user re-login (OAuth.net Guide).
- OAuth 2.0 for Browser-Based Apps (IETF BCP) — Best Current Practice guidelines for Single Page Applications (SPAs).
📦 Official SDKs & Packages
- liquid-js-sdk: Universal TypeScript/JavaScript SDK for web browsers and Node.js with complete type safety across all Liquid APIs (
liquid.users.*,liquid.admin.*,liquid.client.*,liquid.oauth.*,liquid.roles.*,liquid.system.*,liquid.health.*,liquid.sso.*). - liquid-node-authenticator: Express middleware for token authentication and scope verification.
API Documentation
Get started with the APIs here