Initial commit: RR3 Community Server with web admin panel
- ASP.NET Core 8 REST API server - 12 API endpoints matching EA Synergy protocol - SQLite database with Entity Framework Core - Web admin panel with Bootstrap 5 - User, Catalog, Session, Purchase management - Comprehensive documentation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
298
WEB_PANEL_GUIDE.md
Normal file
298
WEB_PANEL_GUIDE.md
Normal file
@@ -0,0 +1,298 @@
|
||||
# RR3 Community Server - Web Admin Panel
|
||||
|
||||
## 🎉 Overview
|
||||
|
||||
The RR3 Community Server now includes a **comprehensive web administration panel** for managing your Real Racing 3 server. The web panel provides an intuitive interface for viewing statistics, managing users, configuring catalog items, monitoring sessions, and more.
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
### 1. Start the Server
|
||||
|
||||
```powershell
|
||||
cd E:\rr3\RR3CommunityServer\RR3CommunityServer
|
||||
dotnet run
|
||||
```
|
||||
|
||||
### 2. Access the Web Panel
|
||||
|
||||
Open your browser and navigate to:
|
||||
```
|
||||
http://localhost:5000
|
||||
```
|
||||
|
||||
The root URL will automatically redirect you to the admin dashboard at `/admin`.
|
||||
|
||||
## 📋 Features
|
||||
|
||||
### Dashboard (`/admin`)
|
||||
- **Real-time Statistics**: View total users, active sessions, devices, and catalog items
|
||||
- **Quick Actions**: Navigate to different management sections
|
||||
- **Recent Activity**: See latest users and active sessions
|
||||
- **Server Information**: View server URL, platform, .NET version, and uptime
|
||||
|
||||
### User Management (`/admin/users`)
|
||||
- View all registered users
|
||||
- Search users by Synergy ID or Device ID
|
||||
- View detailed user information
|
||||
- Delete user accounts
|
||||
- Modal dialogs for user details
|
||||
|
||||
### Catalog Management (`/admin/catalog`)
|
||||
- View all catalog items
|
||||
- Add new items (cars, upgrades, currency, consumables)
|
||||
- Edit existing items (SKU, name, type, price, availability)
|
||||
- Toggle item availability (enable/disable items)
|
||||
- Delete items
|
||||
- Filter items by type
|
||||
|
||||
### Session Management (`/admin/sessions`)
|
||||
- View active and expired sessions
|
||||
- Real-time session statistics
|
||||
- See session expiration times and remaining time
|
||||
- Terminate active sessions
|
||||
- Cleanup expired sessions (bulk delete)
|
||||
- Color-coded session status
|
||||
|
||||
### Purchase History (`/admin/purchases`)
|
||||
- View all in-game purchases
|
||||
- Search purchases by SKU or User ID
|
||||
- View purchase statistics (total count, approved count, total value)
|
||||
- View detailed purchase information
|
||||
- Delete purchase records
|
||||
|
||||
### Server Settings (`/admin/settings`)
|
||||
- View server configuration (URL, endpoints, database, session timeout)
|
||||
- APK configuration instructions
|
||||
- System information (OS, .NET version, uptime, memory usage)
|
||||
- Database statistics dashboard
|
||||
- Quick links to documentation and Swagger API
|
||||
- **Danger Zone**: Reset database (delete all data)
|
||||
|
||||
## 🎨 Design Features
|
||||
|
||||
### Modern UI
|
||||
- **Bootstrap 5** for responsive layout
|
||||
- **Racing-themed color scheme** (red, dark blue)
|
||||
- **Card-based design** with hover effects
|
||||
- **Icon integration** using Bootstrap Icons
|
||||
- **Responsive navigation** for mobile and desktop
|
||||
|
||||
### UX Features
|
||||
- **Real-time stats** on dashboard
|
||||
- **Modal dialogs** for detailed views
|
||||
- **Search functionality** on users and purchases
|
||||
- **Inline editing** for catalog items
|
||||
- **Confirmation dialogs** for destructive actions
|
||||
- **Copy-to-clipboard** for server URLs
|
||||
- **Color-coded badges** for status indicators
|
||||
|
||||
### Accessibility
|
||||
- Semantic HTML structure
|
||||
- Keyboard-friendly navigation
|
||||
- Screen-reader friendly labels
|
||||
- High contrast color scheme
|
||||
- Clear visual hierarchy
|
||||
|
||||
## 📖 Page Details
|
||||
|
||||
### Dashboard Widgets
|
||||
|
||||
**Statistics Cards:**
|
||||
- 👥 Total Users - Count of registered players
|
||||
- 🔄 Active Sessions - Currently online players
|
||||
- 📱 Total Devices - Registered devices
|
||||
- 🏪 Catalog Items - Available items
|
||||
|
||||
**Recent Activity Tables:**
|
||||
- Last 5 registered users
|
||||
- Last 5 active sessions
|
||||
|
||||
**Server Info Panel:**
|
||||
- Server URL with copy button
|
||||
- Platform and .NET version
|
||||
- Database type and API endpoint count
|
||||
- Link to Swagger API documentation
|
||||
|
||||
### Catalog Item Types
|
||||
|
||||
The catalog supports four item types:
|
||||
1. **car** - Racing vehicles
|
||||
2. **upgrade** - Vehicle upgrades (engine, tires, etc.)
|
||||
3. **currency** - In-game currency (gold, cash)
|
||||
4. **consumable** - Single-use items
|
||||
|
||||
### Session Management
|
||||
|
||||
Sessions have a **24-hour expiration** by default. The session manager shows:
|
||||
- Active sessions (green badge with time remaining)
|
||||
- Expired sessions (gray, archived)
|
||||
- Ability to terminate sessions manually
|
||||
- Bulk cleanup of expired sessions
|
||||
|
||||
### Purchase Status
|
||||
|
||||
Purchases in the community server are auto-approved by default:
|
||||
- ✓ **Approved** - Purchase completed
|
||||
- ⏳ **Pending** - Awaiting approval (unused in community server)
|
||||
|
||||
## 🔧 Configuration
|
||||
|
||||
### Server URL
|
||||
The server automatically detects its URL from the request. To use a custom domain:
|
||||
|
||||
1. Configure your web server (IIS, nginx, Apache) to proxy to the ASP.NET Core app
|
||||
2. Update the `appsettings.json` with forwarded headers support
|
||||
3. The web panel will automatically display the correct URL
|
||||
|
||||
### Database Location
|
||||
SQLite database is stored at:
|
||||
```
|
||||
E:\rr3\RR3CommunityServer\RR3CommunityServer\rr3community.db
|
||||
```
|
||||
|
||||
### Seeded Data
|
||||
The database comes pre-seeded with 3 catalog items:
|
||||
- 1000 Gold ($0.99)
|
||||
- Starter Car (Free)
|
||||
- Engine Upgrade ($4.99)
|
||||
|
||||
## 🌐 API Integration
|
||||
|
||||
The web panel is built on top of the existing REST API. You can:
|
||||
- Use the web panel for administration
|
||||
- Use the REST API (`/swagger`) for programmatic access
|
||||
- Both use the same database and business logic
|
||||
|
||||
### Swagger Documentation
|
||||
Access interactive API docs at:
|
||||
```
|
||||
http://localhost:5000/swagger
|
||||
```
|
||||
|
||||
## 🔐 Security Notes
|
||||
|
||||
### Current State (Development)
|
||||
⚠️ The web panel currently has **NO authentication** - it's open access.
|
||||
|
||||
### For Production Use
|
||||
Before deploying to production, you should:
|
||||
|
||||
1. **Add authentication**: Implement ASP.NET Core Identity or another auth system
|
||||
2. **Use HTTPS**: Configure SSL certificates
|
||||
3. **Restrict access**: Use firewall rules or IP whitelisting
|
||||
4. **Secure the database**: Use encryption and secure file permissions
|
||||
5. **Disable Swagger**: Remove Swagger UI in production builds
|
||||
|
||||
Example: Add authentication to `Program.cs`:
|
||||
```csharp
|
||||
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
|
||||
.AddCookie(options =>
|
||||
{
|
||||
options.LoginPath = "/login";
|
||||
options.LogoutPath = "/logout";
|
||||
});
|
||||
|
||||
// In middleware pipeline:
|
||||
app.UseAuthentication();
|
||||
app.UseAuthorization();
|
||||
```
|
||||
|
||||
Then add `[Authorize]` attributes to Razor Pages.
|
||||
|
||||
## 📁 File Structure
|
||||
|
||||
```
|
||||
RR3CommunityServer/
|
||||
├── Pages/
|
||||
│ ├── Admin.cshtml # Dashboard
|
||||
│ ├── Admin.cshtml.cs
|
||||
│ ├── Users.cshtml # User management
|
||||
│ ├── Users.cshtml.cs
|
||||
│ ├── Catalog.cshtml # Catalog management
|
||||
│ ├── Catalog.cshtml.cs
|
||||
│ ├── Sessions.cshtml # Session management
|
||||
│ ├── Sessions.cshtml.cs
|
||||
│ ├── Purchases.cshtml # Purchase history
|
||||
│ ├── Purchases.cshtml.cs
|
||||
│ ├── Settings.cshtml # Server settings
|
||||
│ ├── Settings.cshtml.cs
|
||||
│ ├── _Layout.cshtml # Master layout
|
||||
│ └── _ViewStart.cshtml # Layout binding
|
||||
├── wwwroot/
|
||||
│ ├── css/ # Custom stylesheets
|
||||
│ └── js/ # Custom scripts
|
||||
├── Controllers/ # REST API controllers
|
||||
├── Services/ # Business logic
|
||||
├── Data/ # Database context
|
||||
└── Program.cs # App entry point
|
||||
```
|
||||
|
||||
## 🛠️ Customization
|
||||
|
||||
### Changing Colors
|
||||
Edit `_Layout.cshtml` CSS variables:
|
||||
```css
|
||||
:root {
|
||||
--rr3-primary: #e63946; /* Racing red */
|
||||
--rr3-dark: #1d3557; /* Dark blue */
|
||||
--rr3-light: #f1faee; /* Light cream */
|
||||
}
|
||||
```
|
||||
|
||||
### Adding Custom Pages
|
||||
1. Create new `.cshtml` file in `Pages/` folder
|
||||
2. Create corresponding `.cshtml.cs` code-behind file
|
||||
3. Add link to `_Layout.cshtml` navigation
|
||||
4. Inject `RR3DbContext` in code-behind for database access
|
||||
|
||||
### Modifying Dashboard Widgets
|
||||
Edit `Admin.cshtml` to add/remove cards or change statistics.
|
||||
|
||||
## 🐛 Troubleshooting
|
||||
|
||||
### Web panel not loading
|
||||
- Ensure server is running: `dotnet run`
|
||||
- Check the port (default: 5000 for HTTP, 5001 for HTTPS)
|
||||
- Check firewall settings
|
||||
|
||||
### Database errors
|
||||
- Delete `rr3community.db` and restart server to recreate
|
||||
- Check file permissions on database file
|
||||
- View logs in console output
|
||||
|
||||
### Style issues
|
||||
- Clear browser cache (Ctrl+F5)
|
||||
- Check browser console for CDN loading errors
|
||||
- Ensure Bootstrap CDN is accessible
|
||||
|
||||
### Missing data
|
||||
- Use "Reset Database" in Settings page (⚠️ deletes all data!)
|
||||
- Check that seed data was created on first run
|
||||
- View raw database with DB Browser for SQLite
|
||||
|
||||
## 📚 Related Documentation
|
||||
|
||||
- [Server Implementation Guide](./IMPLEMENTATION_GUIDE.md)
|
||||
- [Network Protocol Analysis](../NETWORK_COMMUNICATION_ANALYSIS.md)
|
||||
- [APK Modification Guide](../APK_MODIFICATION_GUIDE.md)
|
||||
- [Project Index](../PROJECT_INDEX.md)
|
||||
|
||||
## 🎯 Next Steps
|
||||
|
||||
1. **Test the web panel**: Start the server and explore all pages
|
||||
2. **Add catalog items**: Use the Catalog page to add cars and upgrades
|
||||
3. **Connect a game client**: Modify an APK to point to your server
|
||||
4. **Monitor activity**: Watch the dashboard as players connect
|
||||
5. **Customize**: Modify the UI to match your preferences
|
||||
|
||||
## 💡 Tips
|
||||
|
||||
- **Use search features**: Quickly find users and purchases
|
||||
- **Export data**: Use Swagger API to export data programmatically
|
||||
- **Backup database**: Copy `rr3community.db` file regularly
|
||||
- **Monitor sessions**: Clean up expired sessions weekly
|
||||
- **Test purchases**: Add free items to test the purchase flow
|
||||
|
||||
---
|
||||
|
||||
**Made with ❤️ for game preservation and the Real Racing 3 community**
|
||||
Reference in New Issue
Block a user