NexusTimer is an app designed for tracking your training sessions on the Rubik's Cube, with a user interface inspired by Twisty Timer to provide a comparable desktop experience.
For those new to speedcubing, it's a challenge where cubers aim to solve the Rubik's Cube as quickly as possible. Currently, the world record stands at 3.05 seconds (55.08% faster than the video below by Feliks Zemdegs π).
The "Category Aggregation Principle" allows you to analyze statistics not just for individual categories but also for each individual cube within the same category without affecting overall calculations.
Track all your solves with detailed statistics, including DNF (Did Not Finish) tracking, penalties, and personal bests.
Analyze your performance with detailed statistics including averages (ao5, ao12, etc.), best times, and trends over time.
Choose between normal timer mode and Stackmat timer mode to match your preferred solving setup.
View scramble images to help you understand the scramble before solving, with options to zoom in for better visibility.
Get hints for cross and x-cross solutions to help improve your solving techniques (for 3x3 cubes).
Personalize your experience with features like scramble images, session statistics, quick action buttons, and more.
Import and export your data from other popular timers such as csTimer, Twisty Timer, and CubeDesk!
- English (en)
- German (de)
- Bengali (bn)
- Czech (cs)
- Spanish (es)
- Estonian (et)
- Finnish (fi)
- French (fr)
- Hindi (hi)
- Hungarian (hu)
- Indonesian (id)
- Italian (it)
- Japanese (ja)
- Korean (ko)
- Malay (ms)
- Dutch (nl)
- Norwegian (no)
- Polish (pl)
- Portuguese (pt)
- Romanian (ro)
- Russian (ru)
- Slovak (sk)
- Swedish (sv)
- Turkish (tr)
- Ukrainian (uk)
- Vietnamese (vi)
- Chinese (zh)
- If you want:
- to report a bug or suggest a change, please open an issue.
- to develop new functions or fix a bug, please request it in the issues section.
- to translate the app into your language, please open an issue.
If you want to contribute code:
- Fork the repository.
- Rename the
.env.local.example
file to.env.local
(secrets are optional in case you won't code on UI sections that don't need them, most part of the working areas are not related to them). - Install the dependencies with
pnpm install
. - Run the development server with
pnpm run dev
. - Before submitting a pull request, ensure that your code compile by running
pnpm run build
.
Variable | Description | When do I need it? |
---|---|---|
MONGODB_URI | MongoDB connection string | Save and load backups, register users, all community section |
NEXT_PUBLIC_API_KEY | Firebase public API key | Clash Mode |
NEXT_PUBLIC_AUTH_DOMAIN | Firebase auth domain | Clash Mode |
NEXT_PUBLIC_PROJECT_ID | Firebase project ID | Clash Mode |
NEXT_PUBLIC_STORAGE_BUCKET | Firebase storage bucket | Clash Mode |
NEXT_PUBLIC_MESSAGING_SENDER_ID | Firebase sender ID | Clash Mode |
NEXT_PUBLIC_APP_ID | Firebase app ID | Clash Mode |
NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME | Cloudinary cloud name | Change user profile picture |
NEXT_PUBLIC_CLOUDINARY_API_KEY | Cloudinary public API key | Change user profile picture |
CLOUDINARY_API_SECRET | Cloudinary API secret | Change user profile picture |
GOOGLE_CLIENT_ID | Google OAuth client ID | Login/Register (normally other deeper functions require a signed-in user so you will have to add this anyway) |
GOOGLE_CLIENT_SECRET | Google OAuth client secret | Login/Register (normally other deeper functions require a signed-in user so you will have to add this anyway) |
RESEND_API_KEY | Resend API key (emails) | Test welcome email sending |
GOOGLE CALLBACK/AUTH IS: http://localhost:3000/api/auth/callback/google
I sincerely thank all contributors and tools that have made NexusTimer possible. π
- cubing for rendering cube scramble states as SVG.
- scrambow for generating a variety of scrambles.
- cube-solver for providing cross and x-cross solutions (3x3).
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.