docs: update README for v1.0.1 — PM2 deploy, premium features, production-ready
This commit is contained in:
1 parent
fee71fe7dc
commit
fc42a1c138
1 file changed
+28
-6
@@ -1,8 +1,8 @@
|
|||||||
# EpicNext-CMS
|
# EpicNext-CMS v1.0.1
|
||||||
|
|
||||||
A modern, high-performance content management system for Habbo hotel emulators, built on **Next.js 16** (App Router) with **Prisma 7** and **React 19**. Designed to integrate seamlessly with Polaris / Arcturus Morningstar MySQL/MariaDB databases.
|
A modern, high-performance content management system for Habbo hotel emulators, built on **Next.js 16** (App Router) with **Prisma 7** and **React 19**. Designed to integrate seamlessly with Polaris / Arcturus Morningstar MySQL/MariaDB databases.
|
||||||
|
|
||||||
Features a full public-facing website, an administrative panel, NextAuth authentication (argon2id/bcrypt with MD5-to-argon2id upgrade), real-time RCON communication with the emulator, Server-Sent Events for live radio data, smooth page transitions, and extensive extensibility.
|
Features a premium animated homepage (typewriter hero, floating orbs, scroll counters), a full admin panel, NextAuth authentication (argon2id/bcrypt with MD5-to-argon2id upgrade), real-time RCON communication, Server-Sent Events for live radio data, smooth page transitions, and PM2 production deployment.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -98,6 +98,27 @@ Open `http://localhost:3000` in your browser.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Production Deployment (PM2)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pnpm build
|
||||||
|
pm2 start pnpm --name "next" -- start
|
||||||
|
pm2 save
|
||||||
|
```
|
||||||
|
|
||||||
|
Restart after updates:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git pull
|
||||||
|
pnpm install
|
||||||
|
pnpm build
|
||||||
|
pm2 restart next
|
||||||
|
```
|
||||||
|
|
||||||
|
The CMS runs behind an nginx reverse proxy on the default port 3000. Static assets (media uploads) are persisted via `/api/media/*` and survive rebuilds.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Scripts
|
## Scripts
|
||||||
|
|
||||||
| Command | Description |
|
| Command | Description |
|
||||||
@@ -125,13 +146,14 @@ Open `http://localhost:3000` in your browser.
|
|||||||
| **Server-Sent Events** | Real-time radio now-playing & listeners via SSE (no polling) |
|
| **Server-Sent Events** | Real-time radio now-playing & listeners via SSE (no polling) |
|
||||||
| **Redis Caching** | Caches API responses (home, radio config) up to 30s in Redis |
|
| **Redis Caching** | Caches API responses (home, radio config) up to 30s in Redis |
|
||||||
| **Bundle Analyzer** | Run `pnpm analyze` to visualize and optimize bundle sizes |
|
| **Bundle Analyzer** | Run `pnpm analyze` to visualize and optimize bundle sizes |
|
||||||
| **AnimatePresence** | Framer Motion exit animations on modals, dialogs, and lightbox |
|
|
||||||
| **RCON (TCP Socket)** | Live commands to the emulator (credits, badges, kick, ban) |
|
| **RCON (TCP Socket)** | Live commands to the emulator (credits, badges, kick, ban) |
|
||||||
| **Streaming & Suspense** | Next.js App Router streaming for fast page loads |
|
| **Streaming & Suspense** | Next.js App Router streaming for fast page loads |
|
||||||
| **Automatic Image Optimization** | `next/image` with Sharp for resizing and WebP/AVIF |
|
| **Automatic Image Optimization** | `next/image` with Sharp for resizing and WebP/AVIF |
|
||||||
| **CSS-based Animations** | Base UI components use `data-open`/`data-closed` CSS animations |
|
| **CSS-based Animations** | `input-glow`, `btn-shine`, `Reveal` scroll animations, floating orbs |
|
||||||
| **Compression** | Gzip compression enabled on all responses |
|
| **Compression** | Gzip compression enabled on all responses |
|
||||||
| **Stale Times** | Optimized router cache (30s dynamic, 180s static) |
|
| **Stale Times** | Optimized router cache (30s dynamic, 180s static) |
|
||||||
|
| **PWA** | Service worker with skip-waiting, stale CSS chunk recovery |
|
||||||
|
| **Biome** | Fast linting and formatting (replaces ESLint + Prettier) |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -158,7 +180,7 @@ Open `http://localhost:3000` in your browser.
|
|||||||
│ │ ├── cache.ts # In-memory cache fallback
|
│ │ ├── cache.ts # In-memory cache fallback
|
||||||
│ │ ├── motion.ts # Framer Motion animation variants
|
│ │ ├── motion.ts # Framer Motion animation variants
|
||||||
│ │ └── use-event-source.ts # React hook for SSE subscriptions
|
│ │ └── use-event-source.ts # React hook for SSE subscriptions
|
||||||
│ ├── messages/ # i18n translations (en, nl, de, fr, es, it)
|
│ ├── messages/ # i18n translations (en, nl, de, fr, es, it, pt, da, no, sv)
|
||||||
│ └── env.ts # Zod-validated environment schema
|
│ └── env.ts # Zod-validated environment schema
|
||||||
├── public/
|
├── public/
|
||||||
│ ├── assets/ # Images, icons, fonts
|
│ ├── assets/ # Images, icons, fonts
|
||||||
@@ -228,7 +250,7 @@ Optional OpenAI-powered moderation for comments and guestbook posts. Set `OPENAI
|
|||||||
```bash
|
```bash
|
||||||
pnpm dev # Start with hot reload
|
pnpm dev # Start with hot reload
|
||||||
pnpm typecheck # Type check all files
|
pnpm typecheck # Type check all files
|
||||||
pnpm test # Run test suite (312+ tests)
|
pnpm test # Run test suite
|
||||||
pnpm analyze # Build and analyze bundle sizes
|
pnpm analyze # Build and analyze bundle sizes
|
||||||
pnpm biome:check # Lint and format
|
pnpm biome:check # Lint and format
|
||||||
```
|
```
|
||||||
|
|||||||
Reference in new issue
Block a user