# Snowball Tools API Documentation This documentation is automatically generated using [TypeDoc](https://typedoc.org/) from TSDoc comments in the codebase. ## Packages The monorepo contains the following packages: - **frontend**: The frontend web application - **backend**: The backend API server - **gql-client**: GraphQL client library - **deployer**: Deployment utilities ## How to Use This Documentation The documentation is organized by packages and modules. You can navigate through the sidebar to explore the different parts of the codebase. ## Contributing to Documentation To contribute to the documentation: 1. Add TSDoc comments to your code using the JSDoc syntax 2. Run `yarn docs` to generate the documentation 3. Preview the documentation in the `docs` directory ## TSDoc Comment Examples ### Function Documentation ```typescript /** * Calculates the sum of two numbers. * * @param a - The first number * @param b - The second number * @returns The sum of a and b * * @example * ```ts * const result = add(1, 2); * console.log(result); // 3 * ``` */ function add(a: number, b: number): number { return a + b; } ``` ### Class Documentation ```typescript /** * Represents a user in the system. * * @remarks * This class is used throughout the application to represent user data. * * @example * ```ts * const user = new User('John', 'Doe'); * console.log(user.fullName); // "John Doe" * ``` */ class User { /** * Creates a new User instance. * * @param firstName - The user's first name * @param lastName - The user's last name */ constructor( /** The user's first name */ public firstName: string, /** The user's last name */ public lastName: string ) {} /** * Gets the user's full name. */ get fullName(): string { return `${this.firstName} ${this.lastName}`; } } ``` ### Interface Documentation ```typescript /** * Configuration options for the application. * * @public */ interface AppConfig { /** * The port number the server should listen on. * @default 3000 */ port: number; /** * The host the server should bind to. * @default "localhost" */ host: string; /** * Whether to enable debug mode. * @default false */ debug?: boolean; } ```