3rd-year B.Tech CS at Atlas Skilltech University. Past web dev intern at The Boulder House & dev team intern at CloudStrats. Creator of Inkdex (Aether HackConquest 2025 winner).
React, Node.js, TypeScript & Cloud Systems
Trade-offs, post-mortems, and engineering convictions. Explore interactively via the 3D sphere or read straight through the editorial archive.
A cloud-based notes sharing platform built for students to upload, explore, and access study materials seamlessly. Built with React and Vite on the frontend, Tailwind CSS for styling, Firebase on the backend, and deployed on Vercel.
User accounts and sessions.
Upload and organize study materials.
Tag notes by course, subject and topic.
Browse materials shared by other students.
View and manage notes you have uploaded.
Contributor profile and account details.
Usable across mobile and desktop screens.
A mistake I learned from: picking JavaScript for OCR out of familiarity instead of choosing Python for its mature computer vision ecosystem.
// JavaScript OCR experiment
// Attempting handwritten OCR with client-side JavaScript
import { createWorker } from "tesseract.js";
export async function extractText(canvas) {
const ctx = canvas.getContext("2d");
const imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);
// Manual image pixel manipulation in JavaScript
const worker = await createWorker("eng");
const ret = await worker.recognize(canvas);
await worker.terminate();
return ret.data.text;
}# Planned Inkdex OCR Architecture
# Python has purpose-built libraries for vision and image processing
import cv2
import pytesseract
def process_handwritten_note(image_path: str) -> str:
img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
clean = cv2.adaptiveThreshold(
img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY, 15, 4
)
return pytesseract.image_to_string(clean)Vote on upcoming features. Votes persist to the database and can be undone.
Sign in with an existing Google or Microsoft account.
Let students give feedback on shared notes.
Search inside photos and scans of handwritten notes.
Short summaries of uploaded notes for revising before exams.
Connect Inkdex with learning management systems.
Share notes with students at other colleges.
The beliefs and working habits behind my projects.
People shouldn't let their limited knowledge in programming stop them from doing what they like. You don't need to know everything before starting a project.
Whenever I build something I look at past experiences and projects. If a framework from a past project is more convenient, I use it. If not, I learn a new one.
Trying to build OCR in JavaScript taught me that habit isn't a good reason to pick a language. Python's ecosystem is built for image processing; use the right tool.
I believe debugging with AI is much easier and more convenient, where you and the AI work together to debug a certain problem.
Walk through two examples of problems I tackled and what I learned from them.
Inkdex uses Firebase on the backend. Early on, I had to fix security-related issues with Firebase.
// Initial setup needed security hardeningLeave feedback on Inkdex, drop an engineering note, or download the direct contact vCard below.
From barycentric safe-cone menus and BlurHash canvas matrices to idempotent optimistic mutations: inspect and test every interaction pattern built into this site.
Placeholder blocks that match the layout while content loads.
The UI updates immediately, then syncs with the server.
Keyboard launcher for stories, sections and links.
Keyboard shortcuts shown next to the controls they trigger.
A notification with an Undo button that reverts the change on the server.
Current data stays on screen while fresh data is fetched in the background.
The page shell is rendered ahead of time on the server.
A small blurred color canvas shows first and fades into the real content.
Modals animate in and out instead of appearing abruptly.
Drag the story reader down to close it.
Spring animations can change direction mid-way without snapping.
Hovering the previous or next button previews where it leads.
Invisible padding makes small controls easier to tap.
Content stays clear of notches and home indicators on phones.
Export full .vcf contact card and copy email with instant clipboard feedback.
Equal-width digits so numbers don't shift as they change.
Headings wrap evenly instead of leaving one word on the last line.
Smoother rounded corners in browsers that support corner-shape.
Each request carries a key so a double click isn't counted twice.
The submenu stays open while the cursor moves diagonally toward it.
Systems · Interfaces · WebGL