Optima is a lightweight, single-session web application designed for groups to efficiently reach a consensus on a list of items using a margin-sensitive Elo algorithm. The application ensures a snappy, distraction-free UX and requires no sign-in or persistent data storage.
- Single-session, ephemeral usage (no user accounts or data storage)
- Fast, responsive UI optimized for desktop and mobile
- Deterministic decision-making with an Elo-based ranking system
- Simple and intuitive workflow for entering items, voting, and ranking
- Automatic elimination of weak options for efficient decision-making
- Home Screen: Users enter a list of items to be ranked.
- Voter Entry: Participants enter their names to vote.
- Voting Round: Items are matched up in an A vs. B format for voting.
- Ranking Calculation: An Elo-based algorithm determines the strongest options.
- Final Results: A ranked list is displayed with an option to copy results or restart.
- Frontend: Next.js (React, TypeScript, Tailwind CSS)
- State Management: React Context / useState
- Deployment: Vercel
- Node.js
- npm or yarn
- Clone the repository:
git clone https://github.com/noahtf13/Optima cd Optima - Install dependencies:
npm install # or yarn install - Run the development server:
npm run dev # or yarn dev - Open the app in your browser at
http://localhost:3000.
To deploy on Vercel:
- Install the Vercel CLI:
npm install -g vercel
- Deploy the project:
vercel
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature-name) - Commit your changes (
git commit -m "Added new feature") - Push the branch (
git push origin feature-name) - Submit a pull request
This project is licensed under the MIT License.
For any questions or feedback, please open an issue in the repository or reach out to the maintainer.
Harper Reed's Blog on their codegen workflow was intstrumental here as I'm a Data Scientist by day and am completely unfamiliar with frontend work outside of basic HTML/CSS. I'd love to learn best practice as much as possible, so if you see me deviating from it submit an issue or PR, or just send me an email to [email protected]