Repository navigation
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.

| 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. |
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 firstnpm installcreates one on your machine. If you keep your own fork, committing that lock file makes later installs reproducible.
Check whether you already have it:
node -v
npm -vIf node -v prints v22.0.0 or higher, skip to Step 2.
- Download the LTS installer from nodejs.org and run it with the default options.
Or, in PowerShell:
winget install OpenJS.NodeJS.LTS
- Close and reopen your terminal, then run
node -vagain.
- Download the LTS installer from nodejs.org, or use Homebrew:
brew install node
- Run
node -vto confirm.
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 -vWith Git:
git clone https://github.com/umutxyp/Discord-Bot-Website.git
cd Discord-Bot-WebsiteWithout Git: open the repository, click Code → Download ZIP, unzip it, and open a terminal inside the unzipped folder.
npm installThis downloads Next.js, React, Once UI and the other packages into node_modules/.
npm run devOpen http://localhost:3000.
- The middleware redirects
/to a supported language, for example/enor/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 3001npm run build
npm run start-
npm run buildrunsnext build. It pre-renders every page for all seven languages and writes the result to the.next/folder. -
npm run startrunsnext startand serves that build on http://localhost:3000 by default.
Note: Always run
npm run buildagain after you change code or dictionary text.npm run startonly serves what the last build produced.
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. |
.
├── .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 exampleSet-Location -LiteralPath 'src\app\[locale]'. Editors such as VS Code are not affected.
- Change links, the site URL, theme and more: Configuration and Customization.
- Put it online: Deployment.
- Something went wrong: Troubleshooting.
Beatra Website · MIT License · Made by Umut Bayraktar · Codeshare
Start here
The site
Run it
Community