๐Ÿ–Š๏ธ Nano Ink

A personal knowledge base for Computer Science โ€” beautifully rendered, fast, and searchable.

๐ŸŒ Live โ†’ nanoink.suryapalanisamy.tech


โœจ Features

  • Full-text search โ€” instantly find topics across every note
  • Dark / Light theme โ€” toggle with a single click, persisted across sessions
  • Markdown-driven โ€” all content lives as .md files with frontmatter
  • Syntax highlighting โ€” powered by highlight.js with a tuned dark theme
  • LaTeX math โ€” KaTeX support for equations and formulas
  • Table of Contents โ€” auto-generated from headings for easy navigation
  • PWA โ€” installable as a standalone app with offline service worker
  • SEO optimized โ€” sitemap, robots.txt, Open Graph & Twitter cards, structured metadata
  • Responsive โ€” sidebar, cards, and reading layout adapt to any screen size

๐Ÿ›  Tech Stack

Layer Technology
Framework Next.js 16 (App Router)
UI React 19 ยท TypeScript
Styling Tailwind CSS v4 ยท PostCSS
Fonts Inter ยท JetBrains Mono (via next/font)
Markdown marked ยท gray-matter
Math KaTeX ยท marked-katex-extension
Code highlight.js
SEO next-sitemap ยท Google Analytics
PWA Service Worker ยท Web App Manifest

๐Ÿ“š Content Areas

Topic Notes
Computer Networks OSI/TCP model, DNS, HTTP, routing, TLS, FTP, email protocols
Operating Systems Processes, threads, scheduling, memory, virtual memory, IPC, deadlocks, file systems
Database SQL and NoSQL fundamentals
DSA Arrays, linked lists, trees, binary search, dynamic programming, sliding window, sorting, bit manipulation, Blind 75
Java Core Java, OOP concepts
DevOps Docker, Ansible, Terraform, Nginx, SSH, systemd, Linux administration
Web Development HTML, CSS, JavaScript, Express.js, REST APIs
System Design Scalability, Caching, Load Balancers, Kafka, Microservices, Databases, CAP theorem
Tools Git & GitHub, Neovim, Markdown

๐Ÿš€ Getting Started

Prerequisites

  • Node.js โ‰ฅ 18
  • npm or bun

Install & Run

# Install dependencies
npm install

# Start the dev server
npm run dev

Open http://localhost:3000 to view the site.

Scripts

Command Description
npm run dev Start local dev server
npm run build Production build
npm run start Serve production build
npm run lint Lint the codebase

A sitemap is automatically generated after every build via next-sitemap.

๐Ÿ“ Project Structure

NanoInk/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ app/               # Next.js App Router (routes, layout, global styles)
โ”‚   โ”‚   โ”œโ”€โ”€ api/            # API routes
โ”‚   โ”‚   โ””โ”€โ”€ docs/           # Documentation pages
โ”‚   โ”œโ”€โ”€ components/         # React components
โ”‚   โ”‚   โ”œโ”€โ”€ Header.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ Sidebar.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ SearchModal.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ MarkdownContent.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ TableOfContents.tsx
โ”‚   โ”‚   โ””โ”€โ”€ ThemeProvider.tsx
โ”‚   โ”œโ”€โ”€ lib/                # Utilities & data layer
โ”‚   โ”‚   โ”œโ”€โ”€ manifest.ts     # Topic manifest & navigation tree
โ”‚   โ”‚   โ”œโ”€โ”€ markdown.ts     # Markdown parsing pipeline
โ”‚   โ”‚   โ””โ”€โ”€ searchIndex.ts  # Full-text search index
โ”‚   โ””โ”€โ”€ types/              # TypeScript type definitions
โ”œโ”€โ”€ ComputerNetworks/       # Markdown notes
โ”œโ”€โ”€ Database/
โ”œโ”€โ”€ DevOps/
โ”œโ”€โ”€ DSA/
โ”œโ”€โ”€ Java/
โ”œโ”€โ”€ OperatingSystems/
โ”œโ”€โ”€ Tools/
โ”œโ”€โ”€ WebDev/
โ”œโ”€โ”€ public/                 # Static assets, PWA manifest, service worker
โ”œโ”€โ”€ images/                 # Content images
โ”œโ”€โ”€ next.config.mjs         # Next.js config (headers, caching, security)
โ”œโ”€โ”€ next-sitemap.config.js  # Sitemap & robots.txt generation
โ””โ”€โ”€ package.json

๐Ÿค Contributing

Contributions are welcome!

  1. Fork the repo and create your branch:
    git checkout -b feature/my-change
  2. Make your changes and ensure lint passes:
    npm run lint
  3. Commit with a clear message:
    git commit -m "Add: description of change"
  4. Push and open a pull request.

Adding a new topic

  1. Create a new folder at the project root (e.g., SystemDesign/).
  2. Add a README.md inside that folder with topic metadata.
  3. Add your Markdown notes to the folder.
  4. Update the manifest in src/lib/manifest.ts so the topic appears in navigation.

๐Ÿ“„ License

MIT โ€” see LICENSE.