open-index/open-npm huggingface dataset:
npm package: @loluweb/create-next-app
Description: Générateur de projet Next.js 15 moderne avec options dynamiques (zod, pino, etc.).
Author: Julien Pierrat-Labolle
Latest version: 1.0.22

# 🚀 create-mon-next-app

[![npm version](https://img.shields.io/npm/v/@loluweb/create-next-app?color=crimson&logo=npm)](https://www.npmjs.com/package/@loluweb/create-next-app)
[![GitLab CI](https://gitlab.loluweb.fr/loluweb-public/create-next-app/badges/main/pipeline.svg)](https://gitlab.loluweb.fr/loluweb-public/create-next-app/-/pipelines)

Générateur de projet Next.js moderne pour Loluweb, avec options dynamiques comme Zod, Pino, etc.

---

## ✨ Pourquoi ce CLI ?

Ce projet vous permet de démarrer rapidement un projet Next.js 15 avec une base solide et optionnelle :

- Tailwind CSS
- shadcn/ui
- Prisma
- BetterAuth
- options dynamiques (`--with zod`, `--with pino`, etc.)

---

## ⚡️ Utilisation rapide

### Projet minimal

```bash
npx @loluweb/create-next-app mon-app
```

### Projet avec options

```bash
npx @loluweb/create-next-app mon-app --with zod,pino
```

---

## 🧰 Options disponibles

| Option        | Description                                                    |
|---------------|----------------------------------------------------------------|
| `--with zod`  | Ajoute **Zod**, `react-hook-form` et `@hookform/resolvers`     |
| `--with pino` | Ajoute **Pino** et **Pino Pretty** pour les logs structurés    |

📌 Les options sont **combinables** :

```bash
npx @loluweb/create-next-app mon-app --with zod,pino
```

---

## 📆 Ce qui est généré

- Structure `app/` (routing moderne Next.js)
- Authentification BetterAuth préconfigurée
- Prisma avec exemple de modèle
- Tailwind CSS + shadcn/ui intégré
- Dépendances optionnelles installées dynamiquement
- Configuration minimaliste, propre et évolutive

---

## 💠 Pour développer le CLI

```bash
pnpm install
pnpm dev
```

Le CLI est dans `bin/index.js`.  
Il utilise `prompts`, `chalk`, `boxen`, `minimist`, et `child_process`.

---

## 🥪 Pour tester localement

```bash
pnpm link
npx @loluweb/create-next-app mon-app --with zod,pino
```

---

## 📔 Licence

MIT

---

## 👤 Auteur

**Julien Pierrat-Labolle / Loluweb**  
🌐 [https://loluweb.fr](https://loluweb.fr)  
📧 <julien.pierrat-labolle@loluweb.fr>

---

## 🔗 Ressources associées

- Template utilisé : [template-nextjs-loluweb-v1](https://gitlab.loluweb.fr/loluweb-public/template-nextjs-loluweb-v1)
- Documentation du template : [Voir les features](https://gitlab.loluweb.fr/loluweb-public/template-nextjs-loluweb-v1/-/blob/4563b7c6eec656f98858ac4f861e5b6eb3bf20d6/README.md)
npm package: @lolwtf/eslint-config-eslint-react
Description: ESLint React configuration
Author: gunnarx2
Latest version: 1.0.0

# `@lolwtf/eslint-react`

[![lerna](https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg)](https://lerna.js.org/)
[![npm version](https://img.shields.io/npm/v/@lolwtf/eslint-config-eslint-react.svg)](https://www.npmjs.com/package/@lolwtf/eslint-config-eslint-react)
[![npm license](https://img.shields.io/npm/l/@lolwtf/eslint-config-eslint-react)](https://www.npmjs.com/package/@lolwtf/eslint-config-eslint-react)

Extendable [ESLint](https://eslint.org/) configuration.

## Installation

```shell
yarn add @lolwtf/eslint-config-eslint-react \
  @lolwtf/prettier@^1.0.0 \
  @calm/eslint-plugin-react-intl@^1.4.1 \
  @typescript-eslint/eslint-plugin@^4.0.0 \
  @typescript-eslint/parser@^4.0.0 \
  babel-eslint@^10.0.0 \
  eslint@^7.5.0 \
  eslint-config-airbnb@^18.1.0 \
  eslint-config-prettier@^8.3.0 \
  eslint-config-react-app@^6.0.0 \
  eslint-plugin-babel@^5.3.0 \
  eslint-plugin-cypress@^2.11.1 \
  eslint-plugin-flowtype@^5.2.0 \
  eslint-plugin-import@^2.22.0 \
  eslint-plugin-jsx-a11y@^6.3.1 \
  eslint-plugin-prettier@^3.4.0 \
  eslint-plugin-react@^7.21.5 \
  eslint-plugin-react-hooks@^4.2.0 \
  typescript@^4.1.5 -D
```

### With Create React App

```shell
yarn add @lolwtf/eslint-config-eslint-react \
  @lolwtf/prettier@^1.0.0 \
  @calm/eslint-plugin-react-intl@^1.4.1 \
  eslint-config-airbnb@^18.1.0 \
  eslint-config-prettier@^8.3.0 \
  eslint-plugin-babel@^5.3.0 \
  eslint-plugin-cypress@^2.11.1 \
  eslint-plugin-prettier@^3.4.0 \
  typescript@^4.1.5 -D
```

## Usage

Extend `@lolwtf/eslint-react` in the ESLint configuration. Also make sure to setup and install [@lolwtf/prettier](https://github.com/gunnarx2/lolwtf/tree/master/packages/prettier) and its peer dependencies.

```javascript
module.exports = {
  extends: ['@lolwtf/eslint-react']
};
```
npm package: @lolwtf/prettier
Description: Prettier configuration
Author: gunnarx2
Latest version: 1.0.0

# `@lolwtf/prettier`

[![lerna](https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg)](https://lerna.js.org/)
[![npm version](https://img.shields.io/npm/v/@lolwtf/prettier.svg)](https://www.npmjs.com/package/@lolwtf/prettier)
[![npm license](https://img.shields.io/npm/l/@lolwtf/prettier)](https://www.npmjs.com/package/@lolwtf/prettier)

Configuration for [Prettier](https://prettier.io/).

## Installation

```shell
yarn add @lolwtf/prettier prettier@^2.0.5 -D
```

## Usage

Require `@lolwtf/prettier` in the Prettier configuration.

```javascript
module.exports = require('@lolwtf/prettier');
```
npm package: @lolwtf/stylelint
Description: Stylelint configuration
Author: gunnarx2
Latest version: 1.0.0

# `@lolwtf/stylelint`

[![lerna](https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg)](https://lerna.js.org/)
[![npm version](https://img.shields.io/npm/v/@lolwtf/stylelint.svg)](https://www.npmjs.com/package/@lolwtf/stylelint)
[![npm license](https://img.shields.io/npm/l/@lolwtf/stylelint)](https://www.npmjs.com/package/@lolwtf/stylelint)

Extendable [Stylelint](https://stylelint.io/) configuration.

## Installation

```shell
yarn add @lolwtf/stylelint \
  @lolwtf/prettier@^1.0.0 \
  stylelint@^13.13.0 \
  stylelint-config-prettier@^8.0.2 \
  stylelint-config-sass-guidelines@^8.0.0 \
  stylelint-prettier@^1.2.0 -D
```

## Usage

Extend `@lolwtf/stylelint` in the Stylelint configuration. Also make sure to setup and install [@lolwtf/prettier](https://github.com/gunnarx2/lolwtf/tree/master/packages/prettier) and its peer dependencies.

```javascript
module.exports = {
  extends: '@lolwtf/stylelint'
};
```
npm package: @lombard.finance/sdk-common
Description: Shared utilities and types for the Lombard SDK packages
Latest version: 3.5.0

# @lombard.finance/sdk-common

Shared utilities and types used internally by the [Lombard SDK](https://github.com/lombard-finance/sdk) packages.

## What's included

- Environment configuration (`Env`, chain definitions)
- Provider interfaces and abstractions
- Bitcoin output script generation utilities
- Chain service abstractions

## Usage

This package is an internal dependency of `@lombard.finance/sdk`, `@lombard.finance/sdk-solana`, `@lombard.finance/sdk-starknet`, and `@lombard.finance/sdk-sui`. You typically do not need to install it directly.

```bash
npm install @lombard.finance/sdk-common
```

## License

MIT
npm package: @lombard.finance/sdk-sui
Description: Sui integration for the Lombard SDK - stake BTC and manage LBTC on Sui
Latest version: 1.1.1

# @lombard.finance/sdk-sui

The Lombard's SDK SUI package provides a set of functions that allow interacting with the Lombard protocol and its features on SUI.

## Installation

```bash
npm install @lombard.finance/sdk @lombard.finance/sdk-sui
```

## Usage

### Generating a BTC deposit address

Similar to the EVM SDK (`@lombard.finance/sdk`) the generation of the deposit address requires a signature.
To successfully generate a deposit address run `signLbtcDestinationAddrSui` and then use the generated signature as a parameter of the EVM SDK's `generateDepositBtcAddress`.

```javascript

const { signature } = await signLbtcDestinationAddrSui({
    // The Sui chain id
    chainId: SUI_MAINNET_CHAIN,
    // The Sui wallet provider, see `@wallet-standard/base`
    wallet,
    // The wallet account, see `@wallet-standard/core`
    account,
});

const depositAddress = await generateDepositBtcAddress({
    // The connected address
    address,
    // The chosen Solana chain (network) - prefixed with `solana:`
    chainId: SUI_MAINNET_CHAIN,
    // The generated signature:
    signature,
    // Optional env
    env: Env.prod,
    // Optional partnerId
    partnerId,
}),

```

### Claiming LBTC

This operation mints the deposited amount of BTC into LBTC and transfers that
to the provided recipient address.

```javascript
const { digest } = await  claimLBTC({
    // The Sui chain id
    chainId: SUI_MAINNET_CHAIN,
    // The Sui wallet provider, see `@wallet-standard/base`
    wallet,
    // The raw paylod from a deposit, obtained from `getDepositsByAddress`
    payload,
    // The proof of a deposit, obtained from `getDepositsByAddress
    proof,
    // The wallet account, see `@wallet-standard/core`
    walletAccount,
    // The Sui client, see @mysten/sui/client
    client,
    // Optional env
    env = Env.prod,
});
```

### Unstaking LBTC

This operation burns given amount of LBTC and initiates transfer of BTC to the
given BTC address.

```javascript
const { digest } = await unstakeLBTC({
    // The Sui chain id
    chainId,
    // The Sui wallet provider, see `@wallet-standard/base`
    wallet,
    // The wallet account, see `@wallet-standard/core`
    walletAccount,
    // The Sui client, see @mysten/sui/client
    client,
    // The BTC destination address
    btcAddress,
    // The amount of LBTC to unstake, e.g. BigNumber(1.2)
    amount,
    // Optional env
    env = Env.prod,
});
```
npm package: @lomelidev/bitso-api
Description: Node.js Bitso Client
Author: Miguel Lomeli
Latest version: 1.0.1

# Bitso-Node

[![N|Solid](https://lomeli.io/assets/img/logo.png)](https://lomeli.io)

`npm install @lomelidev/bitso-api`

A Node.js API Wrapper for the [Bitso REST API](https://bitso.com/api_info). Please refer to [their documentation](https://bitso.com/api_info) for the responses and parameters.

```javascript
var BitsoNode = require("@lomelidev/bitso-api");
// Key and Secret are only necessary if you use the Private REST API
var bitsoClient = new BitsoNode({
  key: "1234",
  secret: "secret"
});

bitsoClient.public.availableBooks().then(books => {
  console.log(books.prices);
});
```

##How to Use

```javascript
const BitsoNode = require("@lomelidev/bitso-api");

const client = new BitsoNode({
  key: "KEY",
  secret: "SECRET"
});

// Public API
client.public
  .ticker({
    book: BitsoNode.exchanges.MXN_BTC
  })
  .then(res => console.log(res))
  .catch(err => console.log(err));

// Private API
client.private
  .accountStatus()
  .then(res => console.log(res))
  .catch(err => console.log(err));
```

To use private API methods that move any currency or change account
information you need to create the API client with the `authorizeMovements` parameter ser to true.

(REMEMBER TO USE AT YOUR OWN RISK!)

```javascript
const BitsoNode = require("@lomelidev/bitso-api");

const client = new BitsoNode({
  key: "KEY",
  secret: "SECRET",
  authorizeMovements: true
});

client.private
  .placeOrder({
    book: BitsoNode.exchanges.BTC_MXN,
    side: "buy",
    type: "market",
    minor: "10000"
  })
  .then(res => console.log(res))
  .catch(err => console.log(err));
```

# License

The MIT License (MIT)

Copyright (c) 2020 Miguel Lomeli

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
npm package: @lomelidev/react-native-splash
Description: Library for an animated splash.
Author: Miguel Lomeli
Latest version: 1.0.0

# react-native-splash

[![N|Solid](https://lomeli.io/assets/img/logo.png)](https://lomeli.io)



## Introducción
Es un paquete para al abrir la aplicacion carge un splash con animacion

## Instalación

Instalar desde npm:

```bash
npm i @lomelidev/react-native-splash -s
```

Luego debemos importar el paquete a nuestro proyecto

```bash
import Splash from '@lomelidev/react-native-splash';
```

Una vez que lo importemos ahora si podemos empezar a trabajar con el.

## En nuestra app lo mandamos a llamar



```js
import 'react-native-gesture-handler';
import React, {useEffect, useState} from 'react';
import { StyleSheet, Text, View } from 'react-native';
import Splash from '@lomelidev/react-native-splash';

function loadingWait() {
  const [isLoading, setLoading] = useState(false);
  useEffect(() => {
    setLoading(true);
    setTimeout(() => {
      setLoading(false);
    }, 2000);
  }, []);
  return {isLoading};
}

export default function App() {
  const {isLoading} = loadingWait();
  return isLoading ? (
    <Splash />
  ) : (
    <View style={styles.container}>
      <Text>Open up App.tsx to start working on your app H3ola Rodo3!</Text>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
});
```

Lo que acabamos de hacer es llamar nuestro splash y poner un tiempo de carga. al finalizar el tiempo de carga ya carga la aplicacion normalmente.

--Nota: assets/img/splash.png , es la ruta donde se debe encontrar la imagen del splash , crea un alias "assets": ["./assets"] para poder usarlo.



## Errores y contribuciones

Para un error escribir directamente el problema en github issues o enviarlo
al correo miguel@lomeli.io. Si desea contribuir con el proyecto por favor enviar un email.

#Miguel Lomeli , #MiguelLomeli , #Lomeli , #Toopago , #React Native , #React , #Splash
npm package: @lomelidev/react-native-toopago-ui
Description: The ui for toopago
Author: Marco
Latest version: 1.1.11

# react-native-toopago-ui

Paquete de componentes ui para Toopago.

## Instalacion

Primero necesitas instalar el paquete principal

```sh
npm install @lomelidev/react-native-toopago-ui
```

Despues de eso agregar `react-native-svg` para que los svg se muestren correctamente en los componentes, de lo contrario dara un error.

```sh
npm install react-native-svg
```

## Uso
Antes de usar los componentes es necesario usar el HOC provider
```
import { ThemeProvider } from '@lomelidev/react-native-toopago-ui';
import App from "./your/route";


export default = () => (
    <ThemeProvider>
        <App />
    </ThemeProvider>
)
```

## Input Component
Un componente que hace mas facil el manejo de inputs. Recibe todas las props del TextInput de React Native y agrega unas cuantas:

 * error (optional) Una string para ser mostrada dentro de la caja input.
 * children (optional) Render prop que manda en sus props el color actual del input.
 * containerStyle (optional) Estilos para el contenedor (View)
 * icon? (optional)  Render prop para mostrar un icono dentro del Input.

 ### Ejemplo
 ```
import React, {useEffect} from "react";
import { Input, LockIcon } from '@lomelidev/react-native-toopago-ui';
import { Animated } from "react-native";

const Component = ()=> {
    const [error, setError] = useState('Campo invalido');
    //Activa el focus del input en el primer render.
    const inputRef = useRef();
    useEffect(()=> {
        inputRef && inputRef.current.getNode().focus()
    }, [])
    return ( 
        <Input
            placeholder="Some value"
            ref={inputRef}
            error={error}
            icon={({ color }) => <LockIcon color={color} />}
        >
              {({ color }) => (
                <Animated.Text style={[{ color }]}>Hello there</Animated.Text>
              )}
        </Input>
)}
 ```
 - Input con error 
 - ![Image] (https://user-images.githubusercontent.com/45505161/82934843-c553eb00-9f51-11ea-811b-977b049f520b.png)
- Input sin foco
  ![Image] (https://user-images.githubusercontent.com/45505161/82934967-f92f1080-9f51-11ea-8f61-51b1403e01f1.png)
- Input con foco
![!Image] (https://user-images.githubusercontent.com/45505161/82935039-1237c180-9f52-11ea-81b0-94935ab559c9.png)
npm package: @lomi./embed
Description: Lomi Embedded Checkout SDK
Author: lomi.
Latest version: 0.1.1

# @lomi/embed

Lomi Embedded Checkout SDK - Add a complete checkout experience to your site.

## Installation

```bash
npm install @anthropic/lomi-embed
```

## Quick Start

### Modal Mode (Default)

Opens checkout as a centered overlay modal:

```javascript
import { loadLomiCheckout } from '@anthropic/lomi-embed';

// When user clicks "Pay"
const checkout = loadLomiCheckout({
  publicKey: 'lomi_pk_...',
  sessionId: 'cs_...',  // From create_checkout_session
});

// Close programmatically if needed:
checkout.unmount();
```

### Inline Mode

Mount checkout inside a specific element:

```javascript
import { loadLomiCheckout } from '@anthropic/lomi-embed';

loadLomiCheckout({
  publicKey: 'lomi_pk_...',
  sessionId: 'cs_...',
  mode: 'inline',
  elementId: 'my-checkout-container',
});
```

```html
<div id="my-checkout-container" style="width: 100%; height: 700px;"></div>
```

## Options

| Option | Type | Default | Description |
|--------|------|---------|-------------|
| `publicKey` | string | required | Your Lomi publishable key |
| `sessionId` | string | required | Checkout session ID |
| `mode` | 'modal' \| 'inline' | 'modal' | Display mode |
| `elementId` | string | - | DOM element ID (inline mode) |
| `maxWidth` | string | '500px' | Modal max width |
| `modalHeight` | string | '85vh' | Modal height |

## Server-Side: Create Checkout Session

```javascript
const { data } = await supabase.rpc('create_checkout_session', {
  p_organization_id: 'your-org-id',
  p_amount: 10000,
  p_currency_code: 'XOF',
  p_customer_email: 'customer@example.com',
});

const sessionId = data.checkout_session_id;
```

## License

MIT
npm package: @lomi./sdk
Description: Official TypeScript SDK for the lomi. API
Author: lomi.
Latest version: 1.5.9

# lomi. TypeScript SDK

Official Node.js SDK for interacting with the lomi. payment processing API.

## Installation

```bash
# Using pnpm
pnpm add @lomi./sdk

# Using npm
npm install @lomi./sdk

# Using yarn
yarn add @lomi./sdk
```

## Usage

Import the OpenAPI client and configure it with your API key. Then access the different API services.

```typescript
import { OpenAPI, CustomersService, CreateCustomer, type Customer } from '@lomi./sdk';

// Configure your API key (obtainable from your lomi. dashboard)
OpenAPI.HEADERS = {
  'X-API-KEY': 'YOUR_LOMI_API_KEY',
};

// Optionally configure the base URL if not using the default production URL
// OpenAPI.BASE = 'https://sandbox.api.lomi.africa/v1';

async function createNewCustomer() {
  try {
    const customerData: CreateCustomer = {
      name: 'Test customer',
      email: 'customer@example.com',
      phone_number: '+225021234567',
    };

    const newCustomer: Customer = await CustomersService.createCustomer(customerData);
    console.log('Customer created:', newCustomer);

  } catch (error) {
    console.error('Error creating customer:', error);
  }
}

createNewCustomer();
```

Refer to the `src/generated/services` directory and the [lomi. API documentation](https://docs.lomi.africa/docs) for details on available services and methods.

## Contributing

Please refer to the main `CONTRIBUTING.md` in the monorepo.

## Support

Contact **hello@lomi.africa** or visit our [support center](https://lomi.africa/support).

## License

This project is licensed under the MIT License.
npm package: @lomi./sdk-js
Description: Official JavaScript SDK for the lomi. API
Author: lomi.
Latest version: 1.1.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# lomi. JavaScript SDK

Official JavaScript SDK for interacting with the lomi. payment processing API.

## Installation

```bash
# Using pnpm
pnpm add @lomi./sdk-js

# Using npm
npm install @lomi./sdk-js

# Using yarn
yarn add @lomi./sdk-js
```

## Usage

Import the OpenAPI client and configure it with your API key. Then access the different API services.

```javascript
import { OpenAPI, CustomersService } from '@lomi./sdk-js';

// Configure your API key (obtainable from your lomi. dashboard)
OpenAPI.HEADERS = {
  'X-API-KEY': 'YOUR_LOMI_API_KEY',
};

// Optionally configure the base URL if not using the default production URL
// OpenAPI.BASE = 'https://sandbox.api.lomi.africa/v1';

async function createNewCustomer() {
  try {
    const customerData = {
      name: 'Test customer',
      email: 'customer@example.com',
      phone_number: '+225021234567',
    };

    const newCustomer = await CustomersService.createCustomer(customerData);
    console.log('Customer created:', newCustomer);

  } catch (error) {
    console.error('Error creating customer:', error);
  }
}

createNewCustomer();
```

Refer to the `src/generated/services` directory and the [lomi. API documentation](https://docs.lomi.africa/docs) for details on available services and methods.

## Contributing

Please refer to the main `CONTRIBUTING.md` in the monorepo.

## Support

Contact **hello@lomi.africa** or visit our [support center](https://lomi.africa/support).

## License

This project is licensed under the MIT License.
npm package: @lomi./sdk-next
Description: Next.js helpers for lomi. API - React hooks and server actions
Author: lomi. Team
Latest version: 1.3.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# lomi. Next.js SDK

Official Next.js SDK for interacting with the lomi. payment processing API.

## Installation

```bash
# Using pnpm
pnpm add @lomi./sdk-next

# Using npm
npm install @lomi./sdk-next

# Using yarn
yarn add @lomi./sdk-next
```

## Configuration

Add your lomi. API key to your `.env.local` file:

```env
LOMI_API_KEY=your_lomi_api_key_here
LOMI_BASE_URL=https://api.lomi.africa/v1  # Optional, defaults to production
```

## Usage

### Server Components (App Router)

```typescript
import { lomiClient } from '@lomi./sdk-next';

export default async function CustomersPage() {
  const customers = await lomiClient.customers.list();
  
  return (
    <div>
      <h1>Customers</h1>
      {customers.data.map((customer) => (
        <div key={customer.id}>
          <p>{customer.name}</p>
          <p>{customer.email}</p>
        </div>
      ))}
    </div>
  );
}
```

### Server Actions

```typescript
'use server';

import { lomiClient } from '@lomi./sdk-next';

export async function createCustomer(formData: FormData) {
  try {
    const customer = await lomiClient.customers.create({
      name: formData.get('name') as string,
      email: formData.get('email') as string,
      phone_number: formData.get('phone') as string,
    });
    
    return { success: true, customer };
  } catch (error) {
    return { success: false, error: error.message };
  }
}
```

### API Routes

```typescript
import { lomiClient } from '@lomi./sdk-next';
import { NextResponse } from 'next/server';

export async function POST(request: Request) {
  try {
    const body = await request.json();
    
    const customer = await lomiClient.customers.create(body);
    
    return NextResponse.json(customer);
  } catch (error) {
    return NextResponse.json({ error: error.message }, { status: 400 });
  }
}
```

Refer to the [lomi. API documentation](https://docs.lomi.africa/docs) for details on available services and methods.

## Contributing

Please refer to the main `CONTRIBUTING.md` in the monorepo.

## Support

Contact **hello@lomi.africa** or visit our [support center](https://lomi.africa/support).

## License

This project is licensed under the MIT License.