Skip to content

@univ-lehavre/atlas-appwrite ​

Shared Appwrite client utilities for Atlas applications.

About ​

This package provides pre-configured Appwrite clients and utilities for Atlas SvelteKit applications. It simplifies the creation of admin and session clients, and provides a standardized user repository.

Features ​

  • Admin Client: Client with full access to the Appwrite API
  • Session Client: Client configured with the user session
  • User Repository: Abstraction for user retrieval
  • Cookie Management: Utilities for session management via cookies

Installation ​

bash
pnpm add @univ-lehavre/atlas-appwrite

Usage ​

Admin Client ​

typescript
import { createAdminClient } from '@univ-lehavre/atlas-appwrite';

const config = {
  endpoint: process.env.APPWRITE_ENDPOINT,
  projectId: process.env.APPWRITE_PROJECT,
  apiKey: process.env.APPWRITE_KEY,
};

const { account, users, databases } = createAdminClient(config);

// Retrieve a user
const user = await users.get({ userId: 'user123' });

Session Client ​

typescript
import { createSessionClient, SESSION_COOKIE } from '@univ-lehavre/atlas-appwrite';

// In a SvelteKit endpoint
export const GET = async ({ cookies }) => {
  const config = {
    endpoint: process.env.APPWRITE_ENDPOINT,
    projectId: process.env.APPWRITE_PROJECT,
  };

  const { account } = createSessionClient(config, cookies);
  const user = await account.get();

  return json({ user });
};

User Repository ​

typescript
import { createUserRepository } from '@univ-lehavre/atlas-appwrite';

const userRepo = createUserRepository({
  endpoint: process.env.APPWRITE_ENDPOINT,
  projectId: process.env.APPWRITE_PROJECT,
  apiKey: process.env.APPWRITE_KEY,
});

const user = await userRepo.getById('user123');

API ​

Functions ​

FunctionDescription
createAdminClient(config)Creates an Appwrite admin client
createSessionClient(config, cookies)Creates an Appwrite session client
createUserRepository(config)Creates a user repository

Constants ​

ConstantDescription
SESSION_COOKIESession cookie name ('session')
ADMIN_LABELAppwrite label for administrators ('admin')

Exported Types ​

Re-exported Appwrite types: Models, Account, Users, Databases, Client, ID

Scripts ​

bash
pnpm -F @univ-lehavre/atlas-appwrite dev      # Development
pnpm -F @univ-lehavre/atlas-appwrite build    # Build
pnpm -F @univ-lehavre/atlas-appwrite test     # Tests
pnpm -F @univ-lehavre/atlas-appwrite lint     # ESLint

Documentation ​

Organization ​

This package is part of Atlas, a set of tools developed by Le Havre Normandie University to facilitate research and collaboration between researchers.

Atlas is developed as part of two projects led by Le Havre Normandie University:


Le Havre Normandie University     Campus Polytechnique des Territoires Maritimes et Portuaires     EUNICoast

License ​

MIT

Namespaces ​

NamespaceDescription
ModelsAppwrite Models

Classes ​

ClassDescription
AppwriteUserRepositoryAppwrite implementation of the UserRepository interface. Retrieves user data from Appwrite using the admin client.
IDHelper class to generate ID strings for resources.

Interfaces ​

InterfaceDescription
Account-
AdminClientAdmin client interface with full API access.
AppwriteConfigConfiguration for Appwrite clients.
Client-
Databases-
SessionAccountSession client interface for authenticated user operations.
TUserUser data structure returned by the repository.
UserRepositoryContract for retrieving users from a source (Appwrite, REDCap, etc.).
Users-

Variables ​

VariableDescription
ADMIN_LABELAppwrite label for admin users.
SESSION_COOKIEName of the cookie used to store the Appwrite session token.

Functions ​

FunctionDescription
createAdminClientCreates an Appwrite admin client with full API access. Used for server-side operations requiring admin privileges.
createSessionClientCreates an Appwrite session client for authenticated user operations.
createUserRepositoryCreates an AppwriteUserRepository with the given configuration.