Only show guides for your app
An honest chooser across every runtime Falix offers — by what you're building, what you already know, and how each one actually runs here. No favourites, just trade-offs and a link to the right guide.
There is no single best programming language, and anyone who tells you otherwise is selling something. The honest answer to "which should I use?" is a mix of three things: what you're building, what you already know, and which ecosystem has the libraries you'll need. Falix runs a dozen runtimes, so this guide helps you choose — and then hands you off to the guide for the one you pick.
| At a glance | |
|---|---|
| You need | Nothing yet — this is the decision before you create a server |
| Plan | Every runtime runs on free and premium |
| Time | Ten minutes |
| Ready to build? | Create your first app server |
The project usually narrows the field on its own. Here's where most people land, with the guide for each:
| I want to build… | Good picks | Start here |
|---|---|---|
| A Discord bot | Node.js (discord.js), Python (discord.py), Java (JDA), Rust (Serenity) | Your first Discord bot |
| A website or web app | Node.js, Python, PHP, Bun, Go | Your first web app |
| A REST API | Node.js/Bun, Python (FastAPI), Go | Build an Express website + API |
| A background worker / script | Python, Node.js, PHP CLI | Long-running PHP workers |
| A high-concurrency service | Go, Rust (Tokio), Elixir (OTP) | Async Rust with Tokio |
| My first-ever code | Python or JavaScript (Node.js) | Python on Falix |
Notice most rows list several options. That's real — most projects can be built well in several languages, which is why the next two questions matter more than the project type.
If you're fluent in one language, that fluency almost always beats the "theoretically ideal" choice. You'll ship faster, debug faster, and actually finish. A perfectly-suited language you're fighting is slower than a merely-fine one you know cold.
🎯 Good to know: The single most common mistake here is picking the "impressive" language (Rust, usually) for a first project, then bouncing off the learning curve. Rust is excellent — but if you've never written it, your Discord bot will be done far sooner in the language you already speak. You can always learn the fancy one on a project where the stakes are lower.
Some tasks lean hard on libraries. Scraping and data work have the richest support in Python (PyPI). JavaScript/TypeScript (Node.js, Bun) has the largest package registry overall (npm) and the best Discord and web tooling. If your project depends on a specific library, go where that library lives — that single dependency can decide the whole thing.
Beyond taste, one Falix-shaped difference matters when you choose: interpreted runtimes just run your source, while compiled ones need a build — either a long compile on the server or a binary you produce first. Here's the whole catalogue:
| Runtime | Build model on Falix | TypeScript? | Best known for | Guide |
|---|---|---|---|---|
| Node.js | Runs node index.js; auto npm install |
Needs a build recipe | Bots, web, the biggest ecosystem | nodejs |
| Bun | Runs bun run; auto bun install |
Native | A fast, Node-compatible runtime | bun |
| Python | Runs python app.py; installs requirements.txt |
— | Bots, scripting, data, web | python |
| PHP | CLI / Composer / Web Server variants | — | Websites and scripts | php |
| Go | Runs a prebuilt app binary you build first |
— | Fast services, APIs, tiny footprints | go |
| Rust | cargo run --release compiles on start (slow first) |
— | Maximum performance, systems work | rust |
| Java | Runs a fat app.jar you build and upload |
— | Large apps, JDA bots | java |
| C# / .NET | dotnet restore + dotnet run on start |
— | The .NET ecosystem, workers | dotnet-console-apps |
| Deno | ./deno run app.js; permission flags gated |
Native | Permissionless TS scripts | deno-on-falix-deep |
| Dart | dart pub get; dart run; needs a package layout |
— | Dart/Flutter-adjacent backends | more-runtimes |
| Elixir | mix run --no-halt; needs a Mix project |
— | Always-up, concurrent systems | elixir-otp-basics |
| Lua (Luvit) | ./luvit app.lua |
— | Lightweight async Lua | lua-luvit-deep |
Two honest gotchas hide in that table:
.ts entry file won't run) — see Node.js on Falix.Every runtime in that table is a good choice for the right project, and Falix runs them all the same way underneath: your code in /home/container, one public port from SERVER_PORT, dependencies that install on start (or a build you provide). The worst language is the one you'll abandon halfway. Pick the one that gets your project shipped, open its guide, and go.