Add TickTick and Obsidian integrations to wizard

TickTick integration:
- Creates setup tasks in TickTick Inbox when selected
- Tasks: Set up dev env, Review brief, Write first test, Implement MVP
- Uses existing PA Python CLI integration

Obsidian integration:
- Creates project note in ~/Notes/Projects/
- Includes quick links, project brief, tech stack
- Auto-opens note in Obsidian after creation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Hutson Cappelmann
2026-01-26 17:23:37 -05:00
parent 35ee914058
commit 295b6703b2

View File

@@ -218,6 +218,28 @@ LICENSE=$(gum choose \
"None" \
--header "License type")
#######################################
# TickTick Integration
#######################################
echo ""
gum style --foreground 245 "Create setup tasks in TickTick?"
TICKTICK_TASKS=$(gum choose \
"Yes - Create project setup tasks" \
"No" \
--header "TickTick integration")
#######################################
# Open in Obsidian
#######################################
echo ""
gum style --foreground 245 "Create project note in Obsidian?"
OBSIDIAN_NOTE=$(gum choose \
"Yes - Create note in ~/Notes/Projects/" \
"No" \
--header "Obsidian integration")
#######################################
# Confirm
#######################################
@@ -236,7 +258,8 @@ Git: $GIT_INIT | Remote: $GIT_REMOTE
Syncthing: $SYNCTHING_OPT
Claude-mem: $CLAUDE_MEM
Database: $DATABASE
License: $LICENSE"
License: $LICENSE
TickTick: $TICKTICK_TASKS | Obsidian: $OBSIDIAN_NOTE"
if [ -n "$SUBDOMAIN" ]; then
SUMMARY="$SUMMARY
@@ -1008,6 +1031,92 @@ if [[ "$GIT_REMOTE" == *"GitHub"* ]]; then
fi
fi
#######################################
# TickTick Tasks
#######################################
if [[ "$TICKTICK_TASKS" == *"Yes"* ]]; then
PA_DIR="$HOME/Projects/personal-assistant"
if [ -d "$PA_DIR" ] && [ -f "$PA_DIR/venv/bin/python" ]; then
gum spin --spinner dot --title "Creating TickTick tasks..." -- sleep 0.5
# Create project setup tasks
(
cd "$PA_DIR"
source venv/bin/activate
# Create tasks for the new project
python -m src.integrations.ticktick.cli add "[$PROJECT_NAME] Set up development environment" --project "Inbox" 2>/dev/null || true
python -m src.integrations.ticktick.cli add "[$PROJECT_NAME] Review PROJECT_BRIEF.md and refine requirements" --project "Inbox" 2>/dev/null || true
python -m src.integrations.ticktick.cli add "[$PROJECT_NAME] Write first test" --project "Inbox" 2>/dev/null || true
python -m src.integrations.ticktick.cli add "[$PROJECT_NAME] Implement MVP" --project "Inbox" 2>/dev/null || true
) 2>/dev/null
TICKTICK_CREATED="Yes"
else
TICKTICK_CREATED="(PA not found)"
fi
fi
#######################################
# Obsidian Note
#######################################
OBSIDIAN_NOTE_PATH=""
if [[ "$OBSIDIAN_NOTE" == *"Yes"* ]]; then
gum spin --spinner dot --title "Creating Obsidian note..." -- sleep 0.3
NOTES_DIR="$HOME/Notes/Projects"
mkdir -p "$NOTES_DIR"
OBSIDIAN_NOTE_PATH="$NOTES_DIR/$PROJECT_NAME.md"
cat > "$OBSIDIAN_NOTE_PATH" << OBSIDIAN_EOF
# $PROJECT_NAME
$PROJECT_DESC
## Quick Links
- **Project**: [Open in Finder](file://$PROJECT_PATH)
- **CLAUDE.md**: [Open](file://$PROJECT_PATH/CLAUDE.md)
- **Project Brief**: [Open](file://$PROJECT_PATH/docs/PROJECT_BRIEF.md)
OBSIDIAN_EOF
# Add repo links if available
if [ -n "$GITEA_URL" ] && [ "$GITEA_URL" != "(failed)" ]; then
echo "- **Gitea**: [$PROJECT_NAME]($GITEA_URL)" >> "$OBSIDIAN_NOTE_PATH"
fi
if [ -n "$GITHUB_URL" ] && [[ "$GITHUB_URL" != *"not installed"* ]]; then
echo "- **GitHub**: [$PROJECT_NAME]($GITHUB_URL)" >> "$OBSIDIAN_NOTE_PATH"
fi
if [ -n "$SUBDOMAIN" ]; then
echo "- **URL**: https://$SUBDOMAIN" >> "$OBSIDIAN_NOTE_PATH"
fi
cat >> "$OBSIDIAN_NOTE_PATH" << OBSIDIAN_EOF2
## Project Brief
$PROJECT_BRIEF
## Tech Stack
- **Type**: $PROJECT_TYPE
- **Database**: $DATABASE
- **License**: $LICENSE
## Notes
<!-- Add your project notes here -->
---
*Created $(date '+%Y-%m-%d') via newproject wizard*
OBSIDIAN_EOF2
# Open in Obsidian
open "obsidian://open?vault=Notes&file=Projects/$PROJECT_NAME" 2>/dev/null || true
fi
#######################################
# Success!
#######################################
@@ -1045,4 +1154,14 @@ if [ -n "$SUBDOMAIN" ]; then
echo " Subdomain: https://$SUBDOMAIN (configure Traefik)"
fi
if [ -n "$TICKTICK_CREATED" ] && [ "$TICKTICK_CREATED" = "Yes" ]; then
echo ""
echo " ✅ TickTick tasks created (check Inbox)"
fi
if [ -n "$OBSIDIAN_NOTE_PATH" ]; then
echo ""
echo " 📝 Obsidian note: ~/Notes/Projects/$PROJECT_NAME.md"
fi
echo ""