
Security News
/Research
Coordinated npm and PyPI Campaign Typosquats Popular Secure Payment Apps
Socket uncovered 17 malicious npm and PyPI packages typosquatting Paysafe, Skrill, and Neteller SDKs to steal developer secrets.
practicode
Advanced tools
Local-first coding-test practice in a Rust terminal UI with optional AI help.
Personal coding practice, right in your terminal.
practicode is a small Rust TUI for syntax exercises and stdin/stdout coding-test practice. It keeps your problems, settings, and submissions local by default.
npm install -g practicode
practicode
The npm package builds the Rust binary during install. Set PRACTICODE_SKIP_BUILD=1 to skip that step; the launcher will try the same locked Cargo build on first run if the binary is missing.
cargo install practicode
practicode
git clone https://github.com/baba9811/practicode.git
cd practicode
npm install
npm start
Install only the languages you plan to practice. Python uses python3 or python; TypeScript uses node --experimental-strip-types; Java uses javac and java; Rust uses rustc.
brew install python node
brew install --cask temurin@21
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
winget install -e --id Python.Python.3.12
winget install -e --id OpenJS.NodeJS.LTS
winget install -e --id EclipseAdoptium.Temurin.21.JDK
winget install -e --id Rustlang.Rustup
Restart the terminal after installing so python, node, javac, and rustc are on PATH.
sudo apt update
sudo apt install -y python3 nodejs npm openjdk-21-jdk curl build-essential
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
If node --version is below v22.6.0, install a newer Node.js from the official Node.js downloads or your preferred version manager before using TypeScript practice.
Verify runtimes:
python3 --version
node --version
javac -version
rustc --version
References: Python, Node.js, Rust, Eclipse Temurin.
After starting practicode, run /doctor to check these runtimes from inside the TUI.
Check the install:
practicode --version
practicode --smoke
practicode --help
npm is the primary install path:
npm update -g practicode
The app checks npm for newer releases in the background and shows /update in the status line when one is available. Disable that check with PRACTICODE_NO_UPDATE_CHECK=1.
cargo install --force practicode
git pull --ff-only
npm install
npm start
On first run, choose a mode:
Learn syntax: study the concept, worked example, mistakes, and self-check; use /ask when stuck; edit the exercise, /run, then /next
Practice coding tests: write code, Esc, /run, then /next when it passes
Use arrow keys to move on the home screen, and Enter or Space to open the selected mode.
Type / outside the editor to open the command palette. Use up/down to move, Enter to run or complete the selected command, and Esc to cancel.
Most-used commands:
| Command | Action |
|---|---|
/home | Return to the mode chooser |
/run | Judge the current submission or syntax exercise |
/ask <question> | Ask AI about the current lesson or problem without leaving the TUI |
/next | Open the next problem or lesson |
/back | Go to the previous problem or lesson |
/doctor | Check local runtimes and show install hints |
/profile | Edit language, theme, difficulty, topics, and AI settings |
See docs/COMMANDS.md for the full command list, aliases, AI generation commands, and profile settings.
Generated problems and submissions stay local:
| Path | Purpose |
|---|---|
.practicode/problem_bank.json | Local/custom/generated problems |
.practicode/problem_notes.md | Optional personal problem-generation notes |
.practicode/problem-state.json | Current problem, history, and settings |
problems/ | Generated problem markdown/index files |
submissions/ | Your answer files |
Those paths are ignored by git.
/run executes your local submission as a normal process. It is not an OS sandbox./hint, AI-backed /next, and /generate send the current problem/submission context to the selected provider CLI.settings.ai_next_command can run a custom shell command. Save only commands you trust..env, .npmrc, .practicode/, problems/, or submissions/.Security reporting details live in SECURITY.md.
Local checks:
cargo fmt --check
cargo test
cargo clippy --all-targets --all-features -- -D warnings
cargo run -- --smoke
practicode is MIT licensed. Third-party dependency license notes are in THIRD_PARTY_LICENSES.md.
FAQs
Local-first coding-test practice in a Rust terminal UI with optional AI help.
The npm package practicode receives a total of 0 weekly downloads. As such, practicode popularity was classified as not popular.
We found that practicode demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
/Research
Socket uncovered 17 malicious npm and PyPI packages typosquatting Paysafe, Skrill, and Neteller SDKs to steal developer secrets.

Security News
Node.js is debating whether AI-driven security report volume warrants moving more vulnerability reports into public workflows.

Security News
PolinRider expands across npm, Packagist, Go modules, and Chrome extensions, using hidden loaders to target developer environments.