WEB PRODUCT / JAVASCRIPT & FIREBASE
CSKit
One workspace, from a local guest session to a private account.
A Counter-Strike 2 toolkit combining market data, configuration exports, practice tools, and private account storage.
- BUILT WITH
- JavaScript · Firebase · Node.js · REST APIs
- CONTEXT
- Live product · Open source
- ENGINEER
- Dallen Larson

The problem
Game settings, market information, and practice tools are usually scattered across separate utilities. CSKit brings them into one workspace while allowing visitors to start without creating an account.
Account and data boundaries
Google sign-in uses Firebase Authentication, with account data stored in private Firestore documents. Guest work stays in the browser. Moving guest work into an account is an explicit action; existing local data is not uploaded automatically. The optional desktop server uses local JSON storage.
Configuration exports with guardrails
Loadout Studio builds a configuration from explicit choices. Settings begin at “Keep current,” duplicate key assignments block export, and unsupported imported commands are reported. The app generates a file for the user to install; it does not inspect or modify game files.
Delivery & freshness
GitHub Actions runs checks and deployment to Firebase Hosting. A separate scheduled workflow refreshes public market data. The interface displays snapshot time and flags stale prices because scheduling and caching can delay updates.
Verification & boundaries
The repository documents config and persistence tests, Firebase emulator tests, and deployment procedures. Steam linking and friends sync are documented as awaiting backend activation. Market prices are third-party listing snapshots, not completed-sale values. These boundaries matter when deciding what the product can promise.