# li'l Judd - Competitive Splatoon Bot

Welcome to li'l Judd, your go-to bot for enhancing your competitive Splatoon experience! Whether you're looking for match statistics, team coordination, or general Splatoon information, li'l Judd has got you covered.

## Features

- **Match Statistics:** Track and analyze your Splatoon matches to improve your gameplay.
- **Team Coordination:** Plan strategies and coordinate with your team more effectively.
- **General Splatoon Information:** Get information about weapons, maps, and game updates.

## Getting Started

To get started with li'l Judd, follow the instructions below.

### Prerequisites

- Node.js and pnpm installed (pnpm is strongly recommended for local development)
- Docker (optional, for containerized deployment)
- A Font Awesome subscription (required for the paid version used)

### Installation

1. Clone the repository:

   ```bash
   git clone https://git.moonleay.net/Websites/liljudd-website.git
   ```

2. Install dependencies:

   ```bash
   cd lil-judd

   # Install pnpm if not already installed
   npm i -g pnpm

   # Add token to authenticate when using installing Font Awesome packages
   echo "@fortawesome:registry=https://npm.fontawesome.com/" > ~/.npmrc
   echo "//npm.fontawesome.com/:_authToken=<YOUR_TOKEN>" >> ~/.npmrc

   pnpm install
   ```

3. Set up environment variables:

   Create a `.env` file in the root directory and add the following variables:

   ```env
   VITE_DISCORD_CLIENT_ID=your_discord_client_id
   VITE_DISCORD_CLIENT_SECRET=your_discord_client_secret
   VITE_DISCORD_BOT_TOKEN=your_discord_bot_token
   VITE_DISCORD_OAUTH2_PERMISSIONS=18977581952080

   VITE_AUTH_SECRET=your_auth_secret

   VITE_DATABASE_URL=your_database_url
   ```

Recieve your discord applications `CLIENT_ID` & `CLIENT_SECRET`, as well as the bot token from the [Applications dashboard](https://discord.com/developers/applications/).

Your `VITE_AUTH_REDIRECT_URL` should look like this: `https://<hostname>/api/auth/callback/discord`.

Composite your `VITE_DATABASE_URL` like [`postgres://postgres:adminadmin@0.0.0.0:5432/db`](https://orm.drizzle.team/docs/get-started-postgresql#postgresjs).

#### Development

The duplicate `DATABASE_URL` is only needed for Drizzle Studio.

```
VITE_AUTH_REDIRECT_PROXY_URL=your_auth_redirect_proxy_url

DATABASE_URL=your_database_url
```

### Usage

- **Run development server:**

  ```bash
  pnpm dev
  # Use --host if you have set up a reverse proxy to test auth with callback to your dev box
  pnpm dev --host
  ```

- **Build for production:**

  ```bash
  pnpm build
  ```

- **Start production server:**

  ```bash
  pnpm start
  ```

- **Generate openapi types from specs:**

  [openapi.json](https://raw.githubusercontent.com/discord/discord-api-spec/main/specs/openapi.json) (from discord-api-spec repo) -> [discord.d.ts](/src/types/discord.d.ts)

  [liljudd.json](/public/api/specs/liljudd.json) -> [liljudd.d.ts](/src/types/liljudd.d.ts)

  ```bash
  pnpm discord-openapi-gen
  pnpm liljudd-openapi-gen
  ```

  **Drizzle Studio:**

  Explore the database with ease through the intuitive web-based interface of Drizzle Studio, offering a visual and user-friendly way to interact with the data behind the scenes.

  ```bash
  pnpm drizzle-studio
  ```

- **Docker Container:**

  ```bash
  docker build --build-arg FONT_AWESOME_TOKEN=<YOUR_TOKEN> -t $image_name .
  ```

## Contributing

If you'd like to contribute to li'l Judd, feel free to open an issue or submit a pull request. Your contributions are highly appreciated!

## License

This project is licensed under the [GPL v3 License](LICENSE).

Happy splatting! 🦑🎮
