Skip to main content

LeetCode inspired app in your terminal, powered with Python and built on Textual!

Project description

███    ██ ██    ██ ██   ██ ██████   ██████  ██   ██ 
████   ██  ██  ██   ██ ██  ██   ██ ██    ██  ██ ██  
██ ██  ██   ████     ███   ██████  ██    ██   ███   
██  ██ ██    ██     ██ ██  ██   ██ ██    ██  ██ ██  
██   ████    ██    ██   ██ ██████   ██████  ██   ██ 

Nyxbox is a Textual-based TUI app for all your challenge solving needs supporting Python, JS, Java, and C++. Meant to help people learn and practice their coding. Also, who's Nyx?

What's new?

Latest - 1.0.1 1.0.1 - 6/28/25

  • Fixed minor issue potentially causing crashes in clients running python in versions <3.12
  • Fixed issue affecting search where it would error out

1.0.0 - 6/28/25

  • Fully featured app out now!
  • Powered on a backend now (thanks nest (psst hack club))
  • Supports slack and guest sign in as well
  • Execution environments finally work!

Features

  • Vend random coding challenges from a curated set
  • Edit and run solutions in multiple languages!
  • Hidden tests for extra challenge (we cant just have you cheating the returns right?)
  • Really bad Really good daemon character!

Getting Started

Web version

A web version is available at this link! May be slightly buggy, but should mostly work.

Pip version

1. Install

Install nyxbox via pip. (If you don't know how to, find an app called terminal, open it, and follow these instructions)

pip install nyxbox

Ensure clang++ or g++ is installed for C++, and node for JavaScript support. Same goes for Java (any JDK should work! Working on adding custom paths so it doesn't matter where you install it)

2. Run the App

nyxbox

Git version

Clone git repo and cd. (find an app called terminal or something similar on your computer!)

git clone https://github.com/thisiscid/NyxBox
cd NyxBox

Then, run as a module.

python3 -m nyxbox.main

Development

Backend

This assumes that you have already cloned the repo (check above)

1. Create a .env file

A .env file in the folder of the backend must be created. Here's what it should look like.

GOOGLE_CLIENT_ID=your-google-client.id.here
GOOGLE_CLIENT_SECRET=GOCSPX-your-google-oauth-secret-here
GOOGLE_REDIRECT_URI=http://localhost:8000/auth/google/callback
GITHUB_CLIENT_ID=your-github-client-id-here
GITHUB_CLIENT_SECRET=your-github-oauth-secret-here
GITHUB_REDIRECT_URI=http://localhost:8000/auth/github/callback
JWT_SECRET=your-jwt-secret-here
DATABASE_URL=sqlite:///./nyxbox.db
API_BASE_URL = http://localhost:8000
SLACK_CLIENT_ID=sample
SLACK_CLIENT_SECRET=sample_secret
SLACK_SIGNING_SECRET=sample_sign
SLACK_REDIRECT_URI=http://localhost:8000
SLACK_CHANNEL_WEBHOOK_URL=slack_here
SLACK_DMS_WEBHOOK_URL=slack_here

JWT_SECRET should be a long random string (e.g., use openssl rand -hex 32).

You will also have to to manually enter the frontend folder where NyxBox has been installed and check utils.py in order to change the link to your server, as the backend currently does not exist.

2. Run via uvicorn

Inside of the backend folder, run

uvicorn main:app

Make sure that it is running on port 8000. Furthermore, set your redirects inside of Github and Google OAuth to localhost:8000/auth/github/callback or localhost:8000/auth/google/callback.

Notes

  • Python 3.10+ recommended (The dev is running 3.12.1)
  • C++ (clang++ or g++), JS (node.js), and Java (JDKs) runners require system dependencies. If they error out, make sure that you have them installed before raising an issue.
  • Run in a terminal supporting Unicode and colors like Ghostty, Alacritty, or others.

Credits

  1. Textual for providing the underlying framework for the TUI
  2. You! For using it! Thank you!
  3. hack clubbers :3

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nyxbox-1.0.3.tar.gz (51.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nyxbox-1.0.3-py3-none-any.whl (43.9 kB view details)

Uploaded Python 3

File details

Details for the file nyxbox-1.0.3.tar.gz.

File metadata

  • Download URL: nyxbox-1.0.3.tar.gz
  • Upload date:
  • Size: 51.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.18

File hashes

Hashes for nyxbox-1.0.3.tar.gz
Algorithm Hash digest
SHA256 7ccd9d2de1e04cbb3274d4b4c2e31d46dcbe35cb67f21cb9a8eb21c3a06e408a
MD5 cda16c727102330e904b06152d9fa873
BLAKE2b-256 8a5b7723c236e5f562e460be75c6195fb8aed18b9825765a683edd4ea1d75823

See more details on using hashes here.

File details

Details for the file nyxbox-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: nyxbox-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 43.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.18

File hashes

Hashes for nyxbox-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 32d914e53c919f8e9f80ad4dff4ae767500984c35c346f32db60e145bca180b1
MD5 b630aeb7747c0ac853704a6eaab2711c
BLAKE2b-256 965c2ad644a44ddf36ae207db410fe55f57ba026a247eb54d2a5076d3a489feb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page