Open-source project
tgnav/tgnav.github.io avatar
tgnav/tgnav.github.io

TGNAV is a Telegram directory split into channels, groups and bots

TGNAV (Telegram Navigation) - Telegram频道群组机器人导航。收录Telegram上的优质公开频道、群组、机器人,打造高质量的Telegram导航平台。

974 stars76 forksHTMLGPL-3.0

At a glance

What is it?
TGNAV is an Astro based directory of public Telegram channels, groups and bots, published through GitHub Pages with a Cloudflare front end, Algolia search and a service worker for offline use. The repository is open under GPL-3.0 for review, and its own text restricts forks to security review rather than to clone sites.
Who is it for?
TGNAV suits someone who wants a single searchable place to find public Telegram channels, groups and bots, or a team that wants to study how a large static directory is built and hosted. It does not suit a user looking for private or closed communities, and the open code is offered for review rather than as a foundation for a competing directory, so read the source use section before forking it.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 12 days ago.
What is it written in?
Mainly HTML, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What TGNAV is: a curated directory of public Telegram resources

TGNAV stands for Telegram Navigation and it is a directory site for Telegram. The project states that it collects quality public channels, groups and bots from Telegram to build a navigation platform, and that it curates from more than 20000 popular resources to provide what it describes as a more useful and safer navigation service.

The content is split into three modules, and the split is by Telegram object type rather than by topic. There is channel navigation for Telegram Channels, group navigation for Telegram Groups, and bot navigation for Telegram Robots. That is a deliberately simple taxonomy, and it is also the one the URL structure follows, which is worth knowing before you build anything on top of it.

The audience is people looking for Telegram resources they do not yet know about. The site is presented as an international service, and the disclaimer notes that content is collected from the internet and may include sensitive material, asks visitors to follow local law, and asks anyone whose rights are affected to get the relevant content removed. There is also a contact route for cooperation and promotion through the bot account @tgnav0bot, and a donation page.

Two related projects sit alongside it under the same owner: TGwiki, a Telegram knowledge base repository, and a wiki hosted at wiki.tgnav.org. The directory and the wiki are separate destinations with separate URLs.

Three modules and the URL families that implement them

The repository layout is a static site with one directory per route family, and the names line up with the three modules the project describes.

There is a channel directory, a group directory and a robot directory, each with an index.html at its root, and a detail directory that holds the per-item pages. The detail directory is the interesting one for understanding the structure: a directory site with thousands of entries needs a page per entry, and a static generator needs those pages to be generated rather than served dynamically.

Alongside those sit the utility routes. There is a go directory, a link directory and a random directory, an enroll directory, a donate directory, an about directory and a privacy-policy directory, plus a root index.html and a 404.html. The visible documentation does not describe what the go, link and random directories contain, so their exact purpose has to be inferred from their names or read from the source. What can be said is that they exist as separate route families in a static build, which is a common shape for redirect pages, entry points and a random-pick feature.

For a site of this size, that last part is the structural constraint. Every entry page is a file in the repository, so the size of the catalogue and the size of the git history are the same problem, and a content update is a pull request rather than a database write.

The stack: Astro output, GitHub Pages hosting, Cloudflare in front

The project lists its technology stack directly, and the list is short enough to read as an architecture.

yaml
- HTML
- JavaScript
- CSS
- Node.js
- Astro
- Cloudflare
- GitHub Pages
- Algolia
- Python
- Telegram Bot API

Astro explains the _astro directory at the top level, which is where the compiled assets and page bundles land, and the presence of Node.js tells you the site is built rather than hand-written page by page. The site is published on GitHub Pages, and the repository root contains the files that make that work: a CNAME file for the custom domain, and a .nojekyll file that stops GitHub Pages from running the output through Jekyll.

Cloudflare appears in the stack alongside GitHub Pages, and the natural reading is that Cloudflare sits in front of the Pages origin, which is how a static site gets a CDN, a DNS layer and possibly caching rules without changing the hosting account.

Python and the Telegram Bot API are the other half of the system. The repository has no Python directory at the top level, so the collection and submission tooling that talks to the Telegram Bot API most likely lives outside this repository, in the same organisation as the tgwiki project, or runs as a separate service. The README does not document that pipeline, which means the part of the system that decides what appears in the directory is the part you cannot read here.

Search through Algolia, offline through a service worker

Several files in the repository root explain the parts of the site that are not static content. There is a sw.js file and a workbox file, workbox-1c53b24d.js, which is the build output of the Workbox tooling used to generate a service worker. Together with manifest.webmanifest, those are what make the site installable and usable when the network is slow or absent, which matters for a catalogue you might open from a phone while travelling.

There is a sitemap.xml and a robots.txt, the standard pair for telling crawlers what exists. There is an ads.txt file, which is the advertising inventory declaration that tells ad networks what seller you are, and its presence tells you the site monetises through advertising rather than only through donations.

Algolia in the stack is the search layer. A directory of this size is not usefully searchable by scanning HTML, and Algolia provides hosted search with an index that has to be fed separately from the site build. That is the operational coupling to be aware of: the static pages and the search index are two artefacts that can disagree.

The favicon.ico and favicon.png pair, the .nojekyll marker and the 404.html are the remaining root files, and they are all static build output rather than source.

Open for review, closed for clones: the source use terms

The repository is public and the licence is GPL-3.0, and the project makes a distinction that is unusual and worth reading carefully. The source code section states that the site is open sourced, that you may download the source code or fork the repository to create a copy, and then constrains what that copy may be used for: the open code is for reviewing security issues, and setting up fake phishing websites is prohibited.

So the licence grants rights and the project adds a usage condition on top, and the two are not the same instrument. The file to read is the LICENSE at the root of the repository, which the text links to as the GPL-3.0 open source agreement, and the text repeats the requirement that anyone using or modifying the source follows it. For a static site whose value is entirely its content, the interesting question for an adopter is not whether the code is available but whether the content can be reused, and the README does not answer that.

The project also accepts sponsorship through a donation page, and states that maintaining TGNAV takes people and resources. The sponsorship route and the contact bot are the two channels offered for engagement with the maintainers.

What the visible documentation does not tell you

This is a content site more than a software product, and the documentation reflects that. The README explains the purpose, the three modules, the stack, the licence, the sponsorship route and the disclaimer. It does not explain how to build the site.

There is no build command, no dependency list and no development setup section anywhere in the visible text. The repository has no package.json at the top level, even though Node.js and Astro are in the stack, and there is no Astro configuration file among the listed entries. So while the project says you can download the source or fork the repository, it does not say how you turn that source into the site you see at www.tgnav.org, and the fork instruction is aimed at inspection and security review rather than at running your own instance.

There is also no changelog, no release history and no GitHub releases for the repository. The last push was on 2026-10-11, so the work is recent, but how that work maps onto published versions is not recorded in the repository itself.

If you want to run this yourself, the honest starting point is the compiled output in the repository and the stack list, and then reading the Astro project structure in the source. Expect to fill the gaps yourself.

Editorial conclusion

TGNAV suits someone who wants a single searchable place to find public Telegram channels, groups and bots, or a team that wants to study how a large static directory is built and hosted. It does not suit a user looking for private or closed communities, and the open code is offered for review rather than as a foundation for a competing directory, so read the source use section before forking it. Before deploying anything, check the pages under channel, group and robot for the structure you would have to maintain, confirm how the Algolia index and the sw.js cache are meant to be updated, and verify the terms of the ads.txt file that sits in the repository root.

Frequently asked questions

What is TGNAV and what does it index?

TGNAV is a Telegram navigation site split into three modules for channels, groups and bots, covering public Telegram resources. The project says it curates from more than 20000 popular resources.

Which technologies does the TGNAV site use?

The listed stack is HTML, JavaScript, CSS, Node.js, Astro, Cloudflare, GitHub Pages, Algolia, Python and the Telegram Bot API. The compiled Astro output sits in the _astro directory and the site is published through GitHub Pages.

Can I fork the TGNAV repository?

Yes, the project says the site is open sourced and you may download the source or fork the repository, under the GPL-3.0 agreement. It also states that the open code is for reviewing security issues and prohibits setting up fake phishing websites.

Does TGNAV work offline?

The repository contains a service worker at sw.js with Workbox generated output, plus a manifest.webmanifest, which is the setup for an installable site with cached assets. The visible documentation does not describe the caching strategy in detail.

How is search handled on the TGNAV site?

Algolia is part of the listed stack, so search runs against a hosted index rather than against the static pages, which means the index and the built pages are updated separately.

Official sources

  1. Issues
  2. License: GPL-3.0
  3. Project website
  4. README
  5. tgnav/tgnav.github.io on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/tgnav-tgnav-github-io.svg)](https://hysenlabs.com/projects/tgnav-tgnav-github-io)

Was this useful?