Open source for the Odia language — a growing constellation of tools, libraries,
and resources making Odia a first-class citizen in modern AI and software.
OpenOdia is the community hub for Odia language open-source. It was started by Soumendra Kumar Sahoo and brings together work from — OdiaGenAI, OdiaNLP, OdiaWikimedia, Odisha AI, Odia-Digital, and many independent maintainers.
It gathers the ecosystem into three places to look:
- Tools & libraries — fonts, keyboards, transliterators, OCR, NLP toolkits and apps, curated from Awesome-Odia-AI and the Odia GitHub organisations
- Models & datasets — a cached directory of Odia-tagged Hugging Face resources, with available license, size, and citation metadata
- Community & learning — tutorials and talks from the community's channels, plus its meetups and conferences
Individual projects sit inside those pillars — including
openodia (PyPI), a Python package of Odia text-processing
utilities, and the @openodia YouTube channel. Note the name
collision: OpenOdia is this hub; openodia is one package listed in it.
This repository contains the web application, server-side source adapters, public APIs, and Cloudflare Worker that bring everything together.
| Page | What you can do |
|---|---|
| Home | Discover the collection, independent communities, featured videos, and contributors |
| Tools | Search projects; combine source, category, organisation, and license filters |
| Models | Find Odia-tagged models by task and license; inspect upstream metadata |
| Datasets | Filter by task, size, and license; open resource details and available previews |
| Playground | Run Python examples, try Odialang, or transliterate Odia into other Indic scripts |
| Tutorials | Search community videos and browse channels and available playlists |
| Events | Search and filter upcoming/live events and the historical timeline |
| Papers | Explore Odia NLP research by task and year |
| Treebank | Search annotated Odia sentences by word, part of speech, and dependency relation |
| Add your project | Copy a submission template and find contribution routes |
| API | Explore the public API reference and unified resource catalog |
| About | Learn about the hub and its contributors |
Use ⌘K / Ctrl+K for cross-site search and navigation. Papers, Treebank, API,
and contribution links are also in the footer. The language toggle translates navigation, the home hero/opening/statistics, and the footer.
Other page bodies and upstream content retain their original language.
/translation-status reports the scoped inventory and native-review progress separately. Light/dark
mode and language preferences are saved locally.
OpenOdia.com Features Walkthrough (in Odia)
Resource cards offer license information and generated APA/BibTeX citations.
Supported GitHub and Hugging Face resources have shareable /r/<kind>/<owner>/<name>
detail pages. Check the original resource's license and preferred citation before reuse;
being listed does not certify quality, accuracy, or unrestricted use.
- MCP search and API discovery: agent setup, tool arguments, transport, and validation.
- Contributor guide: setup, conventions, checks, and adding resources/events.
- Architecture and data: loaders, caching, storage, APIs, and deployment.
- Odia video walkthrough: 10–20 minute recording plan, speaking cues, and FocuSee checklist.
- Coverage work plan: historical baseline and remaining coverage work.
- Design provenance: Pattachitra-inspired artwork and licensing.
Everything open source in the Odia language. No AI gatekeeping. If it's Odia, open source, and useful — it belongs.
| Category | Examples |
|---|---|
| 🎯 Language tools | Transliterators, spell checkers, grammar tools, Unicode converters, OCR |
| 🖋 Fonts & typography | Open-source Odia fonts, IMEs, keyboard layouts |
| 📚 Datasets | Parallel corpora, monolingual texts, speech data, dictionaries |
| 🧠 Models (open weight) | STT, TTS, embedding, LLM fine-tunes for Odia |
| 🐍 Libraries | Python/JS/Rust packages for Odia text processing, dates, numerals |
| 🎮 Applications | Games, apps, utilities built for or in Odia |
| 📖 Educational | Language learning tools, interactive tutorials, grammar references |
| 🔧 Infrastructure | Odia localization tools, CI/CD for Odia projects, evaluation benchmarks |
| Layer | Technology |
|---|---|
| Framework | TanStack Start |
| Routing | TanStack Router |
| Data | TanStack Query |
| UI | React 19, Tailwind CSS 4, Radix UI, CSS motion |
| Icons | Lucide React |
| Deployment | Cloudflare Workers |
| Package mgr | Bun |
- Bun 1.3+
- Node.js 22+
- just for the task recipes
- Playwright Chromium for the browser suites:
bunx playwright install --with-deps chromium - The pinned zizmor, when you change anything under
.github/orscripts/standards: see CONTRIBUTING.md
Run just doctor to check these versions.
git clone https://github.com/soumendrak/openodia-hub.git
cd openodia-hub
bun install
bun run devThe dev server starts at http://localhost:9090.
| Command | Purpose |
|---|---|
bun run dev |
Start Vite dev server |
bun run build |
Production build |
bun run build:dev |
Development-mode build |
bun run preview |
Serve the built Worker locally (after build) |
bun run lint |
Run ESLint |
bun run typecheck |
Type-check with the normal and strict configs |
bun run test:e2e |
Build, then run the Playwright suite |
just check |
Run every repository standard (CI's gate) |
bun run format |
Format with Prettier |
bun run test |
Run Vitest tests |
bun run test:watch |
Watch tests |
bun run test:coverage |
Full coverage report |
bun run test:coverage:diff -- --staged |
Require 100% coverage of staged executable changes |
bun run hooks:install |
Activate version-controlled Git hooks |
TanStack Start renders directory pages using server loaders and shared source adapters
in src/lib/sources/. Public APIs reuse those adapters. TanStack Query supports
client-side data fetching such as command search and paginated events.
- Directory: search, combined facets, clearable filters, and incremental display. Facet counts account for other active filters; selections within a facet use OR, while different facets use AND.
- Resource details: upstream descriptions, source links, metadata, citations, catalog cross-references, and dataset previews when the upstream viewer supports them.
- Playground: Python runs through Pyodide in the browser; Odialang compiles to JavaScript. Transliteration converts scripts, not meaning. Python dependencies download on first use, with additional packages loaded on demand. Outbound HTTP from user code can be restricted by browser CORS. Community model inference is planned.
- Events: checked-in community history merges with paginated events backed by D1; dates determine status using IST. A Worker cron syncs events every six hours. A separate daily GitHub crawler proposes checked-in event updates through PRs.
- Research: papers combine OpenAlex and arXiv; treebank search runs server-side against UD_Odia-ODTB. These are discovery aids, not exhaustive indexes.
See architecture and data for cache durations, source mappings, API endpoints, and deployment configuration. Counts and upstream availability change; this README deliberately avoids fixed catalog totals.
The home page and Tutorials route are a contemporary digital interpretation inspired by
Odisha's Pattachitra painting tradition: a palm-leaf ochre ground, a vermilion painted
panel, antique gold detail, and the exact Noto Sans Oriya ଓ (U+0B13) at monumental scale.
It is not an artwork made by a traditional Pattachitra artist, and the independent
communities the site links to are run by their own organisers, not by OpenOdia.
| Where | What |
|---|---|
public/pattachitra/PROVENANCE.md |
Asset origins, references, licences, motion contract |
public/pattachitra/ |
Frame, divider, exact glyph contour, OFL licence |
src/styles/pattachitra.css |
The composition — every rule scoped to .patta |
src/styles.css |
The palette, as tokens the whole site reads |
src/components/OdiaGlyph.tsx |
The exact contour, plus its gold treatment |
.lavish/homepage-revamp/ |
The approved mockup and its review history (local only — .lavish/ is gitignored) |
Decorative motion is transform/opacity only, pauses on a hidden tab, and is removed
entirely under prefers-reduced-motion. Verify in a browser with:
bun run dev &
just check-pattachitra # widths, loaded art, peacock clearance, reduced motionbun run build
npx wrangler deployGitHub Actions runs lint, changed-line coverage, and build jobs in parallel. Deployment
on main waits for all three. Same-repository PRs get a Worker version preview after
those checks; previews share production KV. See deployment notes
before configuring another Cloudflare account.
See CONTRIBUTING.md for setup, conventions, and where to help.
Quick checklist before opening a PR (stage or stash every change first):
just check
bun run build
just e2eIf this project helps you, consider sponsoring my work on GitHub. Your support helps fund maintenance, documentation, and continued development.
MIT © Soumendra Kumar Sahoo
