Installation
Requirements, generator choices, package managers, and your first local run.
The project generator is the supported way to start a Ludicord Activity. It creates the required conventions, pins compatible framework dependencies, and avoids manual runtime wiring.
#System requirements
Use the current Node LTS release for new projects. Older Node versions can fail before Ludicord starts because the compiler and development dependencies use modern platform APIs.
#Interactive installation
Run the command without flags to answer two short prompts:
1npx create-ludicord-app@latest
1Project name: my-activity2Use Tailwind CSS? (Y/n) Y
The project directory must be empty. Ludicord stops instead of overwriting existing files.
#Generator options
1npx create-ludicord-app@latest my-activity --tailwind --package-manager pnpm --git
Do not pass both --tailwind and --no-tailwind. For scripts or agents where no terminal prompt is available, Tailwind remains the default.
#Tailwind CSS support
Choosing Tailwind installs tailwindcss and @tailwindcss/vite, then places the import in the global stylesheet:
1/* file: app/globals.css */2@import "tailwindcss";34:root {5 --ludicord-safe-top: var(--sait, env(safe-area-inset-top, 0px));6 --ludicord-safe-bottom: var(--saib, env(safe-area-inset-bottom, 0px));7}
Ludicord detects the integration. You do not create or expose a Vite configuration file just to use Tailwind.
#Install an existing project
When cloning a Ludicord app, use the lockfile's package manager:
1npm install2npm run dev
The three application scripts should stay simple:
1{2 "scripts": {3 "dev": "ludicord dev",4 "build": "ludicord build",5 "start": "ludicord start"6 }7}
Additional maintenance commands may be documented separately, but the generated README keeps the main lifecycle focused on these three.
#Verify the installation
A correct local start prints the Ludicord version, local URL, and compile timing. The page should render the starter dashboard. If Discord data is unavailable in the browser, that is expected; complete the URL mapping and launch from Discord before debugging the hooks.
#Next step
Open Project structure to learn why each generated file exists before replacing the starter UI.