- 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>
9.2 KiB
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
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:
- car - Racing vehicles
- upgrade - Vehicle upgrades (engine, tires, etc.)
- currency - In-game currency (gold, cash)
- 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:
- Configure your web server (IIS, nginx, Apache) to proxy to the ASP.NET Core app
- Update the
appsettings.jsonwith forwarded headers support - 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:
- Add authentication: Implement ASP.NET Core Identity or another auth system
- Use HTTPS: Configure SSL certificates
- Restrict access: Use firewall rules or IP whitelisting
- Secure the database: Use encryption and secure file permissions
- Disable Swagger: Remove Swagger UI in production builds
Example: Add authentication to Program.cs:
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:
:root {
--rr3-primary: #e63946; /* Racing red */
--rr3-dark: #1d3557; /* Dark blue */
--rr3-light: #f1faee; /* Light cream */
}
Adding Custom Pages
- Create new
.cshtmlfile inPages/folder - Create corresponding
.cshtml.cscode-behind file - Add link to
_Layout.cshtmlnavigation - Inject
RR3DbContextin 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.dband 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
🎯 Next Steps
- Test the web panel: Start the server and explore all pages
- Add catalog items: Use the Catalog page to add cars and upgrades
- Connect a game client: Modify an APK to point to your server
- Monitor activity: Watch the dashboard as players connect
- 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.dbfile 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