Asia/Dhaka
Projects

Installora – Developer Environment Setup in Minutes

image
April 1, 2025
Installora is an open-source web application that solves one of the most time-consuming rituals in a developer's life: setting up a new machine. Instead of spending 5 hours clicking through installer wizards one by one, a developer browses Installora's curated catalog of 500+ packages, checks off the apps they need, and gets a single command that handles everything automatically through native package managers.
"One command installs everything. Skip the installer clicking and get your perfect development environment in just 5 minutes."
The app is completely transparent — it doesn't run anything on your machine, it simply generates the exact shell script using the official package managers (winget on Windows, brew on macOS, apt on Linux), which you paste into your own terminal. Source code is open on GitHub under the MIT License.
  • 500+ Package Catalog: A curated library of developer tools organized across 8 categories (Browsers, Development Tools, Communication, Media, Utilities, and more) — all sourced from official publishers via Microsoft's Winget, Apple's Homebrew, and Linux repositories.
  • Cross-Platform Script Generation: Select your OS (Windows / macOS / Linux) and the app instantly generates the correct native script — PowerShell for Windows, Bash for macOS and Linux — with the exact package identifiers for each manager.
  • One-Click Copy: The generated script is displayed in a styled terminal preview window and copied to clipboard with a single button. Paste it into any terminal and watch everything install automatically.
  • AI-Assisted Selection: Use AI to describe your role or project type and get a smart package recommendation. A backend developer gets Node.js, Docker, and Postman. A designer gets Figma, Chrome, and VS Code.
  • Shareable Presets: Selections are encoded directly into URL parameters so you can share your perfect setup with your whole team via a single link. Everyone gets the same environment, instantly.
  • Save & Restore: Create named presets for your team configuration. Restore your complete environment on any new machine without remembering what you had before.
  • Blazing Fast, No Server Required: All package data lives in static JSON files. The entire script generation happens client-side with zero server roundtrips — making it instantaneous even on slow connections.
Installora's core mechanic is straightforward and intentionally transparent:
  1. Browse — Package data (packages.json, mac-packages.json, linux-packages.json) is maintained as static JSON files, making the catalog fast to load and trivially extensible.
  2. Select — A Zustand store tracks the selected OS and the user's chosen packages reactively. Selections persist in the URL via encoded query parameters.
  3. Generate — When the user clicks "Generate", utility functions in lib/utils.ts iterate over the selected package IDs and format them as native package manager commands — winget install --id X for Windows, brew install X for macOS, apt install X for Linux.
  4. Install — The user copies the output and pastes it into their own terminal. Installora never executes code — it only generates it.
TechnologyRole
Next.js 15 (App Router)Framework and routing
React 19UI component layer
TypeScript 5End-to-end type safety
Tailwind CSS v4Utility-first styling with CSS-first config
Zustand v5Lightweight, reactive global state for OS selection and package selections
Lucide ReactIcon library
VercelHosting and CI/CD
Two clean Zustand stores keep the app reactive and simple:
  • store/os.ts — Tracks the selected operating system (Windows / macOS / Linux), which drives which package catalog is shown and which script format is generated.
  • store/selection.ts — Tracks all user-selected package IDs as a Set. Adding and removing packages updates the generated command in real time with no re-renders of the full list.
The usePresetFromUrl hook reads the URL search params on mount and pre-populates the selection store, enabling shareable links. Sharing a preset is as simple as copying the browser URL — no accounts, no database, no server round-trip. Maintaining a catalog of 500+ packages across three package managers means package IDs can change, apps can be renamed, or official Winget/Homebrew IDs can diverge from community expectations. I designed the data layer as flat, human-readable JSON so package updates are a simple PR, and the schema validates that every entry has a name, ID, category, and description. Each package manager has its own syntax, quoting rules, and behavior for silent installs. Winget uses --silent and --accept-package-agreements flags. Homebrew uses brew install for CLI tools and brew install --cask for GUI apps. APT needs sudo apt install -y. Handling these correctly, and generating scripts that actually work silently without prompting the user, required testing each format carefully. Encoding the full selection state into URL parameters required careful thought about URL length limits (browsers cap at ~2,000 characters) and character encoding. I implemented a compact encoding scheme using shortened package IDs and encodeURIComponent, allowing selections of 20–30+ packages to fit comfortably within URL limits. Installora is a production-ready open-source developer tool that genuinely saves hours of repetitive setup time. The combination of a clean, fast UI, transparent script generation, AI-assisted selection, and shareable presets makes it practical for individual developers and entire engineering teams. The MIT-licensed codebase is open for contributions, and the static data architecture makes it trivial for the community to add new packages.
Hey! Got questions?Ask me anything 👋