About PlainUtils
๐ About PlainUtils
Welcome to PlainUtils โ a minimalist, open-source toolbox ๐งฐ for developers, tinkerers, and keyboard wizards.
No accounts. No fluff. Just fast, useful web tools.
โ๏ธ Tech Stack
- Next.js โ SSR + SSG for speed and SEO. Tools live under
/tools/
. - React โ Hooks, interactivity, component logic.
- Tailwind CSS โ Utility-first styling for responsive UI.
- Lucide Icons โ Clean SVG icon set used across the app.
- Dark Mode โ Controlled via React context, stored in
localStorage
.
// tailwind.config.js
module.exports = {
darkMode: 'class',
content: [
'./pages/**/*.{js,ts,jsx,tsx}',
'./components/**/*.{js,ts,jsx,tsx}'
],
theme: {
extend: {},
},
plugins: [],
};
๐๏ธ File Structure
Each tool lives in /pages/tools/
and is auto-routed via Next.js.
pages/
โโโ tools/
โ โโโ word-counter.js
โ โโโ json-formatter.js
โ โโโ base64.js
โโโ about.js
โโโ index.js
components/
โโโ Layout.js
โโโ DarkModeToggle.js
lib/
โโโ iconMap.js
๐งฑ Reusable Components
<Layout />
โ Provides consistent page layout with sidebar + footer.<DarkModeToggle />
โ React + CSS variables +localStorage
.
const [isDark, setIsDark] = useState(() => {
return localStorage.getItem('theme') === 'dark';
});
๐ Deployment
- Platform: Deployed via Netlify
- CI/CD: Auto-push from GitHub on commit to
main
. - Stack: Fully static โ no backend needed.
{
"scripts": {
"dev": "next dev",
"build": "next build && next export",
"start": "next start"
}
}
๐ก Philosophy
- Tools should load in under 1 second โฑ๏ธ
- No JavaScript bloat. No tracking. No nonsense.
- Mobile responsive, keyboard friendly, and built for devs.
๐ค Contribute
Want to add a tool or improve one? Star the repo on GitHub and open an issue or PR.
Or drop ideas to plainutils@pingryte.com
๐ Rate This Stack
How would you rate the PlainUtils tech stack?
๐ Rate This Stack
How would you rate the PlainUtils tech stack?