Proposed Feature
I am building the Wallendar CLI, a terminal tool designed to let users generate calendar wallpapers in batches directly from their local machines.
Currently, users need to upload images one by one via the website. This CLI will empower power users to process entire folders efficiently, keep their file structure organized, and apply consistent styling across their collections.
My Approach
I will adopt a "Thin Client" architecture for this tool:
- Local Client: Manages file discovery, user configuration, and safety backups.
- Remote Processing: Offloads the image generation to the existing
/api/create endpoint.
This approach ensures consistency with the web application and avoids the need for complex local dependencies (like node-canvas bindings).
Key Capabilities
- Interactive Wizard: A clean,
npx-style interface to guide users through file selection and configuration.
- Batch Processing: Ability to process multiple wallpapers or entire directories at once.
- Safety System: An atomic backup mechanism that moves original files to a backup location before any replacement occurs.
- Persistent Config: A
wallendar config command to save preferences (fonts, colors, etc.) as defaults.
Implementation Plan
I plan to deliver this feature across 4 focused Pull Requests:
🏗️ PR 1: Foundation & Config Manager
- Initialize the
cli/ workspace.
- Set up dependencies (
commander, conf, typescript).
- Implement the
wallendar config command for managing user defaults (~/.config/wallendar).
⚙️ PR 2: The Core Engine
- Build the File Discovery system (handling Globs and directory scanning).
- Implement the Safety Backup logic to prevent data loss.
- Develop the API Client to communicate with
wallendar.shop/api/create.
🎨 PR 3: Interactive Wizard
- Create the main
wallendar command flow using @clack/prompts.
- Integrate the Core Engine with the Config Manager.
- Add visual feedback (progress bars, spinners) for the batch operations.
📝 PR 4: Documentation & Release
- Create a dedicated
README.md for the CLI.
- Configure CI/CD workflows for NPM publishing.
Proposed Feature
I am building the Wallendar CLI, a terminal tool designed to let users generate calendar wallpapers in batches directly from their local machines.
Currently, users need to upload images one by one via the website. This CLI will empower power users to process entire folders efficiently, keep their file structure organized, and apply consistent styling across their collections.
My Approach
I will adopt a "Thin Client" architecture for this tool:
/api/createendpoint.This approach ensures consistency with the web application and avoids the need for complex local dependencies (like node-canvas bindings).
Key Capabilities
npx-style interface to guide users through file selection and configuration.wallendar configcommand to save preferences (fonts, colors, etc.) as defaults.Implementation Plan
I plan to deliver this feature across 4 focused Pull Requests:
🏗️ PR 1: Foundation & Config Manager
cli/workspace.commander,conf,typescript).wallendar configcommand for managing user defaults (~/.config/wallendar).⚙️ PR 2: The Core Engine
wallendar.shop/api/create.🎨 PR 3: Interactive Wizard
wallendarcommand flow using@clack/prompts.📝 PR 4: Documentation & Release
README.mdfor the CLI.