AIO Converter is an all-in-one, privacy-friendly toolbox of everyday converters — built with React and Tailwind CSS. Everything runs locally in your browser: no accounts, no file uploads to a server, no tracking.
🇻🇳 Đọc bằng tiếng Việt: README.vi.md
- 9 conversion tools in one clean interface
- Bilingual — English and Vietnamese, switchable anytime
- Light / Dark / System theme, remembered per device
- Favorites — star the tools you use most, they show up on the home page
- Installable PWA — add it to your home screen and use it offline
- Fully responsive — polished on mobile, tablet and desktop
- No emoji, real icons — a consistent lucide-react icon set throughout
- Be Vietnam Pro typeface across the whole interface
| Tool | What it does |
|---|---|
| 🖼 Image Converter | Convert PNG / JPG / WEBP / BMP, resize, adjust quality — all on-device via Canvas |
| 📁 File Converter | File ⇄ Base64, and JSON ⇄ CSV |
| 🎨 Color Converter | HEX, RGB, HSL, HSB, CMYK with live preview, picker and shade palette |
| 💱 Currency Converter | 160+ currencies with live exchange rates (cached for offline use) |
| 🔤 Case Converter | UPPER, lower, Title, Sentence, camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, dot.case, aLtErNaTiNg |
| 📏 Unit Converter | Length, weight, temperature, volume, area, speed |
| 🔢 Number Base Converter | Binary, octal, decimal, hexadecimal, and any custom base 2–36 |
| 🔡 Text Encoder / Decoder | Base64, URL encoding, HTML entities |
| 🕒 Timestamp Converter | Unix timestamp ⇄ human-readable date, ISO 8601, relative time |
(Icons above are for readability in this document only — the app itself never uses emoji.)
- React 18 + React Router
- Tailwind CSS 3
- Vite 5 as the build tool
- vite-plugin-pwa for offline support & installability
- lucide-react for icons
- Currency rates from the free open.er-api.com API
No backend, no database — the entire app is static and can be hosted anywhere (Vercel, Netlify, GitHub Pages, your own server, etc.).
# 1. Install dependencies
npm install
# 2. Start the dev server
npm run dev
# 3. Build for production
npm run build
# 4. Preview the production build locally
npm run previewThe dev server runs at http://localhost:5173 by default.
src/
├── components/ # Shared UI: Header, Footer, ToolCard, CopyButton, etc.
├── context/ # Theme, Language and Toast providers (React Context)
├── hooks/ # useLocalStorage and other custom hooks
├── i18n/ # en.json / vi.json translation dictionaries
├── pages/ # Home and NotFound pages
├── tools/ # One component per converter tool
├── utils/ # Pure conversion logic, decoupled from UI
├── App.jsx # Routes
└── main.jsx # App entry point
public/
├── favicon.svg
├── icons/ # PWA / app icons (192, 512, maskable, apple-touch)
└── manifest is generated at build time by vite-plugin-pwa
Everything is remembered locally via localStorage, and nothing leaves your device:
- Selected theme (light / dark / system)
- Selected language (English / Vietnamese)
- Favorite tools
- Last-fetched currency exchange rates (used as an offline fallback)
- Duplicate
src/i18n/en.jsonassrc/i18n/xx.jsonand translate every value. - Register it in
src/context/LanguageContext.jsx(dictionariesobject). - Add the language code to
LanguageSwitch.jsx.
- Add its metadata (id, path, icon, category) to
src/utils/toolsRegistry.js. - Add translation keys under
tools.<id>(and any tool-specific keys) in bothen.jsonandvi.json. - Create
src/tools/<YourTool>.jsxusingToolPageLayoutas a wrapper. - Register the route in
src/App.jsx.
- Author: gnort67
- Built with the assistance of: Claude (Anthropic) — used for code generation and design guidance throughout this project.
Released under the MIT License. Free to use, modify and distribute.