About Codey

A coding platform for practising problems and testing solutions

Codey is a full-stack coding challenge platform where users can practise algorithmic problems, execute code in the browser, submit solutions and analyse their progress over time.

Why I built it

More than a static list of coding questions

I started building Codey while preparing for technical interviews. I wanted to understand not only how to solve coding problems, but also how platforms such as online judges execute code, evaluate outputs, store submissions and measure user progress.

The project developed into a complete coding-practice application with authentication, multi-language execution, public and hidden test cases, persistent submissions, progress tracking and a personal analytics dashboard.

Codey is inspired by platforms such as LeetCode and by the structured topic-based approach of NeetCode. It is an independent personal learning project and is not affiliated with either platform.

What you can do

Practise, submit and understand your progress

Codey combines a coding workspace with persistent progress and performance insights.

150 coding problems

Practise algorithms and data structures across Easy, Medium and Hard difficulty levels.

Multi-language execution

Write and execute solutions in JavaScript, Python, Java and C# using a browser-based Monaco editor.

Run and Submit

Test solutions against visible or custom cases, then submit them for evaluation against the complete test suite.

Submission history

Review previous attempts, accepted solutions, failed cases, runtime, memory usage and submitted code.

Progress analytics

Track solved problems, acceptance rates, language usage, submission trends and problem-solving performance.

Active-time insights

Measure active problem-solving time, average submission time and time taken to reach an accepted solution.

How submissions work

Submission evaluation is handled by the server rather than being decided by the browser.

  1. 1

    The editor sends the source code, selected language and problem identifier to the submission route.

  2. 2

    The server verifies the authenticated user and loads the problem test cases.

  3. 3

    A language-specific wrapper calls the submitted solution and produces structured output.

  4. 4

    The generated script is executed through the JDoodle API.

  5. 5

    The server parses and normalises the returned output before comparing it with the expected result.

  6. 6

    The submission is saved in Supabase and the user's completion status is updated when accepted.

Engineering challenges

Problems explored while building Codey

Cross-language execution

JavaScript, Python, Java and C# each require different handling for method calls, data structures, return values, booleans, null values and runtime errors.

Reliable output comparison

Execution results may be returned as JSON, language-specific literals or plain text. Codey normalises these formats before comparing them with expected outputs.

Separating Run from Submit

Run is designed for visible and custom test cases, while Submit performs authenticated evaluation, records the result and updates user progress.

Turning submissions into analytics

Raw submission and completion records are transformed into metrics that describe consistency, language performance, problem difficulty and active practice time.

Technology

Tools used to build the platform

Next.jsReactTypeScriptTailwind CSSshadcn/uiMonaco EditorSupabasePostgreSQLJDoodle APIRecharts

Current limitations

  • Code execution depends on the JDoodle API.
  • External usage, request and output limits apply.
  • The execution environment does not provide the same isolation as a dedicated container-based judge.
  • The problem catalogue is curated rather than user-generated.

Frequently asked questions

How Codey works

What is the difference between Run and Submit?

Run executes your code against the visible or custom test cases without saving a submission. Submit evaluates the solution against the complete test suite, stores the result and updates your progress.

Which programming languages are supported?

Codey currently supports JavaScript, Python 3, Java and C#. Each language uses its own execution wrapper while returning results in a shared format.

Are submissions saved?

Authenticated users can review their previous submissions, including the submitted code, result, language, runtime, memory usage and test-case counts.

How is progress measured?

Codey records completed problems and submission activity. The analytics dashboard calculates metrics such as acceptance rate, completion rate, attempts per problem, language performance and active practice time.

Is Codey a production code-execution service?

No. Codey is a personal learning project created to explore the engineering behind coding platforms. Code execution relies on the JDoodle API, so external request, usage and output limits apply.

I get an error message saying 'JDoodle API rate limit exceeded'. What should I do?

Due to the current JDoodle API tier used by Codey, code executions are limited to 22 per day. If this limit has been reached, please try again the following day. I apologise for any inconvenience caused.

When trying to log in, I get an 'Email rate limit exceeded' error. What should I do?

This means that too many authentication emails have been requested within a short period of time. Please wait a while before trying again. If the issue persists, please contact me through the Contact page.

Explore the project

Browse the problem catalogue, try the editor or review the source code to see how the application is structured.