Skip to content

Installation

umutxyp edited this page Oct 17, 2026 · 2 revisions

Installation

This page takes you from an empty machine to the Beatra website running at http://localhost:3000, and then to a local production build.

Four commands from clone to localhost


Requirements

Requirement Version / notes
Node.js 22 or newer. package.json sets "engines": { "node": ">=22" }, and the README says the same. (sharp 0.35 alone needs 20.9 or newer; the project asks for 22 because Node.js 20 reached its end of life in April 2026 and Vercel no longer builds with it.) On an older version npm only prints an EBADENGINE warning and installs anyway (it refuses only when engine-strict is turned on), so check node -v first. A current LTS release is a safe choice.
npm Comes with Node.js. The README and all commands in this wiki use npm.
Git Optional. You can also download the code as a ZIP file from GitHub.
Internet access Needed for npm install, and also during npm run dev / npm run build, because the fonts are loaded with next/font/google (Outfit, Inter and JetBrains Mono).
Environment variables None. The code does not read any process.env value and there is no .env file to fill in.

Main dependencies

These are the exact ranges from package.json:

Package Range Used for
next ^15.5.24 Framework, routing, middleware, metadata, build
react, react-dom ^18.3.1 UI runtime
@once-ui-system/core ^1.8.0 Layout components, theme, StylePanel, icons provider
react-icons ^5.6.0 Icon set registered in src/resources/icons.js
sass ^1.77.6 Sass support for Once UI styles
sharp ^0.35.5 Image processing for Next.js
classnames ^2.5.1 Joining font class names in the layout

Note: The repository does not include a package-lock.json. The first npm install creates one on your machine. If you keep your own fork, committing that lock file makes later installs reproducible.


Step 1: Install Node.js

Check whether you already have it:

node -v
npm -v

If node -v prints v22.0.0 or higher, skip to Step 2.

Windows

  1. Download the LTS installer from nodejs.org and run it with the default options. Or, in PowerShell:
    winget install OpenJS.NodeJS.LTS
  2. Close and reopen your terminal, then run node -v again.

macOS

  1. Download the LTS installer from nodejs.org, or use Homebrew:
    brew install node
  2. Run node -v to confirm.

Linux

Distribution packages are often too old. The simplest way to get a current version is nvm (follow the install line in its README), then:

nvm install --lts
nvm use --lts
node -v

Step 2: Get the code

With Git:

git clone https://github.com/umutxyp/Discord-Bot-Website.git
cd Discord-Bot-Website

Without Git: open the repository, click Code → Download ZIP, unzip it, and open a terminal inside the unzipped folder.


Step 3: Install the dependencies

npm install

This downloads Next.js, React, Once UI and the other packages into node_modules/.


Step 4: Run the development server

npm run dev

Open http://localhost:3000.

  • The middleware redirects / to a supported language, for example /en or /tr (see Internationalization).
  • Edits to files in src/ reload in the browser automatically.
  • Stop the server with Ctrl + C.

If port 3000 is busy, next dev picks the next free port by itself and prints the address. To choose a port yourself, pass Next.js's -p option through npm:

npm run dev -- -p 3001

Step 5: Try a production build locally

npm run build
npm run start
  • npm run build runs next build. It pre-renders every page for all seven languages and writes the result to the .next/ folder.
  • npm run start runs next start and serves that build on http://localhost:3000 by default.

Note: Always run npm run build again after you change code or dictionary text. npm run start only serves what the last build produced.


npm scripts

All scripts come from package.json:

Command Runs What it does
npm run dev next dev Development server with hot reload.
npm run build next build Production build into .next/.
npm run start next start Serves the production build.
npm run lint next lint Next.js linting. The repo ships no ESLint config or ESLint packages, so the first run asks you to set ESLint up. Next.js 15.5 and later also print a deprecation notice for next lint.

Project layout

.
├── .github/
│   └── CODEOWNERS                every change is reviewed by @umutxyp
├── public/
│   ├── favicon.ico
│   └── img/
│       ├── apple-touch-icon.png
│       ├── favicon-32.png
│       ├── logo-192.png
│       ├── logo.png
│       ├── og-image.png
│       └── products/            beatra.png, codeshare.png, mcstat.png, sylon.png
├── src/
│   ├── app/
│   │   └── [locale]/
│   │       ├── layout.jsx        root layout: html, metadata, theme, header, footer
│   │       ├── page.jsx          home page
│   │       ├── not-found.jsx     404 page
│   │       ├── commands/page.jsx
│   │       ├── premium/page.jsx
│   │       ├── partners/page.jsx
│   │       ├── tos/page.jsx
│   │       └── privacy/page.jsx
│   ├── components/
│   │   ├── Header.jsx            navigation, mobile menu, invite button
│   │   ├── Footer.jsx            brand, social links, link columns
│   │   ├── LanguageSwitcher.jsx  language dropdown
│   │   ├── StyleCustomizer.jsx   "Customize" modal with Once UI StylePanel
│   │   ├── PremiumTabs.jsx       plan tabs on the premium page
│   │   └── Providers.jsx         Once UI theme, toast, icon and layout providers
│   ├── i18n/
│   │   ├── config.js             locales, defaultLocale, localeNames
│   │   ├── getDictionary.js      loads the JSON for a locale
│   │   └── dictionaries/         en, tr, es, pt, fr, de, ru (.json)
│   ├── resources/
│   │   ├── constants.js          external links
│   │   ├── seo.js                baseURL
│   │   ├── once-ui.config.js     theme style and fonts
│   │   ├── icons.js              icon names
│   │   └── custom.css            global CSS overrides
│   └── middleware.js             language redirect
├── next.config.js
├── package.json
├── LICENSE
├── README.md
└── SECURITY.md                   how to report a vulnerability privately

There is no package-lock.json, .env file, ESLint config or test folder in the repository.

Note for Windows PowerShell users: the folder src/app/[locale] has square brackets in its name, and PowerShell treats [ ] as wildcards in many commands. Use -LiteralPath, for example Set-Location -LiteralPath 'src\app\[locale]'. Editors such as VS Code are not affected.


Next steps

Clone this wiki locally