Skip to content

KooShnoo/pokemon-programming

Repository files navigation

Pokémon Programming!

Pokémon Programming is a website that gamifies learning programming. Learn to code alongside a Pokémon pal today!

Features

1. Solve Problems!

Read the instructions for your programming challenge. Sourced from the Exercism project, challenges range from baby mode to Einstein mode!

2. Write code!

Use the monaco code editor to write out your solution to the challenge. Monaco is the code editor from VSCode, so you can use all the same tricks you're used to!

3. Watch your Pokémon!

Program alongside a Pokémon pal who will observe your progress. Your pal will calebrate your victories with you, so keep solving challenges to keep them happy!

4. Get feedback!

Your code probably won't work first try. But even as you type it out, we'll provide errors telling you why your code isn't working. If your code is running, we'll tell you what else your code needs to do for it to pass the challenge.

Tech

Libraries

Monaco is the code editor, built by microsoft for VSCode.

Three.js is a library for rendering 3D graphics on the web. At Pokémon Programming, we use it to render the Pokémon to the screen.

Exercism is a fantastic project providing free, open source resources for learning programming. We use their fantastic open source JavaScript excercises.

Jasmine is a testing framework which can be run in the browser. We use it to run tests on users' code, making sure their code does what it should.

quick-lint-js is a lightning fast linter for javascript which can be run in the browser. We use it to catch errors in users' code, as well as disallowing use of any web apis which could cause disruption.

Marked is a simple library for rendering markdown.

Tailwind makes CSS easier.

Additional Notes

  • Because Pokémon Programming is so simple, it does not use any UI framework. It uses the DOM API directly.
  • Pokémon Programming is written in TypeScript, except when building interfaces with JS libraries such as quick-lint-js or Jasmine.