Gemite

A lightweight HTML-first programming language for building small web applications.

Gemite is a lightweight programming language inspired by PHP. It lets you create dynamic web applications by embedding Gemite code directly into HTML.

Its philosophy is simple:

  • HTML first
  • No framework
  • No configuration
  • Small and fast
  • Easy deployment

Features

  • HTML-first syntax
  • File-based routing
  • Built-in development server
  • SQLite support
  • Cross-platform (Windows, Linux, macOS)
  • Minimal dependencies
  • Easy to learn
  • Ruby-powered runtime

Installation

Install from RubyGems.

gem install gemite

Check the installed version.

gemite version

Quick Start

Create a new project.

mkdir myapp
cd myapp

Create index.gmt.

<?gemite
name = "Gemite"
?>

<!DOCTYPE html>

<html>
<head>
    <title>Gemite</title>
</head>

<body>
    <h1>Hello, {name}!</h1>
</body>
</html>

Run the development server.

gemite

Open your browser.

http://localhost:8000

Project Structure

myapp/

├── index.gmt
├── about.gmt
├── users/
│   └── list.gmt
│
├── public/
│   ├── css/
│   ├── js/
│   └── images/
│
└── database.db

URL mapping

index.gmt
        ↓
/

about.gmt
        ↓
/about

users/list.gmt
        ↓
/users/list

Language Guide

Comments

// Single line comment

Variables

name = "Gemite"
count = 10

Numbers

a = 10
b = 3.14

Strings

name = "Gemite"

Boolean

true
false

Arrays

items = [1,2,3]

Maps

user = Map()

Operators

Arithmetic

+
-
*
/
%

Comparison

==
!=
<
<=
>
>=

Logical

&&
||
!

if

if score >= 60
    print("Pass")
end

unless

unless logged_in
    print("Login required")
end

while

while i < 10
    i += 1
end

for

for i = 0; i < 10; i += 1
    print(i)
end

foreach

foreach item in items
    print(item)
end

break

break

continue

continue

return

return value

Functions

func hello(name)
    print(name)
end

HTML Output

<h1>{title}</h1>

Expressions inside {} are evaluated and inserted into HTML.


Built-in Functions

String

len()

substr()

split()

join()

replace()

upper()

lower()

trim()

Math

abs()

rand()

min()

max()

Time

time()

sleep()

Files

exists()

read()

write()

append()

delete()

mkdir()

copy()

move()

JSON

json_encode()

json_decode()

SQLite

db.open()

db.query()

db.exec()

db.close()

CLI Commands

Start the development server.

gemite

Specify a port.

gemite s 3000

Show the version.

gemite version

Show help.

gemite help

Examples

Hello World

<?gemite
name = "World"
?>

<h1>Hello, {name}!</h1>

Counter

count = count + 1

SQLite

db = db.open("database.db")
rows = db.query("SELECT * FROM users")

Build

Clone the repository.

git clone https://github.com/<YOUR_GITHUB>/gemite.git
cd gemite

Build the gem.

gem build gemite.gemspec

This creates:

gemite-x.y.z.gem

Install from Source

gem install ./gemite-x.y.z.gem

Verify the installation.

gemite version

Development

Install dependencies.

bundle install

Run Gemite from the source tree.

bundle exec gemite

or

ruby exe/gemite

License

Gemite is released under the MIT License.

See the LICENSE file for details.