Building · Hero 0%
Asmit Sarkar in a pink shirt, smiling

> HELLO_WORLD

Hello, I’m Asmit Sarkar

Building useful Android & web experiences — from idea to live app.

Aspiring full-stack & Android developer from Chattogram — I build Android apps with Kotlin and Jetpack Compose, and web apps with Python + Flask and Next.js: small tools that solve real problems, shipped and live.

22GitHub repos
7Live web apps
12Featured projects
2Platforms · Android & Web
01 /

About me

A developer from Chattogram who learns by shipping real projects.

I’m Asmit Sarkar, an aspiring full-stack and Android developer from Chattogram, Bangladesh. I finished my HSC in Science in 2026 from Sir Ashutosh Government College, and I’m currently focused on learning programming and coding, with a growing interest in cyber security.

On the Android side I build with Kotlin and Jetpack Compose — including DoremanAI, a voice-controlled personal assistant, and SUST OR DIE, a study-planner app I built to organise my own study routine. On the web I work with Python + Flask and Next.js: my Password Leak Checker and Expense Splitter are both live and used by real people.

My rule is simple: don’t just learn it — build it, ship it, and let people use it.

02Android apps built
07Web apps live
50Currencies in Expense Splitter
01Rule — build, ship, learn
Assistant.ktKotlin · DoremanAI
// voice commands, handled on-device first
fun onVoiceCommand(text: String) {
    when {
        text.startsWith("call") ->
            callContact(nameFrom(text))
        text.startsWith("text") ->
            sendMessage(text)
        else -> askAI(text)
    }
}
app.pyPython · Flask
# Password Leak Checker — check endpoint
@app.route("/api/check", methods=["POST"])
def check_password():
    pw = request.json.get("password")
    hits = lookup_breaches(pw)
    # nothing typed here is ever stored
    return jsonify(breaches=hits,
                   safe=(hits == 0))
  • NAMEAsmit Sarkar
  • LOCATIONChattogram, Bangladesh
  • EDUCATIONHSC 2026 · Science — Sir Ashutosh Government College
  • CURRENTLYLearning programming & coding · Interested in cyber security
  • STACKKotlin · Flask · Next.js
  • GITHUBgithub.com/asmitsr ↗

Who is Asmit Sarkar?

Asmit Sarkar (asmitsr) is an aspiring web and Android developer from Chattogram, Bangladesh. He finished his HSC in Science in 2026 from Sir Ashutosh Government College, Chattogram, and builds real projects instead of only learning theory: DoremanAI, a voice-controlled Android personal assistant; SUST OR DIE, a study-planner app; Password Leak Checker and Expense Splitter, both live on the web; plus IELTS Pathway, Skill DNA, the Asmit MCP Server, TeamForge, a whole-brand Secret Recipe Bangladesh website, Board Rank, Shobdo and Chattogram Puja. On Android he works with Kotlin and Jetpack Compose. On the web he works with Python, Flask, Next.js and TypeScript. His work is public on GitHub as asmitsr, and his portfolio is at asmitsr.vercel.app.

02 /

Skills

A Kotlin core, with reach across the stack — each tool marked Core, Strong or Working by how much I’ve shipped with it.

Android

// native apps

KotlinCORE

Main language for DoremanAI and SUST OR DIE.

Jetpack ComposeCORE

Declarative UI for every Android app I ship.

USED IN — DoremanAI · SUST OR DIE

Web Frontend

// interfaces

HTML / CSS / JavaScriptCORE

The base layer under everything web I make.

USED IN — all web projects: Password Leak Checker · Expense Splitter · IELTS Pathway · Skill DNA

Next.jsSTRONG

IELTS Pathway is built and deployed with it.

ReactSTRONG

Component-driven UI inside my Next.js work.

USED IN — IELTS Pathway

TypeScriptSTRONG

Typed code for my Next.js projects.

USED IN — IELTS Pathway

Tailwind CSSSTRONG

Utility-first styling for fast, clean layouts.

Backend & tools

// servers + shipping

Python + FlaskCORE

Backend of both my live web apps.

USED IN — Password Leak Checker · Expense Splitter

Git / GitHubSTRONG

Every project versioned and published here.

USED IN — every project on this page

split.pyPython · Expense Splitter
# settle up a group in as few transfers as possible
def settle_up(balances):
    # balances: {member: net} — positive means "is owed money"
    owes = sorted((m for m in balances if balances[m] < 0),
                  key=lambda m: balances[m])
    owed = sorted((m for m in balances if balances[m] > 0),
                  key=lambda m: -balances[m])
    return match_transfers(owes, owed)  # e.g. B -> A 300, C -> A 300
03 /

Projects

Twelve real builds — seven of them live on the web right now.

Full Showcase

Every project, in one showcase

All of my projects live in the full showcase — the live websites, the Android app downloads and everything else I've built, gathered in one place.

Open the Full Showcase →
03

DoremanAI

ANDROID · SIGNED RELEASE

A Siri-style, voice-controlled personal assistant for Android — talk to it and it acts: calls, messages, answers and everyday tasks, powered by AI gateways.

Current build is a signed release build.

KotlinJetpack ComposeVoiceAI
Case study — problem, build & outcome
Problem
Everyday phone tasks — calling, messaging, quick answers — mean tapping through apps; a voice-first assistant can do them hands-free.
Built
Kotlin + Jetpack Compose: common voice commands are handled on-device first, and open questions go to AI gateways the user configures with their own keys.
Outcome
Distributed as a signed release through the GitHub releases page.
Why this stack
Kotlin + Jetpack Compose, native Android — the assistant's jobs are phone jobs, like calls and messages, so it is built as a native app rather than a web page in a wrapper.
Hard part
Routing each request to the right place: simple commands should be handled instantly on the phone itself, while open questions need AI. Common voice commands are handled on-device first, and only open questions go out to the AI gateway.
Trade-off
Open questions run through a gateway the user configures with their own key — more setup than a built-in account, but the key and the choice of gateway stay the user's.
04

SUST OR DIE

ANDROID · SIGNED RELEASE

My personal study-planner app: a 60-day study plan with syllabus tracking, Focus Mode, custom alarms and deadline countdowns.

Public signed-release APK download — the source code stays private.

KotlinJetpack ComposeStudy planner
Case study — problem, build & outcome
Problem
My own study routine needed one place for the plan, the syllabus and the deadlines — scattered notes were not working.
Built
Kotlin + Jetpack Compose: a 60-day study plan with syllabus tracking, Focus Mode, custom alarms, deadline countdowns and an offline routine tab.
Outcome
Shared as a public signed-release APK download (7.93 MB) — the app is public, the source code stays private.
Why this stack
Kotlin + Jetpack Compose, native Android — this is a personal app that lives on my phone all day, with custom alarms and an offline routine tab, so native is the natural fit.
Hard part
Fitting a whole study routine into one place without it scattering again: the 60-day plan, syllabus tracking, Focus Mode, custom alarms and deadline countdowns all had to work together as one app built around my own routine.
Trade-off
It is built for one person's routine — mine — so it fits my plan exactly instead of trying to fit everyone. It is shared as a public signed-release APK download, and the source code stays private.
05

IELTS Pathway

WEB · LIVE

A 60-day IELTS preparation planner aimed at Band 7 — 10 hours a day with spaced revision built in, in both Bengali and English, with dark and light themes.

Next.jsTypeScriptBN / EN
Case study — problem, build & outcome
Problem
IELTS prep is usually a pile of disconnected resources — no day-by-day path that also schedules the revision.
Built
Next.js + TypeScript: a 60-day, 10-hour-a-day plan targeting Band 7 with spaced revision built in, in Bengali and English, with dark and light themes.
Outcome
Live and public on Vercel — the full 60-day plan is open to anyone from the Open Website button below.
Why this stack
Next.js + TypeScript — the plan is 60 days of structured content in two languages; TypeScript keeps that plan data typed and consistent, and Next.js serves it as a web app anyone can open.
Hard part
A day-by-day path alone isn't enough — revision has to be scheduled too, or it never happens. Spaced revision is built into the 60-day plan itself rather than bolted on, and the whole plan runs in both Bengali and English.
Trade-off
One fixed path — 60 days, 10 hours a day, aimed at Band 7. The structure that makes the plan followable also makes it demanding, and one size has to fit everyone who follows it.
06

Skill DNA

WEB · LIVE

A GitHub skill analyzer that turns a public GitHub profile into clear skill proof a recruiter can read — what you’ve actually built, not just what you claim.

GitHub APIWebAnalyzer
Case study — problem, build & outcome
Problem
Recruiters see claimed skills, not proof — a GitHub profile holds the proof, but it is hard to read at a glance.
Built
A web analyzer on the GitHub API that turns a public profile into a clear, readable summary of what someone has actually built.
Outcome
Live and public on Vercel — open it from the Open Website button below.
Why this stack
Built on the GitHub API — the proof of what someone has built already lives in their public profile, so the analyzer reads that public data instead of asking anyone to type in a list of claimed skills.
Hard part
A raw GitHub profile is hard to read at a glance. The work was turning it into a clear, readable summary of what someone has actually built — skill proof a recruiter can scan in seconds.
Trade-off
It can only show what is public — private work never appears in it, so the picture it gives is only as complete as the public profile behind it.
07

Asmit MCP Server

PYTHON · OPEN SOURCE

A public Python MCP server that gives AI tools a URL-checking tool — with SSRF protection built in, so a fetch can't be redirected onto an internal address.

✓ Version 0.1.0 — main branch CI green: 28 unit tests pass, ruff clean.

PythonMCPSSRF protection
Case study — problem, build & outcome
Problem
A tool that fetches URLs on request has to be careful about where those URLs actually lead — a link can redirect somewhere internal that was never meant to be reached.
Built
A public Python MCP server (version 0.1.0) that exposes a URL-checking tool, with SSRF protection built in: the IP is pinned and re-verified at every redirect step, so a fetch can't be steered to an internal address.
Outcome
Public on GitHub at version 0.1.0 — main branch CI green, with 28 unit tests passing and ruff clean.
Why this stack
Python — the server's job is small and focused: take a URL check, guard the fetch, report back. Python keeps that job direct, and the project is held to a checked standard — 28 unit tests and ruff, both green in CI on the main branch.
Hard part
SSRF protection that survives redirects: checking an address once is not enough, because a URL can redirect — and each redirect can point somewhere new. The IP is pinned and verified again at every redirect step, so the check holds all the way through the fetch, not just at the start.
Trade-off
Pinning and re-verifying the IP at every redirect step is stricter than a single check up front — the protection wins over the shortcut: safety on every hop, even when it means more checking per fetch.
08

TeamForge

WEB · LIVE

Race-proof team formation for hackathons — built for the Hack4Hack Crew Hiring Challenge 2026 (PS1): 50 people can race for the last seat at the same instant, and exactly one gets it.

✓ Submitted 8 Nov 2026 — frontend live on Vercel, backend live on Railway, with a built-in arithmetic CAPTCHA and security headers.

ReactViteNode.jsExpressSocket.io
Case study — problem, build & outcome
Problem
When a hackathon team has one seat left and many people grab for it at the same instant, a normal join flow can hand that seat to more than one person.
Built
A React + Vite frontend on Vercel and a Node.js (Express) backend on Railway: teams with invite codes, join requests, a live board over Socket.io, a built-in arithmetic CAPTCHA and security headers.
Outcome
Submitted 8 Nov 2026 for the Hack4Hack Crew Hiring Challenge 2026 (PS1) — live now from the Open Website button below.
Why this stack
Vite + React for the frontend and Node for the backend — the race is decided on the server, so the backend is where the seat claim has to be made safe; the frontend's job is to stay live while it happens.
Hard part
The race-proof seat claim: 50 people race for the last seat at the same instant and exactly one gets it — proven by an automated race test, not just expected to work.
Trade-off
Build note: the claim is settled on the Railway backend rather than in the browser — every join has to pass through the one place that can decide the winner, instead of each client deciding for itself.
09

Secret Recipe

WEB · LIVE

A whole-brand website for Secret Recipe Bangladesh: 90 dishes across 13 categories with verified prices, a standalone cake menu, offers, news and blogs, and all 15 outlets — built as one self-contained HTML file.

Honest note — 22 of the 42 cakes are still unlisted (real names and prices still needed), and only 12 photos are original; the rest are labelled illustrative.

HTMLCSSJavaScriptSingle file
Case study — problem, build & outcome
Problem
The whole Secret Recipe Bangladesh brand needed one website covering the full menu and every outlet — not a page for a single branch.
Built
One self-contained HTML file: 90 dishes in 13 categories with verified November 2026 prices, a standalone Cake Menu, Special Dishes, Offers, News, Blogs, Contact, and all 15 outlets, each with its own phone number.
Outcome
Live on Vercel — open it from the Open Website button below.
Why this stack
A single self-contained HTML file — the whole site ships as one file with no build step and no backend; the reservation form is front-end only.
Hard part
Verifying all 90 dishes and their prices, and all 15 outlets with their own phone numbers — every entry had to be checked, because a wrong price or number would be published as the brand's own.
Trade-off
22 of the 42 cakes are still unlisted rather than filled in with guessed names or prices — the cake menu stays incomplete until the real names and prices are known.
10

Board Rank

WEB · LIVE

HSC 2026 Chattogram Board results with full merit ranks: Science 21,436, Commerce 24,477 and Arts 31,890 students — searchable by name, roll or institute, in Bengali and English.

✓ Rank 1 — Tamzeed Tahseen Reza, 1222 marks · 2,107 students scored GPA 5.00 · 213 institutes.

HTMLCSSJavaScriptSingle file
Case study — problem, build & outcome
Problem
Board results tell a student their own marks, but not where they stand — there was no ranked list across the whole Chattogram Board.
Built
A static single-file site that loads the full lists and ranks them: all three streams, search by name, roll or institute, individual results with subject-wise marks, and top-institute views, with a Bengali / English toggle.
Outcome
Live on Vercel — Science 21,436 · Commerce 24,477 · Arts 31,890 students ranked, across 213 institutes.
Why this stack
A single static HTML file — once results are published the data is fixed, so the whole ranking can be served from one file with no backend.
Hard part
Ranking 77,803 records across three streams accurately — every student's rank has to come from the full list, in the right stream, with marks handled consistently.
Trade-off
It is an unofficial ranking made for students' convenience from publicly available result data — the site itself carries a disclaimer to verify results on the official board portal.
11

Shobdo

WEB · HACKATHON

An accessibility reader for people who see less well or struggle to read: paste Bengali or English text and it reads aloud with word-by-word highlighting, large text and high-contrast themes — everything on-device, in a single 24 KB file.

Submitted to the Ctrl+V Hackathon on 10 Nov 2026. The hosted demo link currently opens a Vercel sign-in page, so the demo video below shows it working.

HTMLCSSJavaScriptWeb Speech API
Case study — problem, build & outcome
Problem
Reading long text is hard for people with low vision or reading difficulties, and Bengali text-to-speech support is especially thin.
Built
A single 24 KB HTML file on the Web Speech API: read-aloud in Bengali (bn-BD) and English (en-US), word-by-word highlighting as it speaks, and speed, font-size and theme controls — all processing stays on the device.
Outcome
Submitted to the Ctrl+V Hackathon on 10 Nov 2026, with a public demo video — watch it from the button below.
Why this stack
The browser's built-in Web Speech API — Bengali and English voices already live in the browser, so the whole reader fits in one small file with no server and no API key.
Hard part
Word-by-word highlighting in two languages: the spoken word has to light up in Bengali (bn-BD) and English (en-US) alike, alongside speed, font and theme controls, with everything running on-device.
Trade-off
Build note: because everything runs on-device in the browser, the voices available are the ones the visitor's own browser and device provide — in exchange, the file stays tiny and nothing ever leaves the device.
12

Chattogram Puja

WEB · IN PROGRESS

A Durga Puja mandap and schedule web app for Chattogram, in Bengali: mandaps, a map and the Puja schedule in one place.

In progress — the hosted deployment still shows a setup-pending notice (the Supabase values are not set yet), so there is no live link yet; the source code below is the current state.

Next.jsTypeScriptSupabaseTailwind CSSLeaflet
Case study — problem, build & outcome
Problem
During Durga Puja, Chattogram's mandaps and their schedules are scattered — there is no single Bengali guide to which mandap is where and what happens when.
Built
A Bengali Next.js + TypeScript app with Supabase behind it and a Leaflet map: mandap listings, map and schedule sections, styled with Tailwind CSS.
Outcome
Build note — in progress: the code is public on GitHub; the hosted deployment still shows setup pending until the Supabase environment values are set.
Why this stack
Next.js + TypeScript with Supabase — mandaps and schedules are data that has to be managed and updated, so a database-backed app fits better than a static page; Tailwind handles the styling and Leaflet the map.
Hard part
Build note: the remaining step is wiring the live data — the deployment is waiting on its Supabase environment values (URL and anon key) before mandaps and schedules can load for real.
Trade-off
Build note: the app depends on Supabase being configured before anything shows — that setup step is still pending, so it is presented honestly as in progress rather than live.
04 /

Architecture

How the pieces fit, end-to-end.

LAYER 01 — CLIENT

What the user touches

  • Android — Kotlin + Jetpack Compose UI
  • Web — Next.js / HTML pages in the browser
  • Responsive, phone-first layouts

LAYER 02 — LOGIC & API

Where the work happens

  • Flask routes & REST-style endpoints
  • External APIs — breach data, AI gateways
  • Business logic: splits, checks, planners

LAYER 03 — DATA & SHIPPING

Where it lives

  • SQLite for app data (Expense Splitter)
  • Code on GitHub, every project public
  • Deployed on Vercel for live web apps

Same shape in both live web apps: Password Leak Checker sends a lookup to its Flask backend, which queries breach data and answers — nothing typed is stored. Expense Splitter keeps groups and expenses in SQLite behind Flask, and works out the balances on the server.

05 /

Workflow

Six steps, in order — the same loop every project on this page went through.

01

Discover

Start from something real — a leaked password, a messy group bill, my own exam routine. If the problem isn’t real, I don’t build it.

02

Plan

Decide the smallest version that is actually useful, and the stack that fits it — Kotlin for Android, Flask or Next.js for the web.

03

Design

Lay the screens out phone-first, because my own Android phone is the screen everything has to work on.

04

Develop

Write it in small pieces, committing to GitHub as it grows, until the whole flow works end to end.

05

Test

Run it on a real phone with real data, then fix what breaks — including the bugs only real use turns up.

06

Deploy

Ship it live on Vercel or as an APK, share the link, and keep improving from what comes back.

Terminal

A working terminal, right on the page. Type help and press Enter.

asmit@portfolio — zsh
06 /

Achievements

Certificates I have earned — view them all on the certificates page.

6 certificates earned

Cognitive Class · IBM Skills Network, Deloitte, HubSpot Academy, AWS Training & Certification and Siemens Mobility.

View all certificates →

FAQ

Quick answers about me and working with me.

Who is Asmit Sarkar?

Asmit Sarkar is an aspiring web & Android developer from Chattogram, Bangladesh. He finished his HSC in Science in 2026 from Sir Ashutosh Government College, Chattogram.

What does he build?

Android apps with Kotlin and Jetpack Compose, and web apps with Python + Flask and Next.js. His projects include DoremanAI, SUST OR DIE, Password Leak Checker, Expense Splitter, IELTS Pathway, Skill DNA, TeamForge, Secret Recipe, Board Rank, Shobdo and Chattogram Puja — see the Projects section above for each one.

Is he open for freelance work or collaboration?

Yes — he is open for freelance projects, open-source collaborations, and tech opportunities. The fastest way to start is email or WhatsApp.

How can I contact him?

Email: asmitsr.official@gmail.com · WhatsApp: 01859732897 · Phone: 01859732897 · GitHub: github.com/asmitsr

Can I download his apps?

DoremanAI is available from its GitHub releases page. SUST OR DIE is a personal study-planner app he built for his own use — there is no public download for it.

What is he learning right now?

He is focused on learning programming and coding, with a growing interest in cyber security — and he learns by building and shipping real projects.

Privacy

The short version: this site itself collects nothing — visits are measured with Google Analytics.

No storage on this site. This page stores nothing about you on any server, and nothing you type here is saved. Visits are measured with Google Analytics, which counts pages viewed and may set its own cookies to do that.

The contact form opens your own email app. When you use the “Send a Message” form, the page only opens your own email app with the name, email address and message you typed, addressed to Asmit. Nothing is sent from this page itself, and nothing you type into the form is stored here.

The certificate viewer stores nothing. Viewing a certificate just shows the certificate image held with this site — it records nothing about you or your visit.

Questions about privacy? Email asmitsr.official@gmail.com.

07 / GET IN TOUCH

Let’s Connect & Build

Open for freelance projects, open-source collaborations, and tech opportunities. Feel free to reach out via email or phone!

Phone / WhatsApp 01859732897 Call: 01859732897
GitHub Profile github.com/asmitsr

Send a Message

This opens your email app with the message addressed to asmitsr.official@gmail.com — nothing is sent from this page itself.