Lottery is a web-based raffle application that renders a 3D spinning sphere to randomly select winners from a participant list.
The tool solves the problem of running fair, configurable raffle draws for events like annual dinners. It uses a Three.js-rendered 3D sphere as the visual centerpiece of the drawing experience. Participants are loaded from an Excel file, and the drawing process prevents already-selected winners from being drawn again unless manually reset. Prize information, including names, descriptions, images, and quantities, is configured through a server-side configuration file. Results can be exported back to Excel after the drawing concludes. The application persists winner data across server restarts, preserving the state of the lottery unless explicitly reset through the interface.
Organizations running company events, award ceremonies, or other occasions requiring fair random selection should consider this tool. It suits scenarios where visual presentation matters and where participants need to be imported and results exported in bulk. The project is built with Vue 3 and Vite on the front end, Three.js for 3D rendering, and Express on the back end, making it suitable for teams comfortable with JavaScript across the stack.
The project has undergone a significant refactoring to modernize its technology stack, moving from webpack to Vite and upgrading to Vue 3 while maintaining backward compatibility with the Express API. Development activity shows attention to build performance and developer experience through the migration to Vite's faster cold start and hot module replacement. The codebase demonstrates a commitment to component-based architecture through the Vue 3 refactoring, and the preservation of Three.js as a global script library indicates a pragmatic approach to maintaining visual consistency during modernization efforts.