Skip to content

a Python CLI tool called "shelly" I created to help me organize my dev life. This will be particularly useful for managing all the GitHub repositories I work with.

License

Notifications You must be signed in to change notification settings

Domains18/shelly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

43 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🐚 Shelly CLI

A powerful command-line tool for organizing, managing, and working with multiple Git repositories. Shelly helps developers efficiently manage their codebase collections with intelligent categorization, bulk operations, and seamless integrations.

Version Python License

✨ Features

Current Features

  • 🎯 Smart Repository Cloning - Clone repositories with automatic categorization
  • πŸ“ Category-based Organization - Organize repos by work, personal, learning, etc.
  • πŸ” Repository Listing - View all repositories grouped by category
  • βš™οΈ Interactive Configuration - Easy setup wizard for preferences
  • πŸš€ Editor Integration - Auto-open repositories in your preferred editor
  • πŸ“Š Repository Caching - Fast access to repository metadata
  • πŸ“ˆ Git Status Dashboard - View status of all repositories at once
  • πŸ”„ Bulk Git Operations - Sync, pull, or check status across multiple repos
  • πŸ—οΈ Project Initialization - Create new projects with opinionated structures

Coming Soon

  • 🏷️ Project Type Detection - Auto-detect React, Python, Rust, etc. projects
  • 🌐 GitHub/GitLab Integration - Repository metadata, search, and CLI tool integration
  • πŸ”§ CI/CD Pipeline Awareness - Show build status and deployment information
  • πŸ“¦ Package Manager Integration - Dependency scanning and updates

πŸš€ Quick Start

Installation

# Clone and install in development mode
git clone https://github.com/Domains18/shelly.git
cd shelly
pip install -e .

Initial Setup

# Run the interactive setup wizard
shelly config --setup

This will configure:

  • Base directory for repositories
  • Organization method (category/platform/flat)
  • Preferred editor
  • Default categories

Basic Usage

# Clone a repository (will prompt for category)
shelly clone https://github.com/facebook/react
# or use shorthand
shelly --clone https://github.com/facebook/react

# Initialize a new project
shelly init my-api --language typescript --framework nestjs --orm prisma
# or use shorthand
shelly --init my-project

# List all repositories
shelly list

# List repositories in specific category
shelly list --category work

# Git operations across repositories
shelly git sync --category work
shelly status --detailed

# Open a repository in your editor
shelly open react

# View configuration
shelly config --list

πŸ—οΈ Project Initialization

Shelly can create new projects with opinionated directory structures and configurations for various languages and frameworks.

Supported Languages & Frameworks

Language Frameworks ORMs/Databases
TypeScript NestJS, Express, Fastify, Koa Prisma, TypeORM, Sequelize, Mongoose, Drizzle
JavaScript Express, Fastify, Koa, React, Vue, Svelte Prisma, Sequelize, Mongoose, Knex
Python FastAPI, Django, Flask, Quart SQLAlchemy, Django ORM, Tortoise ORM, Peewee
Go Gin, Echo, Fiber, Chi GORM, Ent, SQLX
Rust Axum, Warp, Actix-web, Rocket Diesel, SQLX, Sea-ORM
Java Spring Boot, Quarkus, Micronaut JPA, Hibernate, MyBatis

Project Types

  • API - REST API with controllers, services, and models
  • Microservice - Microservice with event handling and DTOs
  • Monolith - Monolithic application structure
  • GraphQL - GraphQL API setup
  • CLI - Command line tool structure
  • Library - Library/package template
  • Web App - Full-stack web application

Examples

# Interactive mode
shelly init my-project

# TypeScript NestJS API with Prisma
shelly init backend-api --language typescript --framework nestjs --orm prisma --type api

# Go microservice with Gin and GORM
shelly init user-service --language go --framework gin --orm gorm --type microservice

# Python FastAPI with SQLAlchemy
shelly init data-api --language python --framework fastapi --orm sqlalchemy --type api

# Shorthand syntax
shelly --init my-new-project

What Gets Created

For a TypeScript NestJS API, Shelly creates:

my-api/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ modules/         # Feature modules
β”‚   β”œβ”€β”€ common/          # Shared utilities
β”‚   β”‚   β”œβ”€β”€ decorators/
β”‚   β”‚   β”œβ”€β”€ filters/
β”‚   β”‚   β”œβ”€β”€ guards/
β”‚   β”‚   β”œβ”€β”€ interceptors/
β”‚   β”‚   └── pipes/
β”‚   β”œβ”€β”€ config/          # Configuration
β”‚   β”œβ”€β”€ controllers/     # API controllers
β”‚   β”œβ”€β”€ services/        # Business logic
β”‚   β”œβ”€β”€ entities/        # Database entities
β”‚   └── repositories/    # Data access layer
β”œβ”€β”€ test/                # Test files
β”‚   β”œβ”€β”€ unit/
β”‚   β”œβ”€β”€ integration/
β”‚   └── e2e/
β”œβ”€β”€ prisma/              # Database schema (if Prisma selected)
β”œβ”€β”€ package.json         # Dependencies and scripts
β”œβ”€β”€ tsconfig.json        # TypeScript configuration
β”œβ”€β”€ .gitignore           # Git ignore rules
└── README.md            # Project documentation

πŸ“‹ Commands

Core Commands

Command Description Example
clone <url> Clone repository with category selection shelly clone https://github.com/user/repo
init <name> Initialize new project with opinionated structure shelly init my-api --language typescript --framework nestjs
list List all managed repositories shelly list --category work
open <repo> Open repository in preferred editor shelly open my-project
config Manage configuration settings shelly config --setup
status Show git status across repositories shelly status --detailed
git sync Synchronize repositories with remotes shelly git sync --category work
roadmap View development roadmap shelly roadmap --next

Shorthand Options

Option Equivalent Command Description
--clone <url> clone <url> Quick clone syntax
--init <name> init <name> Quick project initialization
--list list Quick list repositories
--status status Quick status check
--config-setup config --setup Quick setup configuration

πŸ—οΈ Configuration

Shelly stores configuration in ~/.shelly/config.json:

{
  "auto_open_editor": true,
  "base_dir": "/home/user/Documents/github",
  "categories": [
    "work",
    "personal", 
    "learning",
    "opensource",
    "misc"
  ],
  "organization_method": "category",
  "preferred_editor": "vscode"
}

Supported Editors

  • Visual Studio Code (vscode)
  • Cursor (cursor)
  • WebStorm (webstorm)
  • IntelliJ IDEA (intellij)
  • Sublime Text (sublime)
  • Atom (atom)
  • Vim/Neovim (vim/nvim)

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Running Tests

# Install development dependencies
pip install -e ".[dev]"

# Run tests
pytest tests/

# Run with coverage
pytest --cov=shelly tests/

πŸ“ Usage Examples

Organizing Work Projects

# Setup work category
shelly config --setup

# Clone work repositories
shelly clone https://github.com/company/backend-api
shelly clone https://github.com/company/frontend-app
shelly clone https://github.com/company/mobile-app

# List work projects
shelly list --category work

# Open entire work environment
shelly open backend-api

Learning and Experimentation

# Clone learning resources
shelly --clone https://github.com/microsoft/TypeScript
shelly --clone https://github.com/rust-lang/book

# Quick access to learning materials
shelly list --category learning
shelly open TypeScript

Contributing to Open Source

# Clone and categorize open source projects
shelly clone https://github.com/facebook/react
# Select "opensource" category

# Track your contributions
shelly list --category opensource

πŸ†˜ Support

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Inspired by the need for better repository management in modern development workflows
  • Built with Click and Rich
  • Special thanks to the open source community for inspiration and feedback

Made with ❀️ for developers who manage multiple repositories

About

a Python CLI tool called "shelly" I created to help me organize my dev life. This will be particularly useful for managing all the GitHub repositories I work with.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published