32 KiB
Glossary
This document defines technical terms, project-specific terminology, and architectural concepts used throughout the Flashpoint Web application.
Table of Contents
- Project-Specific Terms
- Technical Terms
- Architecture Terms
- Database Terms
- Authentication & Authorization
- Frontend Terms
- Game & Emulation Terms
- Development Terms
Project-Specific Terms
Flashpoint
Definition: The Flashpoint Archive is a community-driven preservation project for web games and animations, primarily Flash content that is no longer accessible due to Adobe Flash Player's end-of-life.
Usage: "Flashpoint contains over 100,000 games and animations preserved from the early web era."
Reference: https://flashpointarchive.org/
Flashpoint Launcher
Definition: The official desktop application for browsing and playing content from the Flashpoint Archive. It manages the flashpoint.sqlite database and game files.
Usage: "The Flashpoint Launcher updates the game database automatically when new content is added."
Repository: D:\Repositories\Community\launcher
Flashpoint Database
Definition: The read-only SQLite database (flashpoint.sqlite) containing metadata for all games and animations in the Flashpoint Archive.
Usage: "The backend watches the Flashpoint database for changes and hot-reloads connections when updates occur."
Location: D:/Flashpoint/Data/flashpoint.sqlite
See Also: Database Schema Reference
htdocs
Definition: Directory containing legacy web content and assets required for serving Flash games. Mirrors the structure of historical web servers.
Usage: "The game-service proxy server serves files from htdocs when games request historical web resources."
Location: D:/Flashpoint/Legacy/htdocs
Library
Definition: Top-level categorization of Flashpoint content. Main libraries include "arcade" (games) and "theatre" (animations).
Usage: "Filter games by library to separate playable games from animations."
Values:
arcade- Playable gamestheatre- Animations (non-interactive)
Game Data
Definition: The actual game files, assets, and launch information stored in the game_data table. A single game may have multiple data entries.
Usage: "When launching a game, the backend selects the game_data entry with presentOnDisk = 1."
See Also: game_data table in Database Schema Reference
Present on Disk
Definition: Status indicator for whether game files are downloaded locally. Values: NULL (no data needed), 0 (needs download), 1 (downloaded).
Usage: "Games with presentOnDisk = 1 can be played immediately without downloading."
Archive State
Definition: Indicator of the game's archival status within Flashpoint, related to content availability and preservation state.
Usage: "Archive state helps identify which games are fully preserved versus partially documented."
Order Title
Definition: Normalized version of a game's title used for alphabetical sorting, typically lowercase and stripped of leading articles ("The", "A").
Usage: "Games are sorted alphabetically using orderTitle to ensure consistent ordering."
Example: "The Legend of Zelda" → "legend of zelda"
Curation
Definition: The process of adding, verifying, and preserving games for inclusion in the Flashpoint Archive. Community members create curations containing game metadata and files.
Usage: "Each game in Flashpoint has gone through the curation process to ensure quality and accuracy."
Technical Terms
JWT (JSON Web Token)
Definition: A compact, URL-safe token format used for securely transmitting authentication claims between parties. Contains a header, payload, and signature.
Usage: "The backend generates a JWT access token upon successful login."
Components:
- Header: Token type and signing algorithm
- Payload: User claims (userId, username, role)
- Signature: HMAC SHA-256 signature for verification
Token Types:
- Access Token: Short-lived (default 1 hour) JWT for API authentication
- Refresh Token: Long-lived (default 7 days) random string for obtaining new access tokens
See Also: JWT.io
RBAC (Role-Based Access Control)
Definition: Authorization model where permissions are assigned to roles, and users are assigned roles. Enables granular access control without managing permissions per user.
Usage: "RBAC allows administrators to control feature access by assigning users to roles."
Hierarchy:
- Permissions: Atomic access rights (e.g., "games.play", "users.create")
- Roles: Collections of permissions (e.g., "admin", "user", "guest")
- Users: Assigned to one role, inherit all role permissions
See Also: Role-Based Access Control
CORS (Cross-Origin Resource Sharing)
Definition: Browser security mechanism that controls how web pages from one origin can access resources from another origin.
Usage: "The backend configures CORS to allow the frontend origin to make API requests."
Configuration:
- Backend: Restricts to frontend origin (http://localhost:5173 in development)
- Game-service: Allows all origins (required for cross-domain game content)
See Also: MDN CORS Documentation
bcrypt
Definition: Password hashing function based on the Blowfish cipher, designed to be computationally expensive to resist brute-force attacks.
Usage: "User passwords are hashed with bcrypt before storage in the database."
Properties:
- Cost Factor: 10 (default) - number of hashing rounds (2^10 = 1024 rounds)
- Salt: Automatically generated and embedded in the hash
- One-way: Hashes cannot be reversed, only verified
Example Hash: $2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
SQLite
Definition: Self-contained, serverless, zero-configuration SQL database engine. Used for both Flashpoint metadata and user data storage.
Usage: "Flashpoint Web uses two SQLite databases: flashpoint.sqlite (read-only) and user.db (read-write)."
Advantages:
- No separate database server required
- Single-file databases
- ACID compliant
- Fast for read-heavy workloads
Libraries:
- BetterSqlite3: Synchronous Node.js SQLite library used in backend
See Also: SQLite Documentation
Hot-Reload
Definition: Automatic reloading of database connections or code when files change, without requiring server restart.
Usage: "The DatabaseService implements hot-reload for flashpoint.sqlite using file watching."
Implementation:
- Watches file modification time using
fs.watchFile() - Closes existing connection
- Opens new connection to updated file
- Prevents stale data from being served
Middleware
Definition: Functions that execute during the request-response cycle, with access to the request object, response object, and next middleware function.
Usage: "Authentication middleware validates JWT tokens before passing requests to route handlers."
Common Middleware:
- Authentication: Verifies JWT and attaches user to request
- RBAC: Checks user permissions for protected endpoints
- Activity Logger: Logs user actions for audit trail
- Rate Limiting: Prevents abuse by limiting request frequency
- Error Handler: Catches and formats errors
See Also: Express.js Middleware
Prepared Statements
Definition: Parameterized SQL queries that separate query structure from data values, preventing SQL injection attacks.
Usage: "All database queries use prepared statements to ensure security."
Example:
// Safe: uses prepared statement
db.prepare('SELECT * FROM users WHERE username = ?').get(username);
// Unsafe: vulnerable to SQL injection
db.prepare(`SELECT * FROM users WHERE username = '${username}'`).get();
Proxy Server
Definition: Intermediate server that forwards requests from clients to other servers, often modifying requests or responses.
Usage: "The game-service proxy server forwards game content requests and provides CDN fallback."
Features:
- Request forwarding to local files or external CDNs
- MIME type detection and headers
- Caching of external resources
- CORS header injection
See Also: HTTP Proxy Server
MIME Type
Definition: Standard identifier for file format and content type, used in HTTP Content-Type headers.
Usage: "The game-service detects MIME types based on file extensions to serve content correctly."
Common Types:
application/x-shockwave-flash- SWF filestext/html- HTML filesapplication/javascript- JavaScript filesimage/png- PNG images
See Also: MIME Types
Rate Limiting
Definition: Technique to control the rate of requests from clients to prevent abuse and ensure fair resource allocation.
Usage: "The backend implements rate limiting on authentication endpoints to prevent brute-force attacks."
Configuration:
- Login endpoint: 5 requests per 15 minutes per IP
- API endpoints: 100 requests per 15 minutes per IP
Library: express-rate-limit
Singleton
Definition: Design pattern ensuring a class has only one instance, providing a global point of access.
Usage: "The DatabaseService uses a singleton pattern to maintain a single database connection."
Examples:
DatabaseServiceinstanceUserDatabaseServiceinstanceCachedSystemSettingsServiceinstance
Architecture Terms
Monorepo
Definition: Software development strategy where code for multiple projects is stored in a single repository.
Usage: "Flashpoint Web is a monorepo containing backend, frontend, and game-service packages."
Structure:
flashpoint-web/
├── backend/ # Express API server
├── frontend/ # React SPA
├── game-service/ # Game content proxy
└── package.json # Root workspace configuration
Benefits:
- Shared dependencies and tooling
- Atomic commits across services
- Simplified development workflow
Service Layer Pattern
Definition: Architectural pattern separating business logic into dedicated service classes, decoupling it from HTTP routes and controllers.
Usage: "The backend uses the service layer pattern with services in src/services/ and routes in src/routes/."
Layers:
- Routes: HTTP request handling, validation, response formatting
- Services: Business logic, database operations, data transformation
- Database: Data access layer (DatabaseService, UserDatabaseService)
Example Services:
GameService- Game metadata queriesAuthService- Authentication and token managementPlayTrackingService- Play session tracking
Separation of Concerns
Definition: Design principle dividing a system into distinct sections, each addressing a separate concern.
Usage: "Flashpoint Web separates game metadata (backend), game file serving (game-service), and UI (frontend)."
Separation:
- Backend: Game metadata, user management, authentication
- Game-service: Game file serving, proxy, ZIP mounting
- Frontend: User interface, state management, routing
API Gateway
Definition: Server that acts as an entry point for a collection of microservices, routing requests and aggregating responses.
Usage: "The backend acts as an API gateway, delegating game file requests to the game-service."
Responsibilities:
- Request routing
- Authentication/authorization
- Response aggregation
- Protocol translation
File Watching
Definition: Monitoring file system events (modification, creation, deletion) to trigger actions automatically.
Usage: "DatabaseService uses file watching to detect when Flashpoint Launcher updates the game database."
Implementation:
fs.watchFile()polls file modification time- Triggers reconnection when mtime changes
- Prevents stale data from being served
State Management
Definition: Approach to managing application data that changes over time, ensuring consistency between UI and underlying data.
Usage: "The frontend uses Zustand for client state and React Query for server state management."
State Types:
- Server State: Data from API (games, users, playlists) - managed by React Query
- Client State: UI state (sidebar, theme, view mode) - managed by Zustand
- URL State: Route parameters and query strings - managed by React Router
See Also: State Management
Lazy Loading
Definition: Design pattern that defers initialization of an object or resource until it's needed.
Usage: "React Router lazy loads route components to reduce initial bundle size."
Benefits:
- Faster initial page load
- Reduced memory usage
- Better code splitting
Code Splitting
Definition: Technique of dividing code into smaller bundles that can be loaded on demand.
Usage: "Vite automatically code-splits routes for optimal loading performance."
Implementation:
- Route-based splitting (React.lazy)
- Dynamic imports
- Vendor bundle separation
Server-Side Rendering (SSR)
Definition: Rendering web pages on the server and sending HTML to the client, rather than relying on client-side JavaScript.
Usage: "Flashpoint Web uses client-side rendering (CSR), not SSR, for a fully interactive SPA."
Note: Flashpoint Web is a Single-Page Application (SPA) with client-side rendering. SSR is not currently implemented.
Database Terms
Migration
Definition: Versioned database schema changes that can be applied sequentially to evolve the database structure over time.
Usage: "Migrations are stored in backend/src/migrations/ and run automatically on server startup."
Format: 00X_description.sql (e.g., 001_user-schema.sql)
Best Practices:
- Never modify existing migrations
- Always create new migrations for schema changes
- Use
IF NOT EXISTSclauses - Test on database copies first
See Also: Database Schema
Foreign Key
Definition: Database constraint establishing a link between two tables, ensuring referential integrity.
Usage: "The users.role_id column is a foreign key referencing roles.id."
Constraints:
ON DELETE CASCADE- Delete child records when parent is deletedON DELETE SET NULL- Set child column to NULL when parent is deletedON DELETE RESTRICT- Prevent deletion of parent if children exist
Index
Definition: Database structure that improves query performance by creating a sorted copy of selected columns.
Usage: "An index on users.username enables fast username lookups during login."
Types:
- Primary Key Index: Automatically created for primary keys
- Unique Index: Ensures column values are unique
- Composite Index: Index on multiple columns
- Full-Text Index: For text search (not used in SQLite)
Trade-offs:
- Benefits: Faster queries on indexed columns
- Costs: Slower writes, increased storage
Transaction
Definition: Sequence of database operations treated as a single unit of work, ensuring atomicity (all or nothing).
Usage: "User creation wraps INSERT statements in a transaction to ensure data consistency."
Properties (ACID):
- Atomicity: All operations succeed or all fail
- Consistency: Database remains in valid state
- Isolation: Concurrent transactions don't interfere
- Durability: Committed changes persist
Example:
db.transaction(() => {
db.prepare('INSERT INTO users ...').run(userData);
db.prepare('INSERT INTO user_stats ...').run(statsData);
})();
Schema
Definition: Structure of a database, defining tables, columns, data types, constraints, and relationships.
Usage: "The user database schema includes tables for users, roles, permissions, and activity logs."
Components:
- Tables: Collections of related data
- Columns: Individual data fields
- Data Types: INTEGER, TEXT, BOOLEAN, REAL
- Constraints: PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL, CHECK
See Also: Database Schema Reference
Normalization
Definition: Process of organizing database schema to reduce redundancy and improve data integrity.
Usage: "The user database uses normalization to separate permissions from roles."
Normal Forms:
- 1NF: Atomic values, no repeating groups
- 2NF: 1NF + no partial dependencies
- 3NF: 2NF + no transitive dependencies
Example: Instead of storing permissions as comma-separated strings in roles, we use a separate permissions table with role_permissions mapping.
Denormalization
Definition: Intentionally introducing redundancy into a database to improve read performance.
Usage: "The game.tagsStr field denormalizes tags for faster searching without joins."
Trade-offs:
- Benefits: Faster reads, simpler queries
- Costs: Data redundancy, potential inconsistency, slower writes
Collation
Definition: Set of rules for comparing and sorting strings in a database.
Usage: "Username and email fields use NOCASE collation for case-insensitive uniqueness."
SQLite Collations:
BINARY- Case-sensitive byte comparisonNOCASE- Case-insensitive ASCII comparisonRTRIM- Trailing space ignoring comparison
Authentication & Authorization
Access Token
Definition: Short-lived JWT token used to authenticate API requests. Contains user claims and expires after a set duration.
Usage: "The frontend includes the access token in the Authorization header for all API requests."
Properties:
- Type: JWT (JSON Web Token)
- Lifetime: 1 hour (default)
- Storage: Memory and localStorage
- Transmission: Authorization: Bearer {token}
Payload:
{
"userId": 1,
"username": "admin",
"role": "admin",
"iat": 1234567890,
"exp": 1234571490
}
Refresh Token
Definition: Long-lived random token used to obtain new access tokens without re-authentication.
Usage: "When an access token expires, the frontend uses the refresh token to obtain a new one."
Properties:
- Type: Random hex string (64 bytes)
- Lifetime: 7 days (default)
- Storage: Database, localStorage
- Single-Use: Revoked after generating new access token
Flow:
- Access token expires
- Frontend sends refresh token to
/api/auth/refresh - Backend validates refresh token
- Backend generates new access token
- Backend revokes old refresh token
- Backend creates new refresh token
- Frontend receives new token pair
Permission
Definition: Atomic access right to perform a specific action on a resource.
Usage: "The games.play permission allows users to launch games in the browser."
Format: {resource}.{action}
Examples:
games.read- View game metadatagames.play- Play games in browserusers.create- Create new user accountsroles.update- Modify role permissions
See Also: Role Permissions
Guest Mode
Definition: Limited access mode allowing users to browse content without authentication.
Usage: "Guest mode enables anonymous browsing while restricting access to play features."
Permissions:
games.read- Browse gamesplaylists.read- View playlists
Limitations:
- Cannot play games (requires
games.playpermission) - Cannot create playlists
- Session expires when browser closes (sessionStorage)
Session
Definition: Period of user interaction with the application, tracked by authentication tokens.
Usage: "User sessions expire after 1 hour of inactivity, requiring re-authentication."
Types:
- Authentication Session: JWT access token validity period
- Play Session: Individual game play session tracked in user_game_plays table
Frontend Terms
SPA (Single-Page Application)
Definition: Web application that loads a single HTML page and dynamically updates content as the user interacts with the app.
Usage: "Flashpoint Web is an SPA built with React and React Router."
Characteristics:
- Client-side routing
- No full page reloads
- Dynamic content updates
- State management in JavaScript
See Also: React SPA
HMR (Hot Module Replacement)
Definition: Development feature that updates JavaScript modules in the browser without full page reload, preserving application state.
Usage: "Vite provides HMR for instant feedback during frontend development."
Benefits:
- Faster development iteration
- Preserved component state
- Instant UI updates
React Query (TanStack Query)
Definition: Data synchronization library for managing server state in React applications, handling caching, revalidation, and background updates.
Usage: "React Query manages game data fetching, caching, and automatic revalidation."
Features:
- Automatic caching
- Background refetching
- Optimistic updates
- Pagination support
- Stale-while-revalidate pattern
See Also: React Query Documentation
Zustand
Definition: Minimalist state management library for React, providing a simple API for managing global client state.
Usage: "Zustand stores manage UI state like sidebar visibility and theme preferences."
Stores:
useAuthStore- Authentication stateuseThemeStore- Theme and color preferencesuseUIStore- UI state (sidebar, view mode, card size)
See Also: Zustand Stores
Tailwind CSS
Definition: Utility-first CSS framework providing low-level utility classes for building custom designs.
Usage: "The frontend uses Tailwind CSS for styling with custom theme configuration."
Features:
- Utility-first approach
- Responsive design utilities
- Dark mode support
- Custom theme configuration
- JIT (Just-In-Time) compilation
See Also: Tailwind CSS
Radix UI
Definition: Unstyled, accessible component library for building high-quality design systems and web applications.
Usage: "The frontend uses Radix UI primitives for accessible dropdowns, dialogs, and form components."
Components:
- Dialog / Alert Dialog
- Dropdown Menu
- Select
- Switch / Checkbox
- Tooltip / Popover
See Also: Radix UI
shadcn/ui
Definition: Collection of reusable components built with Radix UI and Tailwind CSS, copied into your project rather than installed as a dependency.
Usage: "UI components are based on shadcn/ui patterns with custom styling."
Philosophy:
- Components are copied, not installed
- Full control over component code
- Tailwind CSS for styling
- Radix UI for accessibility
See Also: shadcn/ui
Virtualization
Definition: Technique of rendering only visible items in a large list, improving performance by reducing DOM nodes.
Usage: "TanStack Virtual provides virtualization for efficiently rendering large game lists."
Benefits:
- Constant rendering time regardless of list size
- Reduced memory usage
- Smooth scrolling
- Handles thousands of items
Library: @tanstack/react-virtual
Game & Emulation Terms
Flash
Definition: Multimedia software platform for animation, games, and rich internet applications, discontinued by Adobe in December 2020.
Usage: "Flash games are preserved and played using the Ruffle emulator."
File Format: SWF (Shockwave Flash)
History:
- Created by Macromedia (1996)
- Acquired by Adobe (2005)
- End-of-life announced (2017)
- Discontinued (December 31, 2020)
Ruffle
Definition: Flash Player emulator written in Rust, compiled to WebAssembly for running Flash content in modern browsers without plugins.
Usage: "Ruffle enables browser-based playback of Flash games without Adobe Flash Player."
Features:
- WebAssembly-based
- No plugin required
- ActionScript 1, 2, and partial 3 support
- Active development and improvement
Integration:
- Files copied from npm package to
public/ruffle/ - Loaded dynamically in GamePlayer component
- Supports multiple scale modes
See Also: Ruffle Player
SWF (Shockwave Flash)
Definition: File format for multimedia, vector graphics, and ActionScript used by Adobe Flash Player and Ruffle.
Usage: "SWF files are mounted and served by the game-service for Flash game playback."
MIME Type: application/x-shockwave-flash
Properties:
- Vector graphics
- Embedded ActionScript code
- Timeline-based animation
- Compressed format
ActionScript
Definition: Object-oriented programming language used in Adobe Flash for creating interactive content and games.
Usage: "Flash games use ActionScript for game logic and interactivity."
Versions:
- ActionScript 1: Basic scripting (1999)
- ActionScript 2: Object-oriented features (2003)
- ActionScript 3: Performance improvements, modern OOP (2006)
Shockwave
Definition: Multimedia platform by Adobe (formerly Macromedia) for creating interactive content, predating Flash.
Usage: "Shockwave games are preserved in Flashpoint but require different playback methods."
File Format: DCR (Director file)
Note: Distinct from Flash, though often confused. Shockwave is not currently supported in Flashpoint Web.
HTML5 Games
Definition: Games built using standard web technologies (HTML, CSS, JavaScript) without requiring plugins.
Usage: "HTML5 games are served directly by the game-service without emulation."
Technologies:
- Canvas API for graphics
- Web Audio API for sound
- WebGL for 3D graphics
- Native browser APIs
See Also: HTML5 Player
ZIP Mounting
Definition: Technique of serving files directly from ZIP archives without extracting them to disk.
Usage: "The game-service uses ZIP mounting to serve game files from Data/Games/ archives."
Benefits:
- No disk space for extraction
- Faster startup (no extraction delay)
- Reduced I/O operations
Library: node-stream-zip
See Also: ZIP Manager
Scale Mode
Definition: Method for fitting game content into the player viewport, affecting aspect ratio and sizing.
Usage: "Ruffle supports multiple scale modes including showall, exactfit, noborder, and noscale."
Modes:
- showall: Fit entire content, maintain aspect ratio (letterbox/pillarbox)
- noborder: Fill viewport, maintain aspect ratio (crop edges)
- exactfit: Fill viewport, ignore aspect ratio (distort)
- noscale: Original size, no scaling
Default: showall
Polyfill
Definition: Code that implements a feature on web browsers that do not support the feature natively.
Usage: "The game-service injects polyfills for modern browser APIs into legacy Flash games."
Examples:
- XMLHttpRequest shims
- Console.log for debugging
- HTML5 API compatibility layers
See Also: HTML Polyfills
Development Terms
Monorepo Workspace
Definition: Configuration allowing a single repository to manage multiple packages with shared dependencies.
Usage: "The root package.json defines workspaces for backend, frontend, and game-service."
Benefits:
- Shared node_modules
- Centralized dependency management
- Atomic commits across packages
Configuration:
{
"workspaces": [
"backend",
"frontend",
"game-service"
]
}
TypeScript
Definition: Typed superset of JavaScript that compiles to plain JavaScript, adding static type checking.
Usage: "All three services are written in TypeScript for type safety and better developer experience."
Benefits:
- Compile-time type checking
- Better IDE support
- Self-documenting code
- Refactoring safety
Configuration: tsconfig.json in each service
tsx
Definition: Node.js runner for TypeScript files with automatic compilation and watch mode.
Usage: "Development servers use tsx watch for hot-reloading TypeScript code."
Features:
- No separate build step
- Watch mode for development
- Fast compilation with esbuild
Commands:
tsx src/server.ts- Run oncetsx watch src/server.ts- Watch mode
Vite
Definition: Modern frontend build tool providing fast development server with HMR and optimized production builds.
Usage: "The frontend uses Vite for development server and production builds."
Features:
- Instant server start
- Lightning-fast HMR
- Optimized production builds
- Plugin ecosystem
See Also: Vite
ESLint
Definition: Pluggable linting utility for JavaScript and TypeScript, enforcing code quality and style rules.
Usage: "ESLint ensures code quality and consistency across all three services."
Configuration: .eslintrc.json in each service
Rules:
- TypeScript-specific rules
- React hooks rules (frontend)
- Import rules
- Code style enforcement
Concurrently
Definition: npm package for running multiple npm scripts simultaneously with colored output.
Usage: "The root npm dev script uses concurrently to start all services together."
Example:
{
"scripts": {
"dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\" \"npm run dev:game-service\""
}
}
Docker
Definition: Platform for developing, shipping, and running applications in containers.
Usage: "Docker Compose orchestrates all three services for production deployment."
Files:
Dockerfile(each service)docker-compose.yml(root)
See Also: Docker Deployment
Environment Variables
Definition: Configuration values stored outside the code, loaded at runtime based on the environment.
Usage: "Each service has a .env file for environment-specific configuration."
Files:
.env- Local environment variables.env.example- Template with all variables.env.production- Production configuration
Loading: dotenv package loads .env files on startup
See Also: Environment Variables
ACID
Definition: Set of properties guaranteeing database transactions are processed reliably.
Usage: "SQLite provides ACID guarantees for user database transactions."
Properties:
- Atomicity: All or nothing execution
- Consistency: Valid state before and after
- Isolation: Concurrent transactions don't interfere
- Durability: Committed changes persist
REST (Representational State Transfer)
Definition: Architectural style for designing networked applications using HTTP methods for CRUD operations.
Usage: "The backend provides a RESTful API for game metadata and user management."
Principles:
- Stateless communication
- Resource-based URLs
- Standard HTTP methods (GET, POST, PUT, DELETE)
- JSON representation
Example Endpoints:
GET /api/games- List gamesGET /api/games/:id- Get game detailsPOST /api/auth/login- LoginPUT /api/users/:id- Update user