# Installer le SDK

> Le paquet @vimine/sdk, ses trois points d’entrée, les prérequis.

URL: https://developers.vimine.network/fr/start/install/

Le SDK officiel est **`@vimine/sdk`** : TypeScript, ESM, **aucune dépendance** (il utilise `fetch` et
WebCrypto). Le point d’entrée navigateur pèse environ 7 kB compressé.

<Tabs syncKey="pkg">
    <TabItem label="npm">
        ```sh
        npm install @vimine/sdk
        ```
    </TabItem>
    <TabItem label="pnpm">
        ```sh
        pnpm add @vimine/sdk
        ```
    </TabItem>
    <TabItem label="yarn">
        ```sh
        yarn add @vimine/sdk
        ```
    </TabItem>
</Tabs>

## Points d’entrée

| Import | Ce qu’il contient | Où |
|---|---|---|
| `@vimine/sdk` | `Vimine` (Se connecter avec Vimine + API membre), `publicApi`, `VimineError`, les types | navigateur ; Node aussi, avec un stockage à vous |
| `@vimine/sdk/react` | `VimineProvider`, `useVimine`, `SignInButton` | React ≥ 18 (dépendance pair facultative) |
| `@vimine/sdk/server` | `VimineServer` (clients confidentiels, `client_credentials`, sandbox) | Node ≥ 18 — jamais dans un navigateur |

```js title="browser"
import { Vimine, publicApi, VimineError } from '@vimine/sdk';
```

```js title="server"
import { VimineServer } from '@vimine/sdk/server';
```

```jsx title="React"
import { VimineProvider, useVimine, SignInButton } from '@vimine/sdk/react';
```

## Prérequis

- **Navigateur** : `fetch`, `crypto.subtle` (WebCrypto) et `sessionStorage`/`localStorage` — tous les navigateurs
  modernes. Les pages doivent être servies en `https` (ou `http://localhost` en développement) : WebCrypto n’est pas
  disponible sur les origines non sécurisées.
- **Node** : 18 ou plus récent (`fetch` et `globalThis.crypto` natifs).
- **Bundler** : n’importe lequel (Vite, webpack, esbuild, …) ou `<script type="module">` avec un bundle à vous. Le
  paquet est uniquement ESM.
- **TypeScript** : les types sont inclus ; aucun `@types/*` à ajouter.

## La première connexion

```js title="app.js"
import { Vimine } from '@vimine/sdk';

const vimine = new Vimine({
    clientId: 'vmc_…',                                          // depuis la console Développeurs
    redirectUri: 'https://www.example.org/vimine/callback',  // enregistrée pour le client
    scopes: ['profile:read', 'membership:read']
});

document.querySelector('#sign-in').addEventListener('click', () => vimine.signIn());
```

```js title="callback.js"
const result = await vimine.handleRedirect();   // échange le code, enregistre la session
if (result) {
    const me = await vimine.me.get();
    console.log(`Bonjour ${me.first_name}`);
}
```

Continuez avec [Se connecter avec Vimine](https://developers.vimine.network/fr/guides/sign-in/) pour le flux complet, la session et la déconnexion.
