Skip to content

0xandee/noirlings-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

192 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

noirlingsapplogo-white

Learn Noir in your browser

Noir

Live App

image

Noirlings.app is a modern, interactive playground for the Noir programming language. It's designed to help you learn Noir quickly and intuitively, with hands-on exercises, instant feedback, and a beautiful, responsive UI.

πŸ“š Exercise Categories

🟒 Basic Exercises (36 total)

  • Intro & Variables (7 exercises) - Master Noir fundamentals: main functions, let bindings, mutability, scope, and constants
  • Data Types (5 exercises) - Learn fields, integers, arrays, strings, and tuples for ZK circuit development
  • Control Flow & Logic (3 exercises) - Implement conditional logic, loops, and decision-making in zero-knowledge programs
  • Structs & Traits (9 exercises) - Build custom types, implementation blocks, and generic programming patterns
  • Advanced Data (7 exercises) - Work with slices, references, and functional programming methods
  • Knowledge Check (1 exercise) - Quiz combining multiple Noir concepts

πŸ”΄ Advanced Exercises (39 total)

  • Cryptographic Hashes (4 exercises) - Implement Pedersen, Blake2s, Blake3, and Keccak256 hash functions
  • Elliptic Curves (4 exercises) - Master curve operations, point arithmetic, and scalar multiplication
  • Merkle Trees (4 exercises) - Build basic trees, verify proofs, and work with sparse/indexed variants
  • Privacy & Zero-Knowledge (13 exercises) - Create range proofs, commitments, private voting, and transaction systems
  • Ethereum Integration (9 exercises) - Work with RLP encoding, Patricia tries, and blockchain state proofs
  • Advanced Cryptography (4 exercises) - Implement ECDSA signatures, recursive proofs, and circuit optimizations

πŸ—οΈ Project Structure

This project uses Yarn Workspaces for a modular, scalable codebase:

packages/
  noirlings/           # Main Noir playground app (React + Vite)
    src/
      components/       # React components
      hooks/           # Custom React hooks
      pages/           # Application pages
      utils/           # Utility functions
    public/
      exercises/       # Exercise content and logic
        basic/         # Beginner exercises
        advanced/      # Advanced topics
scripts/              # Build and utility scripts

πŸ› οΈ Tech Stack

  • Frontend: React 18, TypeScript, Tailwind CSS
  • Editor: Monaco Editor with custom Noir syntax highlighting
  • Noir: v1.0.0-beta.9 with @noir-lang/noir_js and noir_wasm
  • Authentication: Supabase
  • Build Tool: Vite with custom plugins (WASM, Node polyfills)
  • Deployment: Vercel with edge functions
  • Analytics: Vercel Analytics & Speed Insights
  • Package Manager: Yarn 4 with workspaces

πŸš€ Getting Started

Prerequisites

Installation

git clone https://github.com/0xandee/noirlings-app.git
cd noirlings-app
yarn install

Environment Variables

To configure Supabase for authentication, create a .env file at the project root:

cp .env.example .env

Then update the following variables:

  • VITE_SUPABASE_URL: Your Supabase project URL (Settings > API in Supabase dashboard)
  • VITE_SUPABASE_ANON_KEY: Your Supabase anonymous public key (Settings > API)

These variables are required to initialize the Supabase client in packages/noirlings/src/hooks/useAuth.tsx.

Development

yarn dev

This runs the playground in development mode. Open http://localhost:5173 to view it in your browser.

Build

yarn build

Builds the playground for production to the dist/ directory.

Development Commands

# Run without regenerating exercises (faster for UI development)
yarn dev-no-exercises

# Generate exercise JSON files
yarn generate-exercises

# Preview production build locally
yarn serve

Deployment (Railway)

This project is optimized for Railway:

  • Build command: yarn build
  • Output directory: dist
  • Framework: Vite

You can deploy by connecting your GitHub repository to Railway or by using the Railway CLI:

railway login
railway link
railway up

Impact

Noirlings.app directly addresses a critical gap in Noir's developer ecosystem: the lack of an interactive, beginner-friendly learning platform.

Since its launch at NoirHack 2025, Noirlings.app demonstrated strong initial traction:

  • 200 early sign-ups within the first week.
  • 10+ daily active users (DAU) sustained post-hackathon.

statistics

Shared and recognized across the Noir, Aztec, and ZK developer communities.

testimonials

Noirlings also earned the Developer Onboarding Excellence Award and Technical Excellence Award at NoirHack 2025, judged by Worldcoin, StarkWare, and Paradigm. This recognition underscores how major infrastructure and research teams view Noirlings as critical developer onboarding tool for ecosystem growth β€” reducing the average onboarding time from 30 minutes to just 1 minute.

proof-of-winning


🀝 Contributing

We welcome contributions! Here's how you can help:

  • πŸ› Report bugs - Found an issue? Open a GitHub issue
  • ✨ Suggest features - Have ideas? We'd love to hear them
  • πŸ“ Add exercises - Create new learning content
  • πŸ‘¨β€πŸ’» Improve code - Submit pull requests with enhancements
  • πŸ“š Update docs - Help improve documentation

πŸ™ Credits

About

Noirlings.app is a interactive learning platform for Noir programming language. It's designed to help you learn Noir quickly and intuitively, with hands-on exercises, instant feedback.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors