Steam game recommendation system that uses tag information, user profiles, recent play history
Note: To optimize database size with H2, we only include games that have 50+ reviews. Some games you're looking for might not be available due to this limitation.
recommend/
โโโ src
โ โโโ main
โ โ โโโ java/SteamGame.recommend/ # Spring Boot REST API
โ โ โโโ resources/
โ โ โโโ application.properties
โ โ โโโ static/ # HTML-based UI
โ โ โโโ index.html # Home (Feature menu)
โ โ โโโ random.html # Tag-based random recommendations
โ โ โโโ input.html # Direct input tag recommendations
โ โ โโโ profile.html # Profile-based recommendations
โ โ โโโ recent.html # Recent 2-week play recommendations
โ โ โโโ similar.html # Similar tag recommendations
โ โ โโโ choice.html # Game choice interactive feature
โ โ โโโ review-guess.html # Review guessing game
โโโ electron/ # Electron desktop app
โ โโโ main.js # Main process
โ โโโ package.json # Build configuration
โ โโโ html/
โ โ โโโ config.html # API key settings
โ โ โโโ loading.html # Loading screen
โ โโโ resources/
โ โโโ recommend-0.0.1-SNAPSHOT.jar
โโโ data/ # H2 Database files (auto-created)
โโโ gamedb.mv.db # H2 database file
- General Requirements
- JDK 17 or higher, Git
- No external database required (H2 embedded)
- Desktop Application
- Windows 10/11 (64-bit)
- Java 17 or higher installed
- API keys can be configured when running the app
- Visit Steam API Key Registration Page and log in with your Steam account
- Enter any domain name (e.g.,
localhost) - Check "I agree" and click "Register"
- Copy and save the generated API Key
Note: Steam Guard verification required. Community-restricted accounts cannot obtain API keys.
- Visit Google AI Studio and log in
- Click "Create API Key"
- Copy and save the generated API Key
-
Download & Install
- Download the latest version from the Releases page
- Run
Steam-Game-Recommend-Setup-x.x.x.exe
-
Launch Application
- API key configuration screen appears automatically on first run
- Enter your Steam API Key and Gemini API Key
- Click
Skip for Nowto use tag search without API keys - API keys are stored locally at:
%AppData%\steam-game-recommend\api-keys.json
-
Use Features
- All features run in a single application
- No separate server environment variable setup required
-
Clone Project
git clone https://github.com/tember8003/SteamGame_Recommend.git cd SteamGame_Recommend -
Set Environment Variables (Optional)
-
macOS/Linux (bash, zsh)
export STEAM_API_KEY=YOUR_STEAM_API_KEY export GEMINI_API_KEY=YOUR_GEMINI_API_KEY
-
Windows (PowerShell)
$Env:STEAM_API_KEY = "YOUR_STEAM_API_KEY" $Env:GEMINI_API_KEY = "YOUR_GEMINI_API_KEY"
-
-
Start Server
./gradlew clean bootRun
- Default server: http://localhost:8888
- H2 Console: http://localhost:8888/h2-console (for database management)
- Swagger-UI: http://localhost:8888/docs
- OpenAPI JSON: http://localhost:8888/v3/api-docs
| Feature Description | Path |
|---|---|
| Home (Feature selection) | / |
| Tag-based recommendations | /random.html |
| Direct input tag recommendations | /input.html |
| Profile-based recommendations | /profile.html |
| Recent 2-week play recommendations | /recent.html |
| Similar tag recommendations | /similar.html |
-
Setup
cd electron npm install -
Prepare JAR File
# Build JAR from main project cd .. ./gradlew clean bootJar # Copy JAR file cp build/libs/recommend-0.0.1-SNAPSHOT.jar electron/resources/
-
Build Application
cd electron npm run build-win # Windows build
- Build output:
electron/dist/
- Build output:
# API Keys
steam.api.key=${STEAM_API_KEY}
spring.ai.google.api-key=${GEMINI_API_KEY}
# H2 Database Configuration
spring.datasource.url=jdbc:h2:file:./data/gamedb;DB_CLOSE_DELAY=-1;MODE=MySQL;AUTO_SERVER=TRUE;DATABASE_TO_LOWER=FALSE;CASE_INSENSITIVE_IDENTIFIERS=TRUE;CHARSET=UTF-8
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
# H2 Console
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
# Server Configuration
server.port=8888- ๐ Tag-based Recommendations
- Random recommendations: Random game suggestions based on tags
- Similar tags: Game recommendations with tags similar to specific games
- ๐ Profile-based Recommendations
- Steam ID library analysis
- โฐ Recent Play-based Recommendations
- Analysis of games played in the last 2 weeks
- Recommendations based on current interests
- Java Error: Verify Java 17 or higher is installed
- API Key Error: Verify correct API keys are entered
- Port Conflict: Check if port 8888 is in use
- Port Conflict: Verify port 8888 is not in use by other applications
- Environment Variable Error: Verify API keys are set correctly (optional for basic functionality)
- Database Error: H2 database files are automatically created in
./data/directory
The desktop application stores API keys locally at:
- Windows:
%AppData%\steam-game-recommend\api-keys.json - Full path example:
C:\Users\[Username]\AppData\Roaming\steam-game-recommend\api-keys.json
This ensures your API keys remain private and are not shared with others.
The application uses H2 embedded database with the following features:
- Automatic initialization: Database and tables are created automatically on first run
- Data persistence: Game data persists between application restarts stored in
./data/gamedbfiles - Special character support: Proper handling of Unicode characters including ยฎ, โข symbols
- MySQL compatibility mode: Ensures compatibility with MySQL syntax
- H2 Console: Built-in web interface for database management at
/h2-console - No external dependencies: No need for separate database server installation
POST /api/recommend/random- Tag-based random recommendationsPOST /api/recommend/input- Text input-based recommendationsPOST /api/recommend/profile- Profile-based recommendationsPOST /api/recommend/recent-play- Recent play-based recommendationsPOST /api/recommend/similar- Similar game recommendations
GET /api/games/appid?appid={id}- Get game by AppIDGET /api/games/tags- Get all available tagsGET /api/games/search?query={name}- Search games by name
POST /api/choice/start- Start game choice sessionPOST /api/choice/select- Submit choice selectionPOST /api/choice/result- Get choice recommendations
POST /api/review-guess/start- Start review guess gamePOST /api/review-guess/answer- Submit answerGET /api/review-guess/{sessionId}/result- Get game results
- Backend: Spring Boot 3.x, Java 17
- Database: H2 (embedded, production) / MySQL (development)
- Frontend: HTML, CSS, JavaScript
- Desktop: Electron
- AI Integration: Google Gemini API
- External API: Steam Web API
- Build: Gradle
- Database Console: H2 Console (built-in web interface)
This project is available under the MIT License.
For project-related issues, please register them on the Issues page.