refactor(repo): reorganize repository structure for improved navigation and maintainability

Implement comprehensive directory reorganization to improve discoverability,
logical grouping, and separation of concerns across documentation, scripts,
and infrastructure snapshots.

Major Changes:

1. Documentation Reorganization:
   - Created start-here-docs/ for onboarding documentation
     * Moved QUICK-START.md, START-HERE.md, GIT-SETUP-GUIDE.md
     * Moved GIT-QUICK-REFERENCE.md, SCRIPT-USAGE.md, SETUP-COMPLETE.md
   - Created troubleshooting/ directory
     * Moved BUGFIX-SUMMARY.md for centralized issue resolution
   - Created mcp/ directory for Model Context Protocol configurations
     * Moved OBSIDIAN-MCP-SETUP.md to mcp/obsidian/

2. Scripts Reorganization:
   - Created scripts/crawlers-exporters/ for infrastructure collection
     * Moved collect*.sh scripts and collection documentation
     * Consolidates Proxmox homelab export tooling
   - Created scripts/fixers/ for operational repair scripts
     * Moved fix_n8n_db_*.sh scripts
     * Isolated scripts with embedded credentials (templates tracked)
   - Created scripts/qol/ for quality-of-life utilities
     * Moved git-aliases.sh and git-first-commit.sh

3. Infrastructure Snapshots:
   - Created disaster-recovery/ for active infrastructure state
     * Moved latest homelab-export-20251202-204939/ snapshot
     * Contains current VM/CT configurations and system state
   - Created archive-homelab/ for historical snapshots
     * Moved homelab-export-*.tar.gz archives
     * Preserves point-in-time backups for reference

4. Agent Definitions:
   - Created sub-agents/ directory
     * Added backend-builder.md (development agent)
     * Added lab-operator.md (infrastructure operations agent)
     * Added librarian.md (git/version control agent)
     * Added scribe.md (documentation agent)

5. Updated INDEX.md:
   - Reflects new directory structure throughout
   - Updated all file path references
   - Enhanced navigation with new sections
   - Added agent roles documentation
   - Updated quick reference commands

6. Security Improvements:
   - Updated .gitignore to match reorganized file locations
   - Corrected path for scripts/fixers/fix_n8n_db_c_locale.sh exclusion
   - Maintained template-based credential management pattern

Infrastructure State Update:
   - Latest snapshot: 2025-12-02 20:49:54
   - Removed: VM 101 (gitlab), CT 112 (Anytype)
   - Added: CT 113 (n8n)
   - Total: 9 VMs, 3 Containers

Impact:
   - Improved repository navigation and discoverability
   - Logical separation of documentation, scripts, and snapshots
   - Clearer onboarding path for new users
   - Enhanced maintainability through organized structure
   - Foundation for multi-agent workflow support

Files changed: 90 files (+935/-349)
   - 3 modified, 14 new files, 73 renames/moves

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-12-02 21:39:33 -07:00
parent eec4c4b298
commit 4f69420aaa
90 changed files with 935 additions and 349 deletions

View File

@@ -0,0 +1,74 @@
#!/bin/bash
# Git Aliases Setup for Homelab
# Run this script to add helpful git aliases to your shell
SHELL_RC=""
# Detect shell configuration file
if [ -f "$HOME/.bashrc" ]; then
SHELL_RC="$HOME/.bashrc"
elif [ -f "$HOME/.zshrc" ]; then
SHELL_RC="$HOME/.zshrc"
else
echo "Could not find .bashrc or .zshrc"
echo "Please add these aliases manually to your shell configuration"
exit 1
fi
echo "Adding git aliases to: $SHELL_RC"
echo ""
# Check if aliases already exist
if grep -q "# Homelab Git Aliases" "$SHELL_RC" 2>/dev/null; then
echo "Aliases already exist in $SHELL_RC"
echo "Remove the '# Homelab Git Aliases' section if you want to re-add them"
exit 0
fi
# Add aliases
cat >> "$SHELL_RC" << 'EOF'
# Homelab Git Aliases
# Added by git-aliases.sh
alias ghome='cd /home/jramos/homelab'
alias gs='git status'
alias ga='git add'
alias gc='git commit -m'
alias gl='git log --oneline'
alias gll='git log --oneline --graph --all'
alias gd='git diff'
alias gds='git diff --staged'
alias gco='git checkout'
alias gb='git branch'
# Homelab-specific aliases
alias homelab-status='cd /home/jramos/homelab && git status'
alias homelab-commit='cd /home/jramos/homelab && git add . && git commit'
alias homelab-log='cd /home/jramos/homelab && git log --oneline -10'
alias homelab-sync='rsync -av --exclude=.git /mnt/c/Users/fam1n/Documents/homelab/ /home/jramos/homelab/'
EOF
echo "✓ Aliases added successfully!"
echo ""
echo "Aliases added:"
echo " ghome - cd to homelab directory"
echo " gs - git status"
echo " ga - git add"
echo " gc - git commit -m"
echo " gl - git log (compact)"
echo " gll - git log (graph)"
echo " gd - git diff"
echo " gds - git diff --staged"
echo " gco - git checkout"
echo " gb - git branch"
echo ""
echo " homelab-status - Quick status check"
echo " homelab-commit - Add all and commit"
echo " homelab-log - View recent commits"
echo " homelab-sync - Sync from Windows location"
echo ""
echo "To activate now, run:"
echo " source $SHELL_RC"
echo ""
echo "Or simply open a new terminal window"

View File

@@ -0,0 +1,139 @@
#!/bin/bash
# First-time Git Setup and Initial Commit Helper
# This script helps you make your first commit to the homelab repository
set -e
# Colors for pretty output
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
echo -e "${BLUE}================================================${NC}"
echo -e "${BLUE} Homelab Git - Initial Commit Setup${NC}"
echo -e "${BLUE}================================================${NC}"
echo
# Check if we're in the right directory
if [ ! -d ".git" ]; then
echo -e "${RED}Error: Not in a git repository!${NC}"
echo "Please run this script from /home/jramos/homelab"
exit 1
fi
# Check if git user is configured
USER_NAME=$(git config --global user.name 2>/dev/null || echo "")
USER_EMAIL=$(git config --global user.email 2>/dev/null || echo "")
if [ -z "$USER_NAME" ] || [ -z "$USER_EMAIL" ]; then
echo -e "${YELLOW}Git user not configured. Let's set that up first.${NC}"
echo
# Get user name
if [ -z "$USER_NAME" ]; then
echo -e "${BLUE}Enter your name (e.g., 'John Smith'):${NC}"
read -p "> " USER_NAME
git config --global user.name "$USER_NAME"
echo -e "${GREEN}Name set to: $USER_NAME${NC}"
fi
# Get user email
if [ -z "$USER_EMAIL" ]; then
echo
echo -e "${BLUE}Enter your email (e.g., 'john@example.com'):${NC}"
read -p "> " USER_EMAIL
git config --global user.email "$USER_EMAIL"
echo -e "${GREEN}Email set to: $USER_EMAIL${NC}"
fi
echo
fi
echo -e "${GREEN}Git user configured:${NC}"
echo " Name: $(git config --global user.name)"
echo " Email: $(git config --global user.email)"
echo
# Show current status
echo -e "${YELLOW}Current repository status:${NC}"
git status
echo
# Ask about .env file
echo -e "${YELLOW}About the .env file:${NC}"
echo "The .gitignore file is configured to IGNORE your .env file"
echo "(it contains sensitive information and should not be committed)"
echo
echo "Only .env.example will be tracked in git."
echo
# Ask if ready to commit
echo -e "${BLUE}Ready to create your first commit?${NC}"
echo "This will add all files (except those in .gitignore) to version control."
echo
read -p "Continue? (y/n): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo -e "${YELLOW}Commit cancelled. No changes made.${NC}"
exit 0
fi
# Add all files
echo
echo -e "${YELLOW}Step 1: Adding files to staging area...${NC}"
git add .
# Show what will be committed
echo
echo -e "${YELLOW}Step 2: Files to be committed:${NC}"
git status
# Create the commit
echo
echo -e "${YELLOW}Step 3: Creating initial commit...${NC}"
git commit -m "Initial commit: Homelab infrastructure repository
This commit includes:
- Proxmox configuration collection scripts
- Environment configuration templates
- Comprehensive documentation
- Git ignore patterns for sensitive data
Infrastructure: Proxmox VE 8.3.3
Node: serviceslab
VMs: 11 virtual machines (docker-hub, gitlab, dev, ansible, CML, web servers, db)
Containers: 3 LXC containers (nginx, netbox, anytype)
"
echo
echo -e "${GREEN}================================================${NC}"
echo -e "${GREEN} Success! Your homelab is now under version control${NC}"
echo -e "${GREEN}================================================${NC}"
echo
echo "What you can do now:"
echo
echo -e "${BLUE}View commit history:${NC}"
echo " git log"
echo
echo -e "${BLUE}View changes since last commit:${NC}"
echo " git status"
echo " git diff"
echo
echo -e "${BLUE}Make changes and commit them:${NC}"
echo " # Make your changes to files"
echo " git add <file> # Stage specific file"
echo " git add . # Stage all changes"
echo " git commit -m \"Description\" # Commit with message"
echo
echo -e "${BLUE}View file history:${NC}"
echo " git log --oneline"
echo " git log --graph --oneline --all"
echo
echo -e "${YELLOW}Repository location:${NC}"
echo " Linux: /home/jramos/homelab"
echo " Windows: \\\\wsl\$\\Ubuntu\\home\\jramos\\homelab"
echo
echo -e "${GREEN}Happy homelabbing!${NC}"
echo