Kynan Dsilva

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

Scroll to explore
Field Notes

Written in the margins.

Trade-offs, post-mortems, and engineering convictions. Explore interactively via the 3D sphere or read straight through the editorial archive.

1 of 10 read
Interactive 3D Sphere Explorer
01Chances Taken

Winning Aether HackConquest 2025

How building Inkdex from zero for real students won first place at Aether HackConquest 2025.

CompletedTap tile to revisit
Project: InkdexAether HackConquest 2025 Winner

Inkdex: Cloud Notes for Students

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.

View on GitHub
Current Features
Authentication

User accounts and sessions.

Upload Notes

Upload and organize study materials.

Dynamic Tags

Tag notes by course, subject and topic.

Explore Notes

Browse materials shared by other students.

Your Notes

View and manage notes you have uploaded.

Profile Page

Contributor profile and account details.

Responsive UI

Usable across mobile and desktop screens.

Tech Stack
FrontendReact + Vite
StylingTailwind CSS
BackendFirebase
DeploymentVercel
Engineering Post-Mortem

OCR: JavaScript vs. Python

A mistake I learned from: picking JavaScript for OCR out of familiarity instead of choosing Python for its mature computer vision ecosystem.

JavaScript experiment
// 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 Python pipeline
# 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)

Roadmap

Vote on upcoming features. Votes persist to the database and can be undone.

Auth & IdentityPlanned

Google and Microsoft login

Sign in with an existing Google or Microsoft account.

CommunityPlanned

Ratings, upvotes and comments

Let students give feedback on shared notes.

AI & OCRPlanned

OCR search for handwritten notes

Search inside photos and scans of handwritten notes.

AI & OCRPlanned

AI summaries for quick revision

Short summaries of uploaded notes for revising before exams.

EcosystemPlanned

LMS integrations

Connect Inkdex with learning management systems.

CommunityPlanned

Cross-campus sharing

Share notes with students at other colleges.

Principles

What I care about and how I think

The beliefs and working habits behind my projects.

01Conviction

Limited knowledge shouldn't stop you

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.

02Frameworks

Reuse what works, learn what's needed

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.

03Ecosystems

Pick the tool that fits the problem

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.

04Workflow

Debugging together with AI

I believe debugging with AI is much easier and more convenient, where you and the AI work together to debug a certain problem.

Debugging & Problem Solving

Walk through two examples of problems I tackled and what I learned from them.

1. The Issue

Inkdex uses Firebase on the backend. Early on, I had to fix security-related issues with Firebase.

Step 1 of 3
Inkdex backend rules
// Initial setup needed security hardening
Community & Direct Line

Sign the guestbook or start a conversation

Leave feedback on Inkdex, drop an engineering note, or download the direct contact vCard below.

Direct Line Available·Typically responds within 24 hours
kynandsilva06@gmail.com
Compose Email

Sign the Guestbook

Live Sync

Leave a note, feedback on Inkdex, or an engineering question.

Guestbook Notes (0)Live database
No notes yet. Be the first to sign the guestbook above.
Interface Craft

Under the Hood: 20 UI Details.

From barycentric safe-cone menus and BlurHash canvas matrices to idempotent optimistic mutations: inspect and test every interaction pattern built into this site.

01. Skeleton loadersPerceived Speed
Press S, or use the button in this section

Placeholder blocks that match the layout while content loads.

Live
02. Optimistic updatesPerceived Speed
Inkdex roadmap votes and the guestbook

The UI updates immediately, then syncs with the server.

Live
03. Command menuInput & Ergonomics
Ctrl+K or Cmd+K

Keyboard launcher for stories, sections and links.

Live
04. Shortcut hintsInput & Ergonomics
Command menu, Ask (A), X-Ray (X), Skeletons (S)

Keyboard shortcuts shown next to the controls they trigger.

Live
05. Undo toastsInput & Ergonomics
Roadmap votes, saved stories and guestbook posts

A notification with an Undo button that reverts the change on the server.

Live
06. Stale-while-revalidatePerceived Speed
GET /api/portfolio

Current data stays on screen while fresh data is fetched in the background.

Live
07. Pre-renderingPerceived Speed
Next.js App Router

The page shell is rendered ahead of time on the server.

Live
08. Blur hash placeholdersPerceived Speed
Inkdex feature list

A small blurred color canvas shows first and fades into the real content.

Live
09. View transitionsMotion & Spatial
Story reader and modals

Modals animate in and out instead of appearing abruptly.

Live
10. Swipe-to-dismiss sheetsMotion & Spatial
Story reader

Drag the story reader down to close it.

Live
11. Interruptible animationsMotion & Spatial
Story reader and modals

Spring animations can change direction mid-way without snapping.

Live
12. Predictive backMotion & Spatial
Story reader ([ and ])

Hovering the previous or next button previews where it leads.

Live
13. Hit slopInput & Ergonomics
Small buttons across the site (press X to see them)

Invisible padding makes small controls easier to tap.

Live
14. Safe area insetsTypography & Polish
Page padding (env(safe-area-inset-*))

Content stays clear of notches and home indicators on phones.

Live
15. One-click vCard & direct lineInput & Ergonomics
Direct contact bar in community section

Export full .vcf contact card and copy email with instant clipboard feedback.

Live
16. Tabular numbersTypography & Polish
Vote counts and telemetry metrics

Equal-width digits so numbers don't shift as they change.

Live
17. Balanced headlinesTypography & Polish
Section headings (text-wrap: balance)

Headings wrap evenly instead of leaving one word on the last line.

Live
18. Continuous cornersTypography & Polish
Cards (corner-shape: superellipse, where supported)

Smoother rounded corners in browsers that support corner-shape.

Live
19. Idempotency keysPerceived Speed
Roadmap votes, guestbook and saved stories

Each request carries a key so a double click isn't counted twice.

Live
20. Amazon safe triangleInput & Ergonomics
Explore menu in the navigation bar

The submenu stays open while the cursor moves diagonally toward it.

Live
KYNAN DSILVAOpen to Collabs

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).

India (IST)UTC+5:30

UTC+5:30 · Active engineering hours

Architecture & Status

All systems nominalv1.0.0
Stack:Next.js 15 · WebGL2
Language:TypeScript 5.7
Styling:Tailwind CSS 3.4

Continuous delivery via Vercel edge runtime. Idempotent optimistic client-side mutations.

© 2026 Kynan Dsilva. Built with Next.js 15, WebGL2, and zero gatekeeping.

Kynan Dsilva

Systems · Interfaces · WebGL