Skip to content

Latest commit

 

History

109 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Desk-tools

A high-performance, local-first utility platform designed for multi-tasking individuals at startups.

Live Service: https://zafrem.github.io/Desk-tools/

Main Page

Why I made this

I built Desk-tools for people who end up doing everything on their own: the frontend, the backend, the design, and the planning. With vibe coding taking off, I think there are a lot more of us now, and I'm one of them.

When you're the whole team, a normal day means jumping between totally different jobs, and each one sends you off to some other website. Format some JSON here, grab a color there, test a regex somewhere else, then go update your board. Most of those sites are slow and covered in ads. I got tired of it, so I put the things I actually use in one place.

Overview

Desk-tools is a set of 64+ small utilities that all live in one app, aimed at solo builders who have to wear every hat. It runs entirely in your browser, built with Next.js 15 and React 19. Nothing you type gets uploaded anywhere. Your data is saved locally in your browser (IndexedDB via Dexie.js), so it stays on your machine, and once the page has loaded it keeps working offline.

Privacy & Local-First

  • Zero Server-Side Storage — Your notes, tasks, and settings are stored only in your browser via IndexedDB.
  • Offline Capable — Once loaded, all tools work without an internet connection (PWA with service worker).
  • Privacy by Design — No tracking, no data collection, no account required.

Multi-Language Support

Available in English, Korean, Chinese (Simplified), and Japanese with automatic browser language detection.

Key Features

Productivity Apps

App Description
Kanban Board Drag-and-drop project management with flexible columns
Notepad Persistent note-taking with markdown support and tagging
Daily Tasks Recurring daily checklists with completion tracking
Whiteboard Freeform drawing canvas for sketches, diagrams, and wireframes
Weekly Scheduler Time-slot-based weekly planner
Terms Dictionary Categorized term/definition management for consistent vocabulary
Bookmarks Grouped URL bookmarks with drag-and-drop ordering

AI Integration (Ollama)

Connect to a local Ollama instance for private LLM-powered assistance:

  • Chat with local models directly in the workspace
  • Multiple chat sessions with history
  • No API keys needed — your data stays on your machine

SSH Terminal (local proxy)

Open a full terminal in the browser and connect to your servers over SSH:

  • Live terminal powered by xterm.js
  • Saved connections (host/port/username) stored locally — credentials are never persisted
  • Works through a tiny local helper, desk-tools-ssh-proxy

Because browsers can't open raw TCP sockets, SSH traffic is bridged by a local proxy that runs on your own machine — nothing is sent to any third party:

Browser (xterm.js)  ──WebSocket──►  desk-tools-ssh-proxy (127.0.0.1:8722)  ──SSH──►  your server

Start the proxy with either option (the tool detects it automatically and connects):

# Option 1 — download the prebuilt binary for your OS (no Node.js required)
#   https://github.com/zafrem/Desk-tools-ssh-proxy/releases/latest

# Option 2 — run with Node.js 18+
npx desk-tools-ssh-proxy

Instant Search

Find any tool instantly with Fuse.js fuzzy search across names, descriptions, tags, and categories.

Data Portability

Export and import all your data (notes, tasks, bookmarks, etc.) as JSON from the top navigation bar.

Specialized Tools (64+)

Category Tools
Encoder Text Encoder, Base64 Converter, URL Encoder, HTML Entities
Converter File Format (JSON/XML/CSV/YAML/TOML), JSON-CSV, Binary-HEX, Timestamp, Markup (Markdown/Wiki), Encoding Converter (mojibake fix)
Formatter Code Formatter (Prettier, 12+ languages), Text Case Converter, SQL Formatter, Markdown Preview
Generator JSON to Code, JSON Schema, Short URL, UUID, Password, QR Code, Slug, Robots.txt, Open Graph, Schema Markup, Sitemap
Calculator Chmod, IP Subnet (IPv4/IPv6), Unit Converter, Date/D-Day, Salary/Tax, Loan, Compound Interest, Keyword Density, Meta Tag Checker, Reading Time, Word Counter, Canonical URL
Designer Design Tools (Color Picker/Palette), Icon Generator, Background Remover, Image Filters, Pixel Art Editor
Security JWT Decoder, Hash Generator (MD5/SHA), Encryption (AES-GCM/RSA-OAEP)
Developer JSON Explorer (tree view), Cron Expression Builder, Regex Tester, Text Diff, Command Palette, REST API Client, CURL Builder, SSH Terminal
AI AI Chat (requires local Ollama)
Games Sudoku (play & solve), Ladder Game (Amidakuji random picker), Roulette (spin-the-wheel picker)
Other PDF Tools, Pomodoro Timer, Iframe Viewer

Tech Stack

Layer Technology
Framework Next.js 15 (App Router, Static Export)
Language TypeScript 5
UI React 19, Tailwind CSS 3, shadcn/ui (Radix UI), Lucide React
Database Dexie.js (IndexedDB) — 9 tables
Search Fuse.js (client-side fuzzy search)
i18n i18next + react-i18next (EN, KO, ZH, JA)
Drag & Drop @dnd-kit
Drawing Konva.js + react-konva
Charts Recharts
Code Formatting Prettier (JS, TS, HTML, CSS, SQL, YAML, GraphQL, Python, PHP, Java)
Crypto Web Crypto API (AES-GCM, RSA-OAEP) + crypto-js (hashing)
PDF pdf-lib
AI Ollama (local LLM integration)
Testing Jest 29 + Testing Library
Deployment GitHub Actions + GitHub Pages

Architecture

Browser (Client-Side Only)
├── Next.js 15 App (Static Export)
│   ├── App Router Pages
│   │   ├── / (Home)
│   │   ├── /kanban, /notepad, /daily-tasks, ...
│   │   └── /tools/[tool-id] (56 tool pages)
│   ├── Components
│   │   ├── AppShell (TopNav + ToolSidebar + Content)
│   │   ├── ToolLayout (tool page wrapper)
│   │   └── ui/ (shadcn/ui primitives)
│   └── Providers
│       ├── I18nProvider (i18next)
│       ├── ThemeProvider (next-themes)
│       └── SidebarProvider (context)
├── IndexedDB (Dexie.js)
│   └── 9 tables (ganttTasks, notes, terms, bookmarks, commands, preferences, dailyTasks, weeklySchedule, chatSessions)
├── Service Worker (offline / PWA)
└── Web Crypto API (AES-GCM, RSA-OAEP)

Adding a New Tool

  1. Add an entry to lib/tools-registry.ts with a unique id, category, and path
  2. Create app/tools/[tool-id]/page.tsx as a client component ("use client")
  3. Wrap content with <ToolLayout title="..." description="...">
  4. Add helper functions to lib/ if needed
"use client";
import { ToolLayout } from "@/components/tool-layout";

export default function MyToolPage() {
  return (
    <ToolLayout title="Tool Name" description="Tool description">
      {/* Tool UI here */}
    </ToolLayout>
  );
}

Local Development

  1. Clone the repository:

    git clone https://github.com/zafrem/Desk-tools.git
    cd Desk-tools
  2. Install dependencies:

    npm install
  3. Run the development server:

    npm run dev

    Open http://localhost:3000 in your browser.

  4. Build for production:

    npm run build
  5. Preview static build locally:

    npx serve@latest out

Testing

npm test              # Run all tests
npm run test:watch    # Run tests in watch mode
npm run test:coverage # Run tests with coverage report
npm run test:ci       # CI mode with coverage (lcov + html)

Tests are located in the __tests__/ directory and cover utility functions, components, and tool registry validation. Coverage reports are generated for SonarQube integration.

Deployment

This project is configured for GitHub Pages with automatic deployment. Any push to the main branch triggers the GitHub Actions workflow which:

  1. Installs dependencies (npm ci)
  2. Builds the static export with NEXT_PUBLIC_BASE_PATH=/Desk-tools
  3. Deploys the /out directory to GitHub Pages

Feedback & Requests

I'm still adding to this whenever I hit something I need. If there's a tool you want or you run into a bug, open an issue on GitHub.

Support the Project

If you find this useful, consider buying me a coffee!

Buy Me A Coffee


Created by zafrem

About

A high-performance, local-first utility platform designed for multi-tasking individuals at startups.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages