๐๏ธ 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
.mdfiles 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 devOpen 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!
- Fork the repo and create your branch:
git checkout -b feature/my-change - Make your changes and ensure lint passes:
npm run lint - Commit with a clear message:
git commit -m "Add: description of change" - Push and open a pull request.
Adding a new topic
- Create a new folder at the project root (e.g.,
SystemDesign/). - Add a
README.mdinside that folder with topic metadata. - Add your Markdown notes to the folder.
- Update the manifest in
src/lib/manifest.tsso the topic appears in navigation.
๐ License
MIT โ see LICENSE.