What if your code looked like this?
name = "Abneesh"
age = 20
scores = [95, 87, 92]
If age is greater than 18 then
Say "Welcome, " + name
Otherwise
Say "Access denied"
End
For each score in scores
Print score
Say score
End
No semicolons. No curly braces. No => arrows. Just English.
This is EPL — the English Programming Language. It's a fully-featured language that compiles to native binaries via LLVM, transpiles to JavaScript/Kotlin/Python, ships Android and iOS projects, and has a built-in web framework — all from a syntax anyone can read.
I'm Abneesh Singh, and I've been building EPL as an open-source project. Here's what it can do today at v10.1.
Install and Run in 30 Seconds
pip install eplang
echo 'Print "Hello, World!"' > hello.epl
epl hello.epl
Or jump into the interactive REPL:
epl repl
Build a Web App in Plain English
(Note: Web apps, APIs, and database examples require a local environment since the online playground doesn't support starting servers on ports or local file system access. You can run these locally with epl serve.)
EPL has a built-in web framework. Here's a complete web app with multiple pages:
Create WebApp called myApp
Route "/" shows
Page "Welcome to EPL"
Heading "Hello from EPL! 🚀"
SubHeading "The English Programming Language"
Text "EPL makes programming as easy as writing English."
Button "Click Me"
Link "About Page" to "/about"
Link "API Demo" to "/api/info"
End
End
Route "/about" shows
Page "About EPL"
Heading "About EPL"
Text "Created for everyone — from students to professionals."
SubHeading "Features"
List ["Simple English syntax", "Web framework built-in", "LLVM compiler for speed", "Classes and OOP support"]
Link "Back to Home" to "/"
End
End
Route "/api/info" responds with
Send json Map with name = "EPL" and version = "10.1" and status = "ok"
End
Start myApp on port 3000
Run it:
epl serve app.epl
Open http://localhost:3000 — you've got a working web app with pages, navigation, and a JSON API.
Database Applications
db = db_open("app.db")
db_execute(db, "CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, email TEXT, age INTEGER)")
db_execute(db, "INSERT INTO users (name, email, age) VALUES ('Alice', 'alice@example.com', 30)")
db_execute(db, "INSERT INTO users (name, email, age) VALUES ('Bob', 'bob@example.com', 25)")
Display "--- All Users ---"
users = db_query(db, "SELECT * FROM users")
For each user in users
Display user
End
Display "--- Single User Lookup ---"
alice = db_query_one(db, "SELECT name, email FROM users WHERE name = 'Alice'")
Display alice
db_close(db)
Functions and OOP
Note: Simple function with parameters
Function greet takes name
Print "Hello, " + name + "! Welcome to EPL"
End
Call greet with "Abneesh"
Call greet with "World"
Note: Recursive function
Function factorial takes n
If n <= 1 then
Return 1
End
Return n * factorial(n - 1)
End
Print "Factorial of 5 = " + factorial(5)
Note: Classes and Objects
Class Animal
name = "Unknown"
sound = "..."
Function speak
Say name + " says " + sound
End
End
dog = new Animal
dog.name = "Rex"
dog.sound = "Woof!"
dog.speak()
cat = new Animal
cat.name = "Whiskers"
cat.sound = "Meow!"
cat.speak()
A Full-Stack To-Do App (30 Lines)
This is a complete to-do app with a form, persistent storage, and delete functionality:
Create WebApp called todoApp
Route "/" shows
Store form "task" in "tasks"
Page "EPL To-Do App"
Heading "EPL To-Do List"
SubHeading "A full-stack app built in plain English"
Form action "/"
Input "task" placeholder "What needs to be done?"
End
Say items from "tasks" delete "/delete"
End
End
Route "/delete" shows
Delete from "tasks" at 0
Redirect to "/"
End
Route "/api/tasks" responds with
Fetch "tasks"
End
Start todoApp on port 3000
That's a working full-stack app. With a form, persistent storage, a delete endpoint, and a JSON API. In 25 lines of English.
Cross-Platform: One Codebase, Multiple Targets
epl android app.epl # Android Studio project (Kotlin)
epl android app.epl --webview # Ship the real web app in a native WebView
epl ios app.epl # Xcode project (SwiftUI)
epl ios app.epl --webview # WebView shell for iOS
epl desktop app.epl # Compose Multiplatform app
epl desktop app.epl --webview # Native window with pywebview
For apps that use routing and databases, --webview ships your real web app unchanged inside a native shell — nothing gets dropped.
EPL also transpiles to other languages:
epl js app.epl # JavaScript
epl python app.epl # Python
epl kotlin app.epl # Kotlin
epl build app.epl # Native binary via LLVM
Native Web Styling (Not Raw HTML)
EPL has first-class language features for CSS, SEO metadata, and interactive events — you don't need to write raw HTML or CSS:
Route "/" shows
Head
Description "My EPL-powered website"
Keywords "epl, programming, english"
Font "Inter" weights "400,600"
Favicon "/icon.png"
End
Page "Home"
Style "#hero"
set background to "linear-gradient(135deg, #667eea, #764ba2)"
set color to "white"
set padding to "4rem"
On hover
set transform to "scale(1.02)"
End
On mobile
set padding to "2rem"
End
End
Div id "hero"
Heading "Welcome to EPL"
Button "Get Started" on click navigates to "/docs"
End
End
End
Event handlers compile to CSP-safe JavaScript. Run epl serve app.epl --csp for a strict Content-Security-Policy with per-response nonces.
MCP Server for AI Tools
EPL ships an MCP (Model Context Protocol) server that gives Claude, Cursor, VS Code Copilot, and other AI tools real-time access to EPL's parser, interpreter, and documentation.
Configure it in your AI tool:
{
"mcpServers": {
"epl": {
"command": "python",
"args": ["-m", "epl.mcp_server"]
}
}
}
Available tools: epl_syntax_reference, epl_validate, epl_run, epl_transpile, epl_examples, epl_error_lookup.
The MCP server is also available on Smithery.
VS Code Extension
The official extension on the VS Code Marketplace provides:
- Syntax highlighting for
.eplfiles - Real-time diagnostics and error reporting
- IntelliSense for keywords, builtins, and imports
- Hover documentation for 725+ built-in functions
- Semantic tokens from the Language Server
- Token-aware find-references and rename
- Run, watch, and type-check commands
Developer Tooling
epl new myapp --template web # Scaffold a web app
epl new myapp --template auth # Auth API with JWT
epl new myapp --template chatbot # AI chatbot
epl new myapp --template android # Android app
epl fix app.epl # Error diagnostics (55+ offline patterns)
epl fix app.epl --fix # Auto-apply corrections
epl watch app.epl # Auto-reload on file changes
epl doctor # Environment health check
epl fmt app.epl # Code formatter
epl check app.epl # Static type checker
epl playground # Opens the online playground
Production Deployment
EPL supports real production deployment with WSGI/ASGI adapters:
pip install "eplang[server]"
epl serve app.epl # Dev server
epl deploy k8s app.epl --image myapp:1.0 --tls # Kubernetes
epl deploy aws app.epl # AWS ECS
epl deploy gcp app.epl # Google Cloud Run
epl deploy azure app.epl # Azure Container Apps
Every deployable EPL server includes health endpoints, Prometheus metrics, structured logging, and environment variable configuration.
The Ecosystem
EPL comes with 22 official packages covering web, data, AI, security, and infrastructure:
|
Category
|
Packages
|
|
**
Web & API
**
|
epl-web
,
epl-http
|
|
**
Data & DB
**
|
epl-db
,
epl-dataframe
,
epl-collections
|
|
**
AI & ML
**
|
epl-learn
,
epl-array
,
epl-plot
|
|
**
Security
**
|
epl-auth
,
epl-crypto
,
epl-validator
|
|
**
Infrastructure
**
|
epl-cloud
,
epl-cache
,
epl-email
|
epl install epl-auth
epl install epl-math
Need something from NPM? Use the JavaScript bridge:
Use javascript "axios" as axios
response = axios.get("https://api.example.com/data")
Print response.data
Getting Started
pip install eplang
Write your first program, scaffold a project, or try the online playground:
epl new myapp --template web
cd myapp
epl serve main.epl
Links
- Official Website — eplang.me
- GitHub — github.com/abneeshsingh21/EPL
- PyPI — pypi.org/project/eplang
- Documentation — abneeshsingh21.github.io/EPL
- Online Playground — epl-playground.azurewebsites.net
- VS Code Extension — VS Code Marketplace
- Package Registry — EPL Packages
- MCP Server — Smithery EPL is open-source under the Apache 2.0 license. If you like the idea of writing real, deployable applications in plain English — give it a try and let me know what you think.
pip install eplang
⭐ Star the repo on GitHub if it resonates with you.
Top comments (0)