A dockerized version of Dragfyre's excellent `npm` based Badi calendar solver.

Gemini 6df4d0f787 feat: Add Perl script for Badi date and progress 1 hete
api 1ee01d6a7b took dragfyre's great npm badi date tool and dockerized it to help it run in more places 2 hónapja
bin 1ee01d6a7b took dragfyre's great npm badi date tool and dockerized it to help it run in more places 2 hónapja
images 1ee01d6a7b took dragfyre's great npm badi date tool and dockerized it to help it run in more places 2 hónapja
DOCKER-README.md 1ee01d6a7b took dragfyre's great npm badi date tool and dockerized it to help it run in more places 2 hónapja
Dockerfile 1ee01d6a7b took dragfyre's great npm badi date tool and dockerized it to help it run in more places 2 hónapja
LICENSE-ISC.txt 1ee01d6a7b took dragfyre's great npm badi date tool and dockerized it to help it run in more places 2 hónapja
README.md 85de20d33d getting ready to update the docker container here 1 hete
badi-date.pl 6df4d0f787 feat: Add Perl script for Badi date and progress 1 hete
createServer.js 1ee01d6a7b took dragfyre's great npm badi date tool and dockerized it to help it run in more places 2 hónapja
docker-compose.yml 1ee01d6a7b took dragfyre's great npm badi date tool and dockerized it to help it run in more places 2 hónapja
package.json 1ee01d6a7b took dragfyre's great npm badi date tool and dockerized it to help it run in more places 2 hónapja
pnpm-lock.yaml 1ee01d6a7b took dragfyre's great npm badi date tool and dockerized it to help it run in more places 2 hónapja
server.js 1ee01d6a7b took dragfyre's great npm badi date tool and dockerized it to help it run in more places 2 hónapja
start.sh 1ee01d6a7b took dragfyre's great npm badi date tool and dockerized it to help it run in more places 2 hónapja

README.md

A Docker logo and a Bahai 9 Star

A Dockerized Badí Calendar Solver

This is a way for users to build Dockerized versions of Dragfyre's NodeJS-based Badí Calendar solver. Now you can can get a Badí calendar date on your shell, website, or boat!

Quick Start 🚀

If you have docker installed already, you can give the server a shot by running the command docker run -d -p 1844:1844 unmolded1457/bahai-date-api. On Windows machines, that command might be docker.exe run -d -p 1844:1844 unmolded1457/bahai-date-api.

This will open up a simple HTTP server on port 1844, the same year on the Common Calendar wherein the Báb declared His station as the promised Mahdí, or, forebearer to the Messíah.

You can test it by running curl http://localhost:1844/today. If you have jq installed, try curl http://localhost:1844/today | jq -r '.message'

jq just takes the standard JSON output and allows you to extract specific values — get creative with it!

If you want some more information on how to get this permanently running as a Function as a Service, check out DOCKER-Readme.md

Baháʼí Date RESTful API

So far, there are three endpoints for this API:

POST /today

Returns today's date according to the Baháʼí/Badí' calendar via POST request.

GET /today

Returns today's date according to the Baháʼí/Badí' calendar via GET request (as HTML).

GET /date

Given a date from the Gregorian calendar defined via GET data, returns the corresponding date in the Baháʼí calendar (as JSON).

Public endpoints

Public endpoints are now available on bahai-browser.org:

/today - https://bahai-browser.org/today

/date - https://bahai-browser.org/date

Running

To launch the API server, simply navigate to the main folder and type npm start.

Examples

From either endpoint, the output is returned in a similar format: a JSON object containing a message, a Baháʼí calendar date, and a Gregorian date/time.

Today

URL: localhost:1844/today

{
    "message": "Today is 13 Masá’il 174",
    "badi_date": {
        "year": 174,
        "month": 14,
        "day": 13,
        "month_name": "Masá’il",
        "timezone_id": "Asia/Jerusalem"
    },
    "greg_date": {
        "year": 2017,
        "month": 12,
        "day": 5,
        "hour": 23,
        "minute": 19,
        "second": 12,
        "timezoneOffset": 0
    }
}

date

Available parameters include:

  • year
  • month
  • day
  • hour
  • minute
  • second
  • latitude
  • longitude
  • timezoneId

May 23, 1844

URL: localhost:1844/date?year=1844&month=5&day=23&hour=20&minute=45

Output:

{
    "message": "The date is: 8 ‘Aẓamat (Grandeur) 1 B.E.",
    "badi_date": {
        "year": 1,
        "month": 3,
        "day": 8,
        "month_name": "‘Aẓamat (Grandeur)",
        "timezone_id": "Asia/Jerusalem"
    },
    "greg_date": {
        "year": 1844,
        "month": 5,
        "day": 23,
        "hour": 20,
        "minute": 45,
        "second": 0,
        "timezoneOffset": -480
    }
}

February 15, 2014

URL: localhost:1844/date?year=2014&month=2&day=15&hour=13&minute=45

Output:

{
    "message": "The date is: 9 Mulk (Dominion) 170 B.E.",
    "badi_date": {
        "year": 170,
        "month": 18,
        "day": 9,
        "month_name": "Mulk (Dominion)",
        "timezone_id": "Asia/Jerusalem"
    },
    "greg_date": {
        "year": 2014,
        "month": 2,
        "day": 15,
        "hour": 13,
        "minute": 45,
        "second": 0,
        "timezoneOffset": -485
    }
}

CLI usage

cli.svg

Last Update: Dec 28, 2025