Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/mohameodo/nano/llms.txt

Use this file to discover all available pages before exploring further.

nano is configured entirely at runtime via environment variables — there is no settings UI and no database-backed config table. Every option from the site name to the video player behaviour is a single env var. This means you can reconfigure a running Docker container by restarting it with different flags, or adjust a local instance by editing .env and restarting the dev server, all without touching source code or triggering a new build.

Setup

Local development — copy .env.example to .env in the project root and edit the values:
cp .env.example .env
# then open .env in your editor
Or run the interactive setup helper which does this for you and prints a config summary:
node setup.js
Docker — pass variables as -e flags or mount a .env file:
# individual flags
docker run -p 3000:3000 \
  -e SITE_NAME="my nano" \
  -e THEME_MODE="dark" \
  ghcr.io/mohameodo/nano:latest

# full env file
docker run -p 3000:3000 --env-file .env ghcr.io/mohameodo/nano:latest

Server

These variables control how the Node.js server binds to the network. They are set automatically when using the Docker image but can be overridden.
VariableDefaultDescription
PORT3000HTTP port the server listens on.
HOST0.0.0.0Bind address. 0.0.0.0 listens on all interfaces; use 127.0.0.1 to restrict to localhost.

TMDB (Optional)

nano uses The Movie Database (TMDB) for all search results, metadata, posters, and episode data. A built-in fallback key is bundled, so both variables are optional — you only need your own if you want to avoid shared rate limits or require a specific account tier.
VariableDefaultDescription
TMDB_API_KEYbuilt-in fallbackTMDB v3 API key. Obtain one for free at themoviedb.org/settings/api.
TMDB_ACCESS_TOKENbuilt-in fallbackTMDB v4 Bearer (Read Access) token. Used for v4 API endpoints when present.

Database (Optional)

nano supports two persistence backends for user data (watchlists, continue watching, local library). The default JSON backend requires no external services and stores data on the local filesystem.
VariableDefaultDescription
DATABASE_URLPostgreSQL connection string (e.g. postgresql://user:pass@host:5432/dbname). Required when DATABASE_TYPE=postgres.
DATABASE_TYPEjsonStorage backend. json uses a local JSON file; postgres uses a PostgreSQL database. Auto-detected from DATABASE_URL when set.

Site

Core identity settings for the site — name, SEO metadata, and default language.
VariableDefaultDescription
SITE_NAMEshiopa nanoDisplay name shown in the logo and throughout the UI.
METADATA_TITLEshiopa nanoBrowser tab title and <title> tag value.
METADATA_DESCRIPTIONa minimalist web interface for shiopa nano. search for movies and tv shows instantly without bloat.SEO meta description for search engines and link previews.
METADATA_THUMBNAIL/icons/nano-pet.svgOpen Graph (og:image) path or URL used for social link previews.
DEFAULT_LOCALEenDefault UI language code. Users can override this at runtime via the header language selector. Supported codes include en, fr, de, es, ja, and 11 others.

Theme

nano’s visual appearance is fully themeable at runtime. Changes take effect on the next server start — no rebuild required.

Palette & Colours

VariableDefaultDescription
THEME_PALETTEcolorColour mode. color uses the accent hue; monochrome forces a black-and-white palette.
THEME_HUE200Accent colour hue on the 0–360 colour wheel. 200 is a light blue. Try 310 for pink/purple, 120 for green, or 30 for orange.
THEME_MODEdarkBase colour scheme. dark or light.
COLOR_BG_DARK#000000Background hex colour used in dark mode.
COLOR_BG_LIGHT#ffffffBackground hex colour used in light mode.

Background Style

VariableDefaultDescription
THEME_BG_STYLEneon-ditherBackground texture pattern. See values below.
THEME_CUSTOM_BGURL of a custom background image. When set, overrides THEME_BG_STYLE.
THEME_FONT_FAMILYCSS font-family string applied site-wide (e.g. "Inter, sans-serif").
THEME_BG_STYLE values:
ValueDescription
fallingAnimated falling dither-dot shader.
neon-ditherAnimated wave dither shader (default).
dotsStatic dot grid.
linesStatic line grid.
thin-linesStatic thin line grid.
textRepeating text pattern.
grainSubtle noise/grain overlay.
noneSolid background colour only.

Controls the animated greeting and logo shown on the home page.
VariableDefaultDescription
GREETING_STYLEnano-petStyle of the home-page greeting. See values below.
SHOW_GREETINGtrueShow or hide the greeting area entirely. true or false.
SHOW_ICONfalseShow a React icon next to the site name in the logo. true or false.
USE_MIXED_FANCY_FONTtrueMix decorative fonts in the logo text. true or false.
LOGO_SIZElgLogo size. sm, md, lg, or xl.
LOGO_FONT_FAMILYCSS font-family string applied to the logo text only. Overrides THEME_FONT_FAMILY for the logo.
GREETING_STYLE values:
ValueDescription
nano-petAnimated mesh pet companion (default).
slogansRotating greeting slogans.
logoStatic site logo/wordmark.
iconA React icon (configure with CUSTOM_ICON).
gifA custom GIF image (configure with CUSTOM_GIF).
logo-and-iconIcon alongside the site name.

Custom Icon

CUSTOM_ICON
string
Icon identifier used when GREETING_STYLE=icon or SHOW_ICON=true. Valid values: tv, film, play, video, ticket, camera, gamepad, headphones, disc, media.

Custom GIF

VariableDefaultDescription
CUSTOM_GIFURL of a GIF image to display when GREETING_STYLE=gif.
CUSTOM_GIF_WIDTHCSS width of the GIF (e.g. 200px).
CUSTOM_GIF_HEIGHTCSS height of the GIF (e.g. 200px).
CUSTOM_GIF_MARGINCSS margin around the GIF (e.g. 0 auto).

Header Controls

Toggle the interactive controls shown in the site header. Hiding these locks the UI to your server-defined defaults.
VariableDefaultDescription
HEADER_SHOW_THEME_TOGGLEtrueShow the dark/light mode toggle button. true or false.
HEADER_SHOW_COLOR_PICKERtrueShow the accent hue colour picker. true or false.
HEADER_SHOW_LANG_SELECTORtrueShow the language selector dropdown. true or false.

Features

Feature flags that enable or disable major nano capabilities.
VariableDefaultDescription
SHOW_WATERMARKSfalseShow a matrix-style overlay grid on the background. true or false.
SHOW_TRENDINGfalseDisplay a trending movies/shows section on the home page. true or false.
SHOW_QUICK_TAGSfalseDisplay genre quick-filter tags on the home page. true or false.
ENABLE_AUTHfalseEnable a simple local login page to password-protect the instance. true or false.
ENABLE_LOCAL_LIBRARYfalseEnable a personal local media library alongside scraped results. true or false.
ENABLE_LOCAL_LIBRARY_EDITINGfalseAllow editing entries in the local media library. true or false. Requires ENABLE_LOCAL_LIBRARY=true.

Ghost Companion

The Ghost is an optional interactive companion that lives on the page. It can display AI-powered speech bubbles (via Woozlit) and react to searches and clicks.
VariableDefaultDescription
GHOST_HATfalseShow a pirate hat overlay on the Ghost companion. true or false.
GHOST_FLYINGfalseEnable the Ghost companion to float and bounce around the screen. true or false.
GHOST_TTSfalseEnable Text-to-Speech voice synthesis for the Ghost companion’s speech bubbles. true or false.
WOOZLIT_API_KEYAPI key for fetching AI reactions from woozlit.com. When set, the Ghost reacts to searches and click events with AI-generated responses.

Video Player

Settings that control stream playback behaviour and the video player interface.
VariableDefaultDescription
AUTOPLAYtrueAutomatically start video playback when a stream loads. true or false.
USE_VIDSTACKfalseUse the advanced Vidstack player instead of the built-in custom HTML5 player. true or false. Vidstack provides quality selection, keyboard shortcuts, and richer controls.
DEFAULT_SERVERreiDefault scraper server ID loaded when opening the player. The code default is rei; .env.example ships nemu as a starting suggestion. Set this to your preferred server ID.
Available server IDs depend on which .rink plugin files you have installed. The full list of IDs for your instance is printed by the shiopa CLI when you add sources. In development mode additional servers (momo, xpass, hana, nemu, kisskh, haru, sora, yuki, and more) are exposed automatically.

Build docs developers (and LLMs) love