A comprehensive Java-based backend system for managing user authentication, product licensing, and session management. Designed as a secure, scalable solution for software distribution and user access control.
User Manager is a complete user management server that handles user registration, authentication, license key distribution, product downloads, and administrative functions. It provides a RESTful HTTP API for client applications and includes advanced features like hardware ID (HWID) binding, ban management, session tracking, and changelog management.
This project was created at the request of a friend who needed a management system for his users. The system was designed to use JSON files for data handling, as the client was unfamiliar with database systems and preferred a simpler, file-based approach that could be manually inspected and edited when needed.
Given that development occurred in my free time, the system was deployed to production incrementally—long before all planned features were complete. This practical constraint influenced several design decisions: the JSON-based storage allows for direct file manipulation when administrative features weren't yet implemented, and the modular architecture enables gradual feature additions without disrupting the running system.
As this is the only project in my portfolio that has been deployed in a real-world production environment, comprehensive tests were added to ensure reliability and correctness in active use. The system has been successfully serving real users and handling actual license distribution since deployment.
de.lukas.eternalUserManager.network)Available Endpoints:
login, register, redeemKey - User operationsshowProducts, download - Product accessbanUser, unbanUser, resetHWID - Admin operationscreateKeys, getKeys, deleteKey - License managementgetUsers, getActiveSessions, getProducts - Admin queriesde.lukas.eternalUserManager.logic)de.lukas.eternalUserManager.data)de.lukas.eternalUserManager.utils)src/
├── de/lukas/eternalUserManager/
│ ├── Main.java # Application entry point
│ ├── data/ # Data persistence layer
│ │ ├── DataManager.java # Central data operations
│ │ ├── IDataStorage.java # Storage interface
│ │ ├── DefaultDataStorage.java # File system storage
│ │ ├── MountedDataStorage.java # Path abstraction
│ │ ├── BufferedDataStorage.java # Caching layer
│ │ └── JsonDataBundle.java # JSON utilities
│ ├── logic/ # Business logic
│ │ ├── Config.java # Server configuration
│ │ ├── banList/ # Ban management
│ │ ├── changelog/ # Version logging
│ │ ├── config/ # User configs
│ │ ├── key/ # License keys
│ │ ├── product/ # Product management
│ │ ├── session/ # Session tracking
│ │ └── user/ # User management
│ ├── network/ # HTTP server & API
│ │ ├── Server.java # Main HTTP server
│ │ ├── RequestHandler.java # Base request handler
│ │ ├── AdminRequestHandler.java # Admin operations
│ │ ├── requests/ # Public API endpoints
│ │ └── server/ # HTTP utilities
│ └── utils/ # Helper utilities
│ ├── BCrypthHash.java # Password security
│ ├── BiHashMap.java # Bidirectional maps
│ ├── JSON.java # JSON handling
│ ├── Logger.java # Logging system
│ └── Result.java # Error handling
└── META-INF/
└── MANIFEST.MF
This system is designed for:
Unlike other projects in my portfolio, this system includes a comprehensive test suite due to its production deployment. Tests are located in the tests/ directory and cover critical system functionality to ensure reliability in real-world usage.
The testing approach focuses on:
These tests have been essential in maintaining system stability while adding new features incrementally during active production use.
This project is a personal/educational project.
Lukas