DEV Community

Full-Moon
Full-Moon

Posted on

Built UtilCraft: 15+ Free Web Tools in One Place

๐Ÿค” The Problem

You need to format JSON. What do you do?

  1. Google "JSON formatter"
  2. Click random site
  3. Deal with ads and slow loading
  4. Use tool
  5. Need something else? Start over...

There had to be a better way.

๐Ÿ’ก The Solution

I built UtilCraft - all your everyday tools in one place.

๐ŸŽฏ What's Inside

15+ Essential Tools

  • ๐Ÿ–ผ๏ธ Image Resizer - Batch process, instant results
  • ๐Ÿ“ JSON Formatter - Validate, format, minify
  • ๐Ÿ” Password Generator - Cryptographically secure
  • ๐ŸŽจ Color Converter - HEX โ†” RGB โ†” HSL โ†” CMYK
  • ๐Ÿ“ฑ QR Generator - URL, WiFi, vCard
  • โšก Base64 Encoder - Text & files
  • ๐Ÿ”— URL Encoder - Safe URL formatting
  • ๐Ÿ†” UUID Generator - Bulk generation
  • ๐Ÿ“Š Word Counter - Real-time stats
  • ๐Ÿงฎ Calculator - Scientific mode
  • ๐Ÿ“ Unit Converter - Length, weight, temp
  • ๐Ÿ“ Markdown Editor - Live preview

5+ Mini Games

Quick mental breaks without leaving the site:

  • 2048, Snake, Tetris, Memory Match, Tic-Tac-Toe

๐Ÿš€ Why It's Different

1. Privacy First

Everything runs in your browser:

// Images never leave your device
const canvas = document.createElement('canvas')
// Process locally, no upload!
Enter fullscreen mode Exit fullscreen mode

Your files = Your device only.

2. Actually Fast

  • No ads slowing you down
  • Instant processing
  • Works offline (PWA ready)

3. Works Everywhere

  • ๐Ÿ“ฑ Mobile optimized
  • ๐ŸŒ 7 languages (ko/en/ja/es/zh/pt/fr)
  • ๐ŸŒ™ Dark mode included

๐Ÿ› ๏ธ Tech Stack

Built with modern tools for maximum performance:

Next.js 14 (App Router)
TypeScript (type safety)
Tailwind CSS (styling)
Radix UI (components)
Self-hosted on Oracle Cloud
Enter fullscreen mode Exit fullscreen mode

Why Next.js 14?

Performance wins:

  • Server Components for static content
  • Client Components for interactive tools
  • Code splitting per route
  • <50KB initial bundle

Result: Lightning fast, even on slow connections.

๐Ÿ“ˆ Some Cool Technical Bits

Dynamic Loading

// Only load what you need
const ImageResize = dynamic(
  () => import('@/components/tools/image-resize'),
  { loading: () => <Spinner /> }
)
Enter fullscreen mode Exit fullscreen mode

Multi-Language Support

// Easy internationalization
lib/translations/
โ”œโ”€โ”€ ko.ts  // Korean
โ”œโ”€โ”€ en.ts  // English
โ”œโ”€โ”€ ja.ts  // Japanese
โ””โ”€โ”€ ...    // and more
Enter fullscreen mode Exit fullscreen mode

Client-Side Processing

// Password generation (secure!)
const generatePassword = (length: number) => {
  const array = new Uint8Array(length)
  crypto.getRandomValues(array) // Browser crypto API
  return convertToPassword(array)
}
Enter fullscreen mode Exit fullscreen mode

๐Ÿ’ช Challenges & Solutions

Challenge 1: Performance

Problem: Tools loading slowly
Solution: Code splitting + dynamic imports
Result: Each tool loads independently

Challenge 2: Mobile UX

Problem: Complex tools on small screens
Solution: Mobile-first design from day 1
Result: Works great on phones

Challenge 3: Offline Usage

Problem: Need internet for every tool
Solution: PWA + client-side processing
Result: Works without connection

๐ŸŽ“ What I Learned

Next.js 14 is production-ready

  • App Router is stable
  • Server/Client split is powerful
  • File-based routing scales well

Performance matters more than features

  • Fast > Feature-rich
  • 1s load time = Happy users
  • Bundle size affects everything

Privacy is a feature

  • Users appreciate no uploads
  • Client-side = zero server costs
  • Simpler infrastructure

๐Ÿš€ What's Next

Continuously improving based on user feedback. Have ideas for new tools or features? Let me know!

๐ŸŽ Try It Yourself

Live site: utilcraft.com

It's completely free, no signup required.

๐Ÿ’ฌ Your Feedback

What would make this more useful for you?

  • Missing a tool you use often?
  • Found a bug?
  • Feature suggestion?

Drop a comment! I'm actively developing this and would love your input.


Built with โค๏ธ by a solo developer who got tired of switching between websites.

#webdev #nextjs #typescript #sideproject

Top comments (0)