🖥 General
What is Real Dev?

Real Dev is a platform created by developers, for developers.

We believe real-world engineering skills should be the only proof of a developer's skills, not those code we almost never write (reversing 🎄)! Hence we created this place, for developers to test and showcase their tech skills.

Why should I solve your tasks?

Ask yourself! It could be for all kinds of things. 😜

  • Having fun
  • Learning cool tech
  • Sharpening your portfolio
😉 Getting started
What is a task?

We've created some coding challenges for you to solve. Solving them would harvest scores and make your name appear the leaderboard!

What tasks do you have?

Currently we have the following types. Tell us if they're enough!

  • You'll be asked to create a HTTP server with required endpoints
  • Write a script that does something
  • Write a webpage follows certain guidelines or requirements
  • Write/Fix some code to pass certain check (unit test, for example)
Can I share my code?

We strongly recommend against sharing your code publicly. It will ruin the fun for everyone. Think of this, when you know there's a solution online, are you still motivated to solve any task?

You could share your passing status and stats though, show the world how good you're. Also discussion is encouraged!

Sounds fun. How can I get started?

Download our CLI and clone a task!

🧰 CLI - The real command
How can I download your CLI?

Downloading the CLI will be super easy! You can copy the link and run in your terminal (Mac & Linux) or Powershell (Windows).

Mac & Linux & Windows (WSL)

curl -s https://static.real.dev/cli/install | sh

Windows (Cmd)

powershell -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://static.real.dev/cli/install.ps1'))" && SET "PATH=%PATH%;C:\RealDev"

Windows (PowerShell)

iex ((New-Object System.Net.WebClient).DownloadString('https://static.real.dev/cli/install.ps1'))

If you prefer to download the binary yourself, go to our github release page. Put the CLI binary where you can run it, and it will self-update if necessary.

How can I use the CLI?

After installation. You just need to follow the simple 3-step instructions.

  • Login with the cli first. Run real login, and a webpage will be opened. Login on that page, then you'll be authenticated in the CLI!
  • Afterwards you can use real clone to download a task, you can start working on it.
  • After it's done, you can run real submit to submit a task. Then, you can see the result on the task page.
  • The CLI also checks for update itself. When you see a update message, make sure to real upgrade to enjoy the latest feature!
🤩 I'm ready
How do I write and submit code?

You could either download a task template/a generated template for certain stack on the web page. If you use the CLI, there will be a dedicated folder for that task under your workspace.

Use your favorite editor to write your awesome code!

After you're satisfied with your code,

  • Either use the CLI to real submit your code for testing.
  • Or upload the folder in the task page
What is workspace?

Workspace is where all your code is located. We created that for you if you use the CLI, so that you can easily manage all your cool solutions! It defaults to RealDev under your user home. Feel free to git commit them.

Please don't share them publicly, it would ruin the fun for others!

What is real.json?

Each submission must have this file under the submission root folder. This files tells us a few things.

  • Which task is this about: "task": "hello-real-world"
  • How would you like the configuration to be provided: "configSource": "env"
  • What tech stack are you using: "stack": { "type": "python3", "main": "magic.py" }

See below for more details.

What is configSource?

Each task will have a schema of configuration. Consider the startup config for a HTTP server, or the command-line options for a script.

Your code will read these configurations and react. configSource is the way you want the configuration to be passed to your program. Each task description will provide example for every allowed configSource for the task. There're a few possibilities.

  • env: config will be passed via environment variables.
    • Note all the keys will be converted to SNAKE_CASE. It means for config http_port=8080, your program will get a HTTP_PORT environment variable with string value "8080".
  • cli: config will be passed as command line arguments.
    • Example: your-program --port 8080
  • { "jsonFile": "./path" }: A JSON config file will be provided at the path specified.
    • path must be a relative path, relative to the root of your submission.
What is a stack? What stack do you support?

Stack defines what tech stack is used in your code, so that we know how to run it. Each stack type comes with some options, too.

Our engine is built upon the Docker engine, and all our stacks setup are open sourced! Check their docs on this Github repository.

What's your runtime environment for testing my code?

For now, the code will be tested on a AWS t3.medium instance, with 2 vCPUs and 4GB memory.

What are various limits (time/memory) when running my code?

On submission, all the files you submitted cannot exceed 5MB total in size. When collecting files, we respect .gitignore, make use of it!

At runtime, typically we have two steps:

  1. Build your project - the time limit is 2 minutes
  2. Run your code - the time limit is 1 minute per test case
How does scoring work?

Each task has a score. If you pass all the tests, you'll get that score if you pass all the test cases. If not, you get a proportional score based on how many test cases you pass.

😎 Requests
I want to create a task.

We don't support that yet, but it's definitely on our roadmap!

Please talk to us about your idea, we would love to hear!

I have a feature request.

We're all ears! Reach us in one of the following ways:

  • Use the little bubble on the webpage to start talking to our engineers 👇
  • Shoot us an email at contact@real.dev