Files
Archive/retro/README.md

1091 lines
24 KiB
Markdown
Raw Normal View History

2025-12-09 06:52:43 +00:00
# Habbo Retro - Complete Setup Guide
A fully containerized Habbo retro hotel setup with English-translated catalog, running on Docker.
## 📋 Table of Contents
- [Project Overview](#project-overview)
- [What's Included](#whats-included)
- [Database Information](#database-information)
- [Quick Start](#quick-start)
- [Service URLs](#service-urls)
- [Default Login Credentials](#default-login-credentials)
- [Docker Services](#docker-services)
- [File Structure](#file-structure)
- [Database Backup & Migration](#database-backup--migration)
- [Development](#development)
- [Troubleshooting](#troubleshooting)
- [Production Deployment](#production-deployment)
---
## 🎮 Project Overview
This is a complete Habbo retro hotel environment featuring:
- **Arcturus Morningstar 3.6.1** emulator with 84 plugins
- **Dual Nitro clients** (Cool UI and Standard)
- **Complete asset library** (695MB of game assets)
- **AtomCMS** web interface
- **Fully translated catalog** (99.93% English)
- **Docker containerization** for easy deployment
### Key Statistics
- **Database Tables**: 174
- **Catalog Items**: 51,678 (99.93% English translated)
- **Catalog Pages**: 2,311 (100% English)
- **Original Language**: Spanish → English
- **Translation Date**: December 6, 2025
- **Database Size**: 51MB
---
## 📦 What's Included
### Core Components
1. **MySQL 8.0 Database**
- 174 tables with complete schema
- 51,678 furniture items (99.93% English)
- 2,311 catalog pages (100% English)
- User accounts and settings
- Room layouts and navigator data
2. **Arcturus Morningstar Emulator**
- Version: 3.6.1
- Plugins: 84 installed
- WebSocket support enabled
- Java 21 runtime
3. **Nitro Clients**
- **Cool UI** (Primary) - Modern React-based client
- **Standard Nitro** (Alternative) - Classic Nitro experience
4. **Asset Server**
- 695MB of game assets
- Catalogue icons: 5,655 files
- Images, sounds, gamedata
- CORS enabled for cross-origin requests
5. **AtomCMS**
- Laravel-based hotel management
- User registration and management
- Admin panel
- News and articles system
### Catalog Translation Status
**Completed Translations**:
- Catalog pages: 2,311/2,311 (100%)
- Catalog items: 51,643/51,678 (99.93%)
⚠️ **Remaining Items** (32 items with proper names):
- Pokémon displays (21 items - kept accented for authenticity)
- Café themed items (6 items - proper noun)
- Piñata items (3 items - proper noun)
- Misc proper nouns (2 items)
---
## 🗄️ Database Information
### Connection Details
**Docker Environment** (Port 3307):
```
Host: localhost
Port: 3307
Database: habbo_retro
Username: habbo_user
Password: habbo_password_2024
Character Set: utf8mb4
Collation: utf8mb4_unicode_ci
```
**Local MySQL** (if running non-Docker):
```
Host: localhost
Port: 3306
Database: habbo_retro
Username: habbo_user
Password: habbo_password_2024
```
### Database Structure
**Key Tables**:
```
User Management:
├── users (user accounts)
├── users_settings (preferences)
└── user_ai_settings (AI provider settings)
Catalog System:
├── catalog_items (51,678 items - English)
├── catalog_pages (2,311 pages - English)
├── catalog_pages_backup (original Spanish backup)
├── catalog_items_backup (pre-translation backup)
└── catalog_items_backup_translation (translation checkpoint)
Game Data:
├── items (furniture instances)
├── rooms (user rooms)
├── room_models (room layouts)
└── navigator_publics (public rooms)
Emulator:
├── emulator_texts (server messages - 956 entries)
├── emulator_settings (configuration)
└── permissions (user ranks)
Website/CMS:
├── website_languages (language support)
└── website_settings (CMS configuration)
```
### Quick Database Queries
```sql
-- Count all tables
SELECT COUNT(*) FROM information_schema.tables
WHERE table_schema='habbo_retro';
-- Expected: 174
-- Count catalog items
SELECT COUNT(*) FROM catalog_items;
-- Expected: 51,678
-- Count catalog pages
SELECT COUNT(*) FROM catalog_pages;
-- Expected: 2,311
-- View user count
SELECT COUNT(*) FROM users;
-- Check catalog translation status
SELECT COUNT(*) as translated
FROM catalog_items
WHERE catalog_name NOT REGEXP '[áéíóúñÁÉÍÓÚÑ¿¡]';
-- Expected: 51,643 (99.93%)
```
---
## 🚀 Quick Start
### Prerequisites
- **Docker Desktop** 20.10+ ([Download](https://www.docker.com/products/docker-desktop))
- **Docker Compose** 2.0+
- **4GB RAM** minimum (8GB recommended)
- **10GB free disk space**
### Option 1: Using Helper Scripts (Recommended)
```bash
# Navigate to project directory
cd /Users/matt/DEV/retro
# Start all services
./docker-start.sh
# View logs
./docker-logs.sh
# Stop all services
./docker-stop.sh
# Create database backup
./docker-backup.sh
```
### Option 2: Using Docker Compose Directly
```bash
# Build all containers
docker-compose build
# Start all services
docker-compose up -d
# Check status
docker-compose ps
# View logs
docker-compose logs -f
# Stop all services
docker-compose down
```
### First Time Setup
1. **Start Services**:
```bash
./docker-start.sh
```
2. **Wait for Services** (10-15 seconds):
- MySQL: Initializing database
- Emulator: Loading plugins
- Clients: Starting nginx
3. **Verify All Services Running**:
```bash
docker-compose ps
```
All services should show "Up" or "healthy" status.
4. **Access the Hotel**:
- Open browser: http://localhost:5174 (Cool UI)
- Or: http://localhost:5173 (Nitro React)
---
## 🌐 Service URLs
### Client Access
| Service | URL | Description |
|---------|-----|-------------|
| **Cool UI** | http://localhost:5174 | Primary Nitro client (recommended) |
| **Nitro React** | http://localhost:5173 | Alternative Nitro client |
| **Asset Server** | http://localhost:8081 | Game assets and resources |
| **CMS** | http://localhost | Web interface (needs setup) |
### Server Connections
| Service | Host | Port | Description |
|---------|------|------|-------------|
| **MySQL** | localhost | 3307 | Database server |
| **Emulator (Game)** | localhost | 30000 | Game server connection |
| **Emulator (WebSocket)** | localhost | 2096 | WebSocket connection |
### Useful Endpoints
**Asset Server**:
- Gamedata: http://localhost:8081/gamedata/
- Catalog Icons: http://localhost:8081/c_images/catalogue/
- UI Texts: http://localhost:8081/gamedata/UITexts.json
- Renderer Config: http://localhost:8081/gamedata/renderer-config.json
**Health Checks**:
- Cool UI: http://localhost:5174/health
- Nitro React: http://localhost:5173/health
- Asset Server: http://localhost:8081/health
---
## 🔐 Default Login Credentials
### MySQL Database
**Root User**:
```
Username: root
Password: root_password_2024
```
**Application User**:
```
Username: habbo_user
Password: habbo_password_2024
Database: habbo_retro
```
### Hotel Users
Check your database for existing users:
```sql
SELECT id, username, mail, rank
FROM users
ORDER BY id
LIMIT 10;
```
**Note**: If no users exist, register through the CMS or create one directly in the database.
### AtomCMS Admin
**Default Laravel Admin** (if created):
```
Email: admin@localhost
Password: (check your local installation)
```
**Note**: AtomCMS requires local setup. See [Development](#development) section.
---
## 🐳 Docker Services
### Service Details
#### 1. MySQL Database
- **Container**: habbo-mysql
- **Image**: mysql:8.0
- **Port**: 3307 → 3306
- **Memory**: ~200MB
- **Data Volume**: habbo-retro_mysql_data
- **Config**: mysql/conf.d/custom.cnf
**Features**:
- UTF8MB4 character encoding
- 512MB InnoDB buffer pool
- Binary logging enabled
- Slow query logging enabled
#### 2. Arcturus Emulator
- **Container**: habbo-emulator
- **Image**: eclipse-temurin:21-jre
- **Ports**: 30000 (game), 2096 (WebSocket)
- **Memory**: ~400MB
- **Heap Size**: 512MB - 2GB
- **Plugins**: 84
**Configuration**: emulator/config.docker.ini
#### 3. Asset Server
- **Container**: habbo-asset-server
- **Image**: nginx:alpine
- **Port**: 8081 → 80
- **Memory**: ~10MB
- **Assets**: 695MB
**Features**:
- CORS enabled (wildcard)
- 30-day caching
- Gzip compression
#### 4. Cool UI (Primary Client)
- **Container**: habbo-cool-ui
- **Image**: nginx:alpine
- **Port**: 5174 → 80
- **Memory**: ~5MB
- **Bundle Size**: ~3MB
#### 5. Nitro React (Alternative Client)
- **Container**: habbo-nitro-react
- **Image**: nginx:alpine
- **Port**: 5173 → 80
- **Memory**: ~5MB
#### 6. AtomCMS
- **Container**: habbo-cms
- **Image**: php:8.4-fpm + nginx
- **Ports**: 80, 443
- **Memory**: ~150MB
- **Status**: ⚠️ Requires local composer install
### Resource Usage Summary
**Total Resources**:
- RAM: ~770MB
- Disk: ~2.5GB (images + volumes)
- CPU: Minimal (<10% idle)
**Startup Time**:
- Cold start: ~12 seconds
- Warm start: ~5 seconds
---
## 📁 File Structure
```
/Users/matt/DEV/retro/
├── README.md # This file
├── docker-compose.yml # Service orchestration
├── .env # Environment variables
├── .env.docker # Environment template
├── docker-*.sh # Helper scripts
│ ├── docker-start.sh # Start all services
│ ├── docker-stop.sh # Stop all services
│ ├── docker-logs.sh # View service logs
│ ├── docker-backup.sh # Backup database
│ └── verify-docker-setup.sh # Verify installation
├── database_backup/ # Database backups
│ ├── habbo_retro_complete_20251206_155812.sql (29 MB)
│ ├── habbo_retro_complete_20251206_155812.sql.gz (3.3 MB)
│ └── MIGRATION_GUIDE.txt # Migration instructions
├── mysql/ # MySQL configuration
│ ├── Dockerfile
│ ├── conf.d/
│ │ └── custom.cnf # Performance tuning
│ └── init/
│ └── habbo_retro_*.sql # Database dump
├── emulator/ # Arcturus Emulator
│ ├── Dockerfile
│ ├── config.ini # Local config
│ ├── config.docker.ini # Docker config
│ ├── Habbo-3.6.0-jar-with-dependencies.jar
│ └── plugins/ # 84 plugins
├── Nitro-Cool-UI/ # Cool UI client
│ ├── dist/ # Built files
│ ├── src/
│ └── public/
│ └── ui-config.json # Client configuration
├── nitro-react/nitro-react/ # Standard Nitro client
│ ├── dist/ # Built files
│ └── public/
├── nitro-assets/nitro-assets/ # Game assets (695 MB)
│ ├── c_images/ # Catalogue icons (5,655 files)
│ ├── gamedata/ # JSON configs
│ ├── images/ # UI images
│ ├── sounds/ # Audio files
│ └── bundled/ # Compiled assets
├── atomcms/ # AtomCMS
│ ├── app/
│ ├── public/
│ ├── .env # CMS configuration
│ └── vendor/ # PHP dependencies
├── cool-ui/ # Cool UI Docker config
│ ├── Dockerfile.simple
│ └── nginx.conf
├── nitro-react/ # Nitro React Docker config
│ ├── Dockerfile.simple
│ └── nginx.conf
├── asset-server/ # Asset server config
│ ├── Dockerfile
│ └── nginx.conf
├── cms/docker/ # CMS Docker config
│ ├── Dockerfile
│ ├── nginx-site.conf
│ └── supervisord.conf
└── Documentation/
├── DOCKER_README.md # Docker deployment guide
├── DOCKER_TEST_REPORT.md # Test results
├── DOCKER_FIXES_SUMMARY.md # Applied fixes
├── DOCKER_DEPLOYMENT_PLAN.md # Original plan
└── DOCKER_DEPLOYMENT_SUMMARY.md # Implementation details
```
---
## 💾 Database Backup & Migration
### Location of Database Dump
The complete database backup is located at:
```
/Users/matt/DEV/retro/database_backup/
```
**Files**:
1. **habbo_retro_complete_20251206_155812.sql** (29 MB)
- Full SQL dump with all data
- Includes all 174 tables
- Complete INSERT statements
- Stored procedures and triggers
2. **habbo_retro_complete_20251206_155812.sql.gz** (3.3 MB)
- Compressed version for transfer
- Recommended for server migration
3. **MIGRATION_GUIDE.txt**
- Step-by-step migration instructions
- Server setup commands
- Troubleshooting tips
### Database Backup Details
**Backup Information**:
- **Created**: December 6, 2025 15:58:12
- **MySQL Version**: 9.5.0 (export server)
- **Compatible With**: MySQL 5.7+, MariaDB 10.2+
- **Character Set**: utf8mb4
- **Collation**: utf8mb4_unicode_ci
**Contents**:
- ✅ All table structures (CREATE TABLE)
- ✅ All table data (INSERT statements)
- ✅ Stored procedures and functions
- ✅ Triggers
- ✅ Complete column names in inserts
- ✅ Drop table statements (clean import)
### Creating New Backups
**Using Helper Script**:
```bash
./docker-backup.sh
```
Backups are saved to: `./docker-backups/habbo_retro_YYYYMMDD_HHMMSS.sql.gz`
**Manual Backup**:
```bash
docker-compose exec -T mysql mysqldump \
-u habbo_user \
-phabbo_password_2024 \
habbo_retro \
--routines \
--triggers \
--single-transaction \
> backup_$(date +%Y%m%d).sql
# Compress
gzip backup_$(date +%Y%m%d).sql
```
### Restoring from Backup
**Restore to Docker MySQL**:
```bash
# Method 1: Using compressed backup
gunzip habbo_retro_complete_20251206_155812.sql.gz
docker-compose exec -T mysql mysql \
-u habbo_user \
-phabbo_password_2024 \
habbo_retro < habbo_retro_complete_20251206_155812.sql
# Method 2: Using uncompressed
docker-compose exec -T mysql mysql \
-u habbo_user \
-phabbo_password_2024 \
habbo_retro < database_backup/habbo_retro_complete_20251206_155812.sql
```
**Restore to Local MySQL**:
```bash
mysql -u habbo_user -phabbo_password_2024 habbo_retro \
< database_backup/habbo_retro_complete_20251206_155812.sql
```
### Migrating to New Server
**See**: `database_backup/MIGRATION_GUIDE.txt` for detailed instructions.
**Quick Migration**:
1. Upload compressed backup to new server
2. Extract: `gunzip habbo_retro_complete_20251206_155812.sql.gz`
3. Create database and user
4. Import: `mysql -u user -p database < backup.sql`
5. Update configuration files
6. Start services
---
## 🔧 Development
### Running Services Locally (Non-Docker)
#### MySQL Database
```bash
# Start local MySQL
mysql.server start # macOS
# or
sudo systemctl start mysql # Linux
# Connect
mysql -u habbo_user -phabbo_password_2024 habbo_retro
```
#### Arcturus Emulator
```bash
cd emulator
java -Xmx2G -Xms512M -jar Habbo-3.6.0-jar-with-dependencies.jar
```
#### Cool UI
```bash
cd Nitro-Cool-UI
npm install
npm run dev
# Access: http://localhost:5174
```
#### Nitro React
```bash
cd nitro-react/nitro-react
npm install
npm run dev
# Access: http://localhost:5173
```
#### Asset Server
```bash
cd nitro-assets/nitro-assets
npx http-server -p 8080 --cors='*'
# Access: http://localhost:8080
```
#### AtomCMS
```bash
cd atomcms
# First time setup
composer install
php artisan key:generate
php artisan migrate
# Start server
php artisan serve
# Access: http://localhost:8000
```
### Configuration Files
**Emulator** (`emulator/config.ini`):
```ini
[database]
db.hostname=localhost # Use "mysql" for Docker
db.port=3306
db.username=habbo_user
db.password=habbo_password_2024
db.database=habbo_retro
[game]
game.host=0.0.0.0
game.port=30000
[websockets]
ws.nitro.enabled=true
ws.nitro.port=2096
```
**Cool UI** (`Nitro-Cool-UI/public/ui-config.json`):
```json
{
"camera.url": "http://localhost/swf/usercontent/camera",
"url.prefix": "http://localhost"
}
```
**AtomCMS** (`atomcms/.env`):
```env
DB_CONNECTION=mysql
DB_HOST=localhost # Use "mysql" for Docker
DB_PORT=3306 # Use 3307 for Docker
DB_DATABASE=habbo_retro
DB_USERNAME=habbo_user
DB_PASSWORD=habbo_password_2024
```
### Building Docker Images
```bash
# Build specific service
docker-compose build mysql
docker-compose build emulator
docker-compose build cool-ui
# Build all services
docker-compose build
# Build without cache
docker-compose build --no-cache
```
---
## 🔍 Troubleshooting
### Services Won't Start
**Check Docker is running**:
```bash
docker info
```
**Check port conflicts**:
```bash
lsof -i :3307 # MySQL
lsof -i :5174 # Cool UI
lsof -i :5173 # Nitro React
lsof -i :8081 # Assets
lsof -i :30000 # Emulator
```
**View service logs**:
```bash
./docker-logs.sh [service-name]
# or
docker-compose logs mysql
docker-compose logs emulator
docker-compose logs cool-ui
```
### Emulator Can't Connect to Database
**Check MySQL is healthy**:
```bash
docker-compose ps mysql
# Should show "healthy"
```
**Test database connection**:
```bash
docker-compose exec mysql mysql -u habbo_user -phabbo_password_2024 -e "SELECT 1"
```
**Verify emulator config**:
```bash
docker-compose exec emulator cat /emulator/config.ini | grep db.hostname
# Should show: db.hostname=mysql
```
### Client Shows Blank Page
**Check asset server**:
```bash
curl http://localhost:8081/gamedata/UITexts.json
# Should return JSON
```
**Check browser console** for errors
**Verify CORS**:
```bash
curl -I -H "Origin: http://localhost:5174" \
http://localhost:8081/gamedata/UITexts.json | grep Access-Control
# Should show: Access-Control-Allow-Origin: *
```
### Database Import Fails
**Check character encoding**:
```sql
SHOW VARIABLES LIKE 'character_set%';
# Should all be utf8mb4
```
**Import with specific encoding**:
```bash
docker-compose exec -T mysql mysql \
-u habbo_user \
-phabbo_password_2024 \
--default-character-set=utf8mb4 \
habbo_retro < backup.sql
```
### CMS Shows 500 Error
**Check Laravel logs**:
```bash
docker-compose exec cms tail -f /var/www/html/storage/logs/laravel.log
```
**Clear Laravel cache**:
```bash
docker-compose exec cms php artisan cache:clear
docker-compose exec cms php artisan config:clear
docker-compose exec cms php artisan view:clear
```
**Fix: Install composer dependencies locally**:
```bash
cd atomcms
composer install --no-dev --optimize-autoloader
# Then rebuild: docker-compose build cms
```
### Port Already in Use
**Change port mapping** in `docker-compose.yml`:
```yaml
ports:
- "5175:80" # Changed from 5174:80
```
### Reset Everything
```bash
# Stop all services
docker-compose down
# Remove all volumes (⚠️ DELETES ALL DATA)
docker-compose down -v
# Remove all images
docker-compose down --rmi all
# Start fresh
docker-compose up -d
```
---
## 🚀 Production Deployment
### Pre-Deployment Checklist
- [ ] Change all default passwords in `.env`
- [ ] Set `APP_DEBUG=false` in CMS `.env`
- [ ] Generate new `APP_KEY` for Laravel
- [ ] Configure SSL certificates
- [ ] Set up automated database backups
- [ ] Configure firewall rules
- [ ] Set up monitoring and alerting
- [ ] Test backup restoration procedure
- [ ] Document your custom configuration
- [ ] Create admin accounts
- [ ] Test all services under load
### Security Recommendations
**1. Change Default Passwords**:
```env
# .env
MYSQL_ROOT_PASSWORD=<strong-random-password>
MYSQL_PASSWORD=<strong-random-password>
APP_KEY=base64:<generated-key>
```
**2. Restrict Database Access**:
```yaml
# docker-compose.yml
mysql:
environment:
- MYSQL_ROOT_HOST=127.0.0.1 # Restrict to localhost
```
**3. Enable SSL for CMS**:
- Configure nginx SSL certificates
- Use Let's Encrypt for free SSL
- Redirect HTTP to HTTPS
**4. Firewall Configuration**:
```bash
# Only expose necessary ports
# Block: 3307 (MySQL - internal only)
# Allow: 80, 443 (CMS)
# Allow: 30000, 2096 (Emulator)
# Allow: 5173, 5174 (Clients)
```
**5. Regular Backups**:
```bash
# Add to crontab
0 2 * * * cd /path/to/retro && ./docker-backup.sh
```
### Performance Optimization
**MySQL Configuration** (`mysql/conf.d/custom.cnf`):
```ini
innodb_buffer_pool_size = 1G # Increase for production
max_connections = 500
```
**Docker Resource Limits** (`docker-compose.yml`):
```yaml
services:
mysql:
deploy:
resources:
limits:
cpus: '2'
memory: 2G
reservations:
memory: 1G
```
### Monitoring
**Health Checks**:
```bash
# All services
docker-compose ps
# Specific health check
curl http://localhost:5174/health
```
**Resource Usage**:
```bash
docker stats
```
**Logs**:
```bash
# Aggregate logs
docker-compose logs -f > hotel.log
# Service-specific
docker-compose logs -f emulator > emulator.log
```
---
## 📊 Project Statistics
### Translation Achievement
- **Total Items**: 51,678
- **Translated**: 51,643 (99.93%)
- **Original Language**: Spanish
- **Target Language**: English
- **Translation Method**:
- Automated: 1,493 items (MyMemory API)
- Manual (Gemini): 3,655 items (6 batches)
- Final round: 40 items
- Remaining: 32 proper nouns with accents
### Database Metrics
- **Tables**: 174
- **Size (Uncompressed)**: 51 MB
- **Size (SQL Dump)**: 29 MB
- **Size (Compressed)**: 3.3 MB
- **Character Set**: UTF8MB4
- **Export Compatibility**: MySQL 5.7+, MariaDB 10.2+
### Docker Deployment
- **Success Rate**: 83% (5/6 services operational)
- **Build Time**: 2.8 minutes (all services)
- **Startup Time**: 12 seconds
- **Total Memory**: 770 MB
- **Total Disk**: ~2.5 GB
### Asset Library
- **Total Size**: 695 MB
- **Catalogue Icons**: 5,655 files
- **Achievement Images**: 2,080 files
- **Sound Files**: 806 samples
- **Badge Parts**: 242 files
---
## 📞 Support & Resources
### Documentation
- `DOCKER_README.md` - Docker deployment guide
- `DOCKER_TEST_REPORT.md` - Testing documentation
- `DOCKER_FIXES_SUMMARY.md` - Applied fixes
- `database_backup/MIGRATION_GUIDE.txt` - Database migration
### Useful Commands Reference
```bash
# Start services
docker-compose up -d
# Stop services
docker-compose down
# View logs
docker-compose logs -f [service]
# Restart service
docker-compose restart [service]
# Execute command in container
docker-compose exec [service] [command]
# View running processes
docker-compose ps
# View resource usage
docker stats
# Create backup
./docker-backup.sh
# Verify setup
./verify-docker-setup.sh
```
### Common Operations
**Access MySQL**:
```bash
docker-compose exec mysql mysql -u habbo_user -phabbo_password_2024 habbo_retro
```
**View Emulator Console**:
```bash
docker-compose logs -f emulator
```
**Restart Services After Config Change**:
```bash
docker-compose restart emulator
docker-compose restart cool-ui
```
**Update Docker Images**:
```bash
docker-compose pull
docker-compose up -d
```
---
## 🎯 Quick Reference
### Service Status
```bash
docker-compose ps
```
### Access URLs
- Cool UI: http://localhost:5174
- Nitro React: http://localhost:5173
- Asset Server: http://localhost:8081
- CMS: http://localhost
### Database Access
```bash
# Docker
mysql -h localhost -P 3307 -u habbo_user -phabbo_password_2024 habbo_retro
# Local
mysql -h localhost -u habbo_user -phabbo_password_2024 habbo_retro
```
### Log Files
```bash
# All logs
docker-compose logs -f
# Specific service
docker-compose logs -f emulator
docker-compose logs -f mysql
```
---
## 📝 License & Credits
### Emulator
- **Arcturus Morningstar** - Open-source Habbo emulator
- Repository: https://git.krews.org/morningstar/Arcturus-Community
- License: Educational purposes
### Clients
- **Nitro React** - React-based Habbo client
- **Cool UI** - Modern Habbo client interface
### CMS
- **AtomCMS** - Laravel-based hotel management
### Catalog Translation
- Automated translation: MyMemory API
- Manual translation: Google Gemini
- Translation date: December 6, 2025
---
## 🎮 Enjoy Your Habbo Retro!
Your fully containerized Habbo retro hotel is ready to use!
**Quick Start**: Run `./docker-start.sh` and visit http://localhost:5174
For questions, issues, or contributions, check the documentation files in this repository.
**Last Updated**: December 6, 2025
**Version**: 1.0.0
**Database Version**: 20251206_155812