Portfolio · MMXXVI · Wayanad, Kerala, India

Abhishek
Issac.

Sixteen years old. Five years on GitHub. One Poco X3 Pro that has been flashed more times than the average router gets restarted. I write small, careful Python — mostly Telegram bots — from a phone in a hill town in Kerala, India, and I keep a quiet +1 BioScience textbook open on the other tab.

$ building telegram bots in pyrogram
Abhishek Issac portrait
available · open to small paid bot work ↳ kerala / ist
129
public repositories
stars earned
5y
since 2021-11-08
16
years old · class +1 bio
/01 · about me

A short introduction, in slightly too many words.

Sixteen, self-taught, and terminally curious. Most of what I know I learned by flashing the wrong file at 2 AM and then learning what the right file was supposed to be.

My name is Abhishek Issac. I'm sixteen years old, I live in Wayanad, a green corner of Kerala in southern India where the wifi forgets you exist about twice an hour and the sunsets are usually generous enough to make up for it. I attend +1 BioScience on the NCERT syllabus, which means my school week is divided fairly evenly between Botany, Zoology, Physics, Chemistry, Maths, English, and Hindi — and the rest of the day belongs to the laptop.

I write code in Python, mostly Telegram bots, on top of Pyrogram. Behind the bots there's usually MongoDB with Motor for the fast-and-forgetful state, and PostgreSQL with asyncpg for the data I refuse to lose. Almost all of it gets typed on a Poco X3 Pro running Termux, sometimes connected to a Bluetooth keyboard, sometimes not. The Poco is technically a phone but at this point it has spent more of its life being a development machine.

Outside the editor I am a professional ROM tourist — I have flashed, unflashed, dirty-flashed, EDL-rescued and OrangeFox-sideloaded my way through MIUI, HyperOS ports, crDroid A15, Project Infinity X, crDroid A16, and finally the OxygenOS 15 port for vayu/bhima that I'm currently sitting on. I keep KernelSU on top of all of this for root and a small collection of Magisk-style modules for school apps and games.

I prefer hand-built things over generated ones — this site, for example, is a single HTML file, a single CSS file, and a single JavaScript file. No frameworks, no build step, no telemetry, no shortcuts. The numbers you see (repo count, stars, languages, recent commits) are pulled live from the GitHub REST API at page-load. The contributions snake gets rebuilt by a GitHub Action every twelve hours. Everything else is copied carefully out of a private notes file I keep on the same phone I'm typing this from.

name
Abhishek Issac
age
16 · class +1 bio
based in
Wayanad · Kerala
timezone
Asia/Kolkata · IST
school
NCERT +1 BioScience
subjects
Bio · Phy · Chem · Maths · Eng · Hindi
daily phone
Poco X3 Pro · 6/128
current rom
OxygenOS 15 port (vayu)
main shell
Termux · tmux · zsh
writes in
Python · Pyrogram
stores in
Mongo  ⇆  Postgres
github
@Abhishek-Issac
abhishek@kerala — ~/portfolio · zsh
# whoami.py — the very short version
from life import Person, Telegram, Android

me = Person(
    name="Abhishek Issac",
    from_="Wayanad, Kerala, India",
    age=16,
    school="NCERT +1 BioScience",
    subjects=["biology", "physics", "chemistry",
              "maths", "english", "hindi"],
    stack=["python", "pyrogram", "mongo", "postgres"],
    phones=["poco x3 pro", "moto g52", "moto e5"],
    rom="oxygenos 15 port (vayu/bhima)",
    tools=["termux", "git", "orangefox", "kernelsu"],
)

while curious:
    me.build("a tiny telegram bot")
    me.flash("another rom, carefully")
    me.study("a chapter of biology")
    me.push("a small commit to github")

# exit code: 0 — still going.
129
public repositories on github
~70%
repos primarily written in python
6
custom roms tested in 2026
3
phones in active rotation
/02 · the stack

What I actually use, day in, day out.

Six small categories — languages, bot frameworks, storage, hosting, Android tooling, and the editor I open before the kettle finishes boiling. No logo wall, no buzzword bingo.

/lang · written in

Languages

Python first, almost always. A bit of HTML/CSS and vanilla JavaScript for the web layer, plus shell glue for ops scripts and tiny CLI helpers when I can't be bothered to write a Python file.

Python 3 JavaScript HTML5 CSS3 Bash SQL Dockerfile
/bots · telegram

Telegram

Bots and userbots in Pyrogram on top of MTProto, with the Bot API as a fallback. Force-sub gates, batch generators, voice-chat moderation, small Telegram-native games, and the occasional userbot for the things bots can't do.

Pyrogram Telethon MTProto raw Bot API Userbots FloodWait-aware
/data · persisted

Storage

MongoDB for fast cache layers with TTLs, PostgreSQL for the persistent truth, JSONB for game-state blobs, and SQLite for tiny local tools that have no business hitting a server.

MongoDB · Motor PostgreSQL · asyncpg JSONB SQLite Redis
/host · production

Hosting & ops

Whatever runs cheapest with the least pain. Easypanel and Koyeb for bots, GitHub Pages for static sites, plus a small VPS for things that need to stay alive between deploys.

Easypanel Koyeb Heroku Render DigitalOcean Docker GitHub Pages
/android · tinkering

Android

Custom ROMs, OrangeFox recoveries, KernelSU root, the occasional Magisk module. Two phones in the testing pile and one backup that lives permanently in fastboot.

OxygenOS 15 port KernelSU crDroid HyperOS port OrangeFox Magisk Fastboot · EDL Termux
/tools · daily

Daily tools

Where the typing actually happens. A phone with Termux for almost everything, a laptop when one is nearby, and the same handful of CLI tools every single time.

VS Code Termux Git · GitHub tmux curl + jq FFmpeg regex
/03 · skills

An honest comfort-level chart.

These bars try to tell the truth. Comfortable means I've shipped real code with it and I can debug it without a search bar. Learning means I've broken things with it and I'm still pulling out of the curve.

Pyrogram · Telegram MTProto92 %
bots, userbots, raw MTProto, Bot API fallback
Python · async, typing, packaging88 %
asyncio, decorators, dataclasses, regex, click
Custom ROMs · OrangeFox · KernelSU85 %
flashing, recovery, root, EDL unbrick, modules
MongoDB · Motor · TTL caches80 %
indexes, aggregations, upserts, change-streams
Linux · Termux · Bash78 %
tmux, ffmpeg pipelines, ssh, cron, systemd-ish
PostgreSQL · asyncpg · JSONB72 %
migrations, jsonb queries, partial indexes, pg_dump
Git · GitHub · Actions70 %
branches, rebase, PRs, basic CI workflows
Docker · Easypanel · Koyeb65 %
multi-stage builds, env files, health checks
HTML · CSS · vanilla JS60 %
grid, flex, custom properties, IntersectionObserver
Regex · battle-tested by forwarders55 %
caption normalization, quality tags, dedup
FFmpeg · small video pipelines45 %
trimming, resampling, hwaccel where available
Go · learning slowly35 %
small CLIs, channels, the bare-minimum stdlib
/04 · services

Things I can actually help you with.

I take a small number of paid jobs at a time, mostly from friends-of-friends in the Telegram community. Six things I'm comfortable picking up; everything else I'll gently say no to.

/01 · bots

Custom Telegram bots

Pyrogram-based bots and userbots. Force-sub gates, file batching, broadcast tools, voice-chat moderation, small Telegram-native games, anti-abuse rules. Mongo or Postgres depending on what survives best.

/02 · automation

Channel forwarders

Caption normalization, quality-tag rewriting, dedup against Mongo, multi-source → multi-destination forwarders, scheduled re-broadcasts. Turning ten ad-hoc admin tasks into one command.

/03 · data layer

Mongo ⇆ Postgres

Moving an existing bot from MongoDB to PostgreSQL (or back) without downtime — sync bridges, JSONB schemas, backup & restore commands, and a small admin panel for the people who actually run it.

/04 · static sites

Hand-built landing pages

One-file HTML/CSS/JS sites, deployed on GitHub Pages or Cloudflare. No frameworks, no build step, no surprise tracking. Like this site, but yours.

/05 · android

Custom ROM & recovery help

Walking you through unlocking, flashing OrangeFox/TWRP, picking a ROM with an active maintainer, KernelSU setup, and EDL-unbricking. Mostly Snapdragon Xiaomi/Poco devices and a handful of OnePluses.

/06 · debug nights

Pair-debugging your bot

Stuck on FloodWait spam, a deploy that won't bind to $PORT, or a Pyrogram session that keeps logging out? I'll sit through one voice chat with you and we'll fix it together.

/05 · school

+1 BioScience, in parallel.

All of the above happens around school hours. Plus-One BioScience, NCERT syllabus, with these six subjects rotating through every week of the term.

/sci · life

Biology

Botany & Zoology — the whole reason this is BioScience and not pure science. Cell structure, plant kingdom, animal kingdom, biomolecules, transport in plants. Heaviest text-book of the lot.

/sci · matter

Physics

Mechanics → kinematics → laws of motion → work, energy, power → gravitation → electricity. The chapter I always re-read at 1 AM the night before the exam, and one I quietly enjoy.

/sci · stuff

Chemistry

Organic > Inorganic > Physical, in that exact order of comfort. The mole concept and I have an understanding. Equilibrium and I are still negotiating.

/sci · numbers

Mathematics

Calculus is friendly, vectors are fine, statistics is a continuing project. The textbook lives next to the laptop and gets opened roughly as often.

/lang · english

English

I read more than the syllabus and write exactly the syllabus. The compositions are fine; the literature questions are an ongoing argument with the answer key.

/lang · hindi

Hindi

Second language. Slow but improving every term. Reading is fine, writing under timer is the goal.

/06 · selected work

Projects I've actually shipped.

Five public projects you can star, clone, or steal patterns from today. The other ~120 repos on my profile are forks, experiments and small Termux scripts — private repos stay private, no leaks.

001 · telegram bot
Python · Pyrogram
MongoDB → Postgres
multi-group
2024 · ongoing

Cavin Game

A Telegram-based Word Grid challenge bot. Real-time word-guessing sessions across many groups, persistent player stats, daily-refilling hint currency, broadcast tools, and a "Lightning Round" achievement for clearing a grid in under 120 seconds. Migrated end-to-end from MongoDB to PostgreSQL while keeping a sync bridge so existing groups never went down. JSONB settings tables, score-log events, and a small admin panel that costs me roughly nothing to run.

view code →
002 · telegram security
Pyrogram · MTProto raw
Bot + Userbot
Mongo TTL cache
2026 · live

Cavin VC Guard

An automated voice-chat moderator for Telegram. A dual-client architecture (Bot + Userbot) watches group calls in real time and enforces join rules, streaming permissions, and anti-abuse policies. It falls back gracefully from userbot mute to Bot-API restrict, deduplicates joins in memory, and writes every decision to a private audit log channel. Anonymous-admin handling is built in because somebody always tries it.

view code →
003 · board game bot
Python · Pyrogram
PostgreSQL · JSONB
4-player partnership
2026 · new

Cavin Jackaroo

A full Telegram implementation of the Jackaroo (Tock) board game. Four-player partnership matches with persistent state, CPU placeholders for empty seats, special-card rules (4 backward, 7 split, etc.), compact pipe-encoded callback data to fit within Telegram's 64-byte limit, and live rehydration of in-progress games from PostgreSQL after every restart. The kind of project where the rules engine is bigger than the bot.

view code →
004 · automation
Python · Pyrogram
multi-channel
regex parsing
2024 · long-running

4Sale Forwarder

A high-throughput forwarder that watches source channels, normalizes captions and quality tags through a battery of regexes, deduplicates against a Mongo index, and rebroadcasts cleanly to destination channels — keeping admin workload on movie hubs down to almost zero. The kind of bot that runs for months and only gets noticed when it stops.

view code →
005 · web
HTML · CSS · JS
no frameworks
GitHub Pages
2026 · this site

This Portfolio

The page you are currently reading. Three files: one HTML, one CSS (a small premium-themed system in this case, gold on warm white), and one JavaScript that talks to the GitHub REST API and animates the things you're scrolling past. A scheduled GitHub Action rebuilds the contributions snake every twelve hours. Zero frameworks, zero build step, zero excuses.

view code → view live →
006 · experiments
mostly Python
some shell & Docker
2021 → today
120+ repos

The other ~120 repos

Forks I learned from, half-finished file-share bots, music players, request-join handlers, small Termux scripts, and the occasional Magisk module. Some are great references. Some are quiet experiments that didn't pan out. They're all on the profile if you want a tour through how I learned this craft, very publicly, over the last five years.

browse all repos →
/07 · github

Live from @Abhishek-Issac.

Everything below is fetched at page-load from the GitHub REST API or rebuilt on a schedule by a GitHub Action. Private repository names are excluded by design — only !fork && !private repos appear.

Snake not animating? The GitHub Action workflow has to live at .github/workflows/snake.yml (Devin's OAuth couldn't push it directly — scope limit). Click → paste from docs/snake-workflow.yml → commit. About thirty seconds. open in github editor →
github streak · current & longest @abhishek-issac
GitHub current streak
contributions · last year auto-rendered
GitHub contribution heatmap
activity sparkline · last 31 days commits + reviews
GitHub activity graph
contribution snake · auto-updated by github actions @abhishek-issac
GitHub contribution graph rendered as a snake game
🐍 the snake will appear here once the GitHub Action has run at least once. Use the open in github editor button above to add the workflow file, then run it manually from the Actions tab.
/profile · live

By the numbers

followers
following
129
public repos
2021
joined GitHub
/langs · live

Language mix

Computed at page load by counting each public, non-fork repo's primary language. Python comes out on top — usually by a margin that surprises me.

Python · 70% Dockerfile Shell JavaScript HTML PHP

recently active public repositories

/08 · devices

The phones I actually own.

A short and honest list. Three phones, one daily driver, two helpers. No iPhones, no flagships — Snapdragon mid-range from end to end.

P
/01 · daily driver · vayu
Poco X3 Pro · 6/128
SD860, 5120 mAh, 120 Hz IPS. The phone where almost all of the code happens — Termux, tmux, git, JetBrains Mono at a slightly-too-big size. Currently on OxygenOS 15 port for vayu/bhima.
M
/02 · backup · testing
Moto G52 · 8/128
SD680. The phone that takes the bullet when I want to test a sketchy ROM build. More RAM, less heat. My "if-something-goes-wrong-here-it's-fine" device.
e
/03 · always on · wifi node
Moto E5 · 2/16
Tiny SoC, 2 GB of RAM, lives next to the router. Runs a couple of low-traffic background bots, mostly because turning it off would feel ungrateful at this point.

ROM journey on the X3 Pro · 2025 → today

Roughly chronological. Some lasted weeks, some lasted three days. The current one is highlighted.

2021 — 2025
MIUI 12 / 13factory baseline · before the custom-ROM era
retired
jan · 2026
HyperOS 3 port (vayu/bhima)first big jump off MIUI · clean look but camera issues
tested
mar · 2026
crDroid A15clean AOSP base · first proper KernelSU setup · NikGapps elite
retired
mar · 2026
Project Infinity X (A16)gaming-tuned · ROG kernel · smooth thermals
tested
apr · 2026
crDroid A16 + KernelSUdirty-flashed from A15 · NikGapps + elite package
retired
apr · 2026 → now
OxygenOS 15 port (vayu/bhima)two-part stable build · OrangeFox sideload · daily
current
/09 · how I work

Build small. Ship fast. Refactor in public.

I'd rather have a working version one in production tonight than a beautiful diagram on Monday. The commit graph is my notebook — features land in tiny pieces, and refactors happen out in the open instead of in a long-lived branch nobody is allowed to touch.

Two things get optimized first: uptime for the people using the bot, and readability for whoever has to debug this at 2 AM on a phone keyboard — which is usually a slightly-tired version of me. Everything else is negotiable.

/10 · principles

Three short rules I keep coming back to.

Not testimonials, not catchphrases. Three sentences I've said out loud often enough that they've quietly become how I work.

Ship the smallest version that helps a real person. Iterate from feedback, not from a whiteboard.

/01 — on shipping

If a script can run on a 6 GB phone over flaky 4G, it can probably run anywhere I'd ever deploy it. Optimize for the worst environment first.

/02 — on constraints

Future-me reading this code at 2 AM has zero patience for cleverness. Plain functions, named variables, boring patterns.

/03 — on readability
/11 · journey

A short, honest timeline.

Only verifiable dates. Pre-2021 is intentionally blank — I was learning then, but nothing public, so I'm not going to invent dates I can't prove.

NOV · 2021

Joined GitHub as @Abhishek-Issac.

Account created on 2021-11-08. Early commits were shell scripts, half-broken file-share bots, and a fairly long list of forks I used to read other people's code from the inside out.

2022 — 2024

Pyrogram, Mongo, deploys.

Years of small-to-medium Telegram bots — autobatch, request-handlers, file-share variants, a series-fetcher that taught me regex the hard way. MongoDB with TTL caches became the default. Most of these repos are still on the profile.

JAN — FEB · 2026

Cavin Game · Mongo → Postgres.

Migrated the whole word-grid bot to PostgreSQL with a sync bridge. JSONB settings, score-log tables, and the first proper backup/restore commands I'd ever written.

FEB · 2026

+1 BioScience · mid-term exams.

Most of the codebase work paused while biology, physics, chemistry, maths, English and Hindi took over the calendar for a few weeks.

MAR · 2026

Cavin VC Guard.

Bot + userbot voice-chat moderator on top of MTProto raw. Falls back from userbot mute to Bot-API restrict, deduplicates joins, writes audit logs to a private channel.

MAR — APR · 2026

Custom ROM journey on the X3 Pro.

From MIUI 13 → HyperOS 3 port → crDroid A15 → Project Infinity X → crDroid A16 → OxygenOS 15 port. Six custom ROMs in two months without losing a kernel.

APR · 2026

Cavin Jackaroo.

4-player partnership board game on Telegram. PostgreSQL JSONB for game state, compact pipe-encoded callback data, and live rehydration of in-progress games on every restart.

MAY · 2026 — NOW

Portfolio v3 & +1 second-term prep.

This site, rebuilt from scratch in a heavier white-and-gold theme. Live GitHub data, contributions snake, and a quiet effort to keep my +1 grades from sliding while bots keep shipping.

/12 · now

What I'm on, this week.

A loose "now page" inspired by nownownow.com. Updated by hand whenever life shifts gears.

/code

building

Tightening up Cavin VC Guard, fixing a stubborn $PORT binding issue on Easypanel, and refactoring the movie-hub forwarders to share a single Mongo cache layer.

/learn

learning

A bit more Go, a lot more PostgreSQL internals, and how to write Pyrogram handlers that fail loudly instead of silently.

/play

playing

Wuthering Waves on the Poco X3 Pro at medium settings. Long-running campaign in Genshin Impact when the schedule allows.

/study

studying

NCERT +1 BioScience second-term — Botany, Zoology, Physics, Chemistry, Maths, English, Hindi. Three chapters underlined per night, when it actually works out.

/wear

running on

OxygenOS 15 port on the Poco X3 Pro, KernelSU root, OrangeFox recovery on standby, Termux as the IDE, JetBrains Mono everywhere.

/open-to

open to

Small paid Telegram-bot edits, weird automation problems, kind humans, and any contest where I can lose gracefully. DM me on Telegram before anywhere else.

/13 · contact

Easier than you think to reach me.

Telegram is fastest. GitHub is best for code. Instagram is mostly memes. Email works if you're patient.