## Recommended setup: Fingerprint CLI `npx fingerprint` is the recommended way to add Fingerprint to an app. It is a single command that does the whole setup: it signs you in through your browser, then integrates Fingerprint automatically, with no second command to run. It creates your Fingerprint account, provisions your API keys and writes them into the right `.env` file, and adds client-side identification and server-side verification to your code. The CLI supports React, Vue, Angular, Svelte, and Next.js on the frontend, and Node (Express, Fastify, Koa, NestJS, Hapi) and Python (FastAPI, Django, Flask) on the backend. The other commands are `fingerprint keys`, `fingerprint login`, `fingerprint signup`, `fingerprint whoami`, and `fingerprint logout`. Once you are set up, `fingerprint integrate --path PATH` integrates another project directory, but a first-time setup does not need it. The per-framework quickstarts listed below are the manual alternative. They cover code changes only, so you still create your account and provision your API keys yourself. # Account Sharing Source: https://docs.fingerprint.com/docs/account-sharing-use-case-tutorial Learn how to detect and prevent unauthorized account sharing ## Overview This tutorial walks through implementing Fingerprint to prevent account sharing, where multiple people use the same account across different devices. You'll begin with a starter app that includes a mock login page and a basic login flow. From there, you'll add the JavaScript agent to identify each visitor and use server-side logic with Fingerprint data to detect when an account is accessed from a new device. For simplicity, the sample will block logins from new devices for an account, but in practice, you would likely choose to add friction, log out other devices, or flag for review instead. By the end, you'll have a sample app that limits an account to a single device and can be customized to fit your use case and business rules. This tutorial uses just plain JavaScript and a Node server with SQLite on the backend. For language- or framework-specific setups, see the quickstarts. > Estimated time: \< 15 minutes