---
description: "Project structure of the neko repository."
---

# Repository Structure

This project uses a monorepo structure with the following directories:

- `server/`: Backend code, written in [Go](https://go.dev/).
  - `server/cmd/`: Subcommands for the neko server, such as `serve` and `plugins`.
  - `server/dev/`: Development scripts to run/build the neko server locally in Docker.
  - `server/internal/`: Internal packages used by the neko server.
  - `server/pkg/`: Packages used by the neko server that can be used by other projects.
  - `server/plugins/`: Directory for plugins that will be built and used by the neko server.

- `client/`: Frontend code, written in [TypeScript](https://www.typescriptlang.org/) and [Vue.js](https://vuejs.org/).
  - `client/dev/`: Development scripts to run/build the neko client locally in Docker.
  - `client/public/`: Public files for the neko client, such as icons and images.
  - `client/src/`: Source code for the neko client, including components and pages.
  - `client/tools/`: Tools used for generating code for the neko client, such as emojis.

- `runtime/`: Runtime environment, with [Xorg](https://www.x.org/wiki/) and [Pulseaudio](https://www.freedesktop.org/wiki/Software/PulseAudio/) servers and the necessary dependencies for the applications to run.
  - `runtime/fontconfig/`: Font configuration files copied to `/etc/fonts/conf.d/` in the neko runtime.
  - `runtime/fonts/`: Empty directory placeholder to include custom fonts in the neko runtime.
  - `runtime/icon-theme/`: Empty directory placeholder to include a custom icon theme in the neko runtime.
  - `runtime/intel/` or `runtime/nvidia/`: Directories with files for flavor-specific releases of the neko runtime.

- `apps/`: Contains the applications that run in the neko, such as Firefox, Chrome, etc.
  - `apps/<app-name>/Dockerfile`: Dockerfile extending `BASE_IMAGE` for the application used by the build script.
  - `apps/<app-name>/Dockerfile.<flavor>`: Dockerfile for the application with flavor-specific optimizations.
  - Supervisord configuration is expected at `/etc/neko/supervisord/<app-name>.conf` in the application image.

- `utils/`: Utility scripts, tools, and dependencies.
  - `utils/docker/`: Dockerfile generator that builds the base image by concatenating multiple Dockerfiles.
  - `utils/xorg-deps/`: Custom-made or patched Xorg dependencies, such as drivers.

- `webpage/`: Webpage code for neko.m1k1o.net, written in [TypeScript](https://www.typescriptlang.org/) and [Docusaurus](https://docusaurus.io/), deployed on [GitHub Pages](https://pages.github.com/).
  - `webpage/docs/`: Documentation for the neko project, including this README file.
  - `webpage/scripts/`: Helper scripts for generating configuration and OpenAPI docs.
  - `webpage/src/`: Source code, components, and styles for the webpage.
  - `webpage/static/`: Static files for the webpage, such as images and icons.
  - `webpage/versioned_*`: Versioned documentation files for the neko project, generated by [Docusaurus](https://docusaurus.io/).