Skip to content

Feature: Wallendar CLI 🛠️ #106

Description

@UtkarshTheDev

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:

  1. Local Client: Manages file discovery, user configuration, and safety backups.
  2. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions