Portfolio: add filtering, URL sharing, and improved tag input
- Add category filters with dynamic counts that reduce as filters applied - Add ?filter[category]=value URL params for filterable links - Add ?img= timestamp param that bypasses filters to show specific image - Update URL when opening/navigating/closing modal for shareable links - Backend: add /api/portfolio/filters endpoint with filter logic - Backend: add timestamp lookup fallback for GetImage endpoint Frontend: - Portfolio page: filter dropdowns, keyboard nav, mobile improvements - ImageUpload: live tag suggestions from API, arrow/Tab navigation, confirmation modal before upload, mobile-optimized touch targets - Add scrollbar-hide utility and fix filter dropdown overflow - Move Clear all button, add vertical separator on desktop
This commit is contained in:
+27
-7
@@ -43,11 +43,10 @@ docker compose up postgres -d > /dev/null 2>&1
|
||||
log_success "PostgreSQL reset complete"
|
||||
sleep 3
|
||||
|
||||
# --- 3b. Rustfs Reset (wipes data each run) ---
|
||||
log_step "Resetting Rustfs (S3-compatible storage)..."
|
||||
docker compose down -v rustfs > /dev/null 2>&1
|
||||
docker compose up rustfs -d > /dev/null 2>&1
|
||||
log_success "Rustfs reset complete"
|
||||
# --- 3b. Rustfs (don't wipe data, just restart) ---
|
||||
log_step "Restarting Rustfs (S3-compatible storage)..."
|
||||
docker compose restart rustfs > /dev/null 2>&1
|
||||
log_success "Rustfs restarted"
|
||||
sleep 2
|
||||
|
||||
# --- 4. Tmux Session Setup ---
|
||||
@@ -59,21 +58,42 @@ fi
|
||||
log_step "Starting tmux session '$SESSION_NAME'..."
|
||||
tmux new-session -d -s $SESSION_NAME -n "Workspace"
|
||||
|
||||
# Pass env vars to tmux session (must be after session creation)
|
||||
tmux set-environment -t $SESSION_NAME POSTGRES_USER "$POSTGRES_USER"
|
||||
tmux set-environment -t $SESSION_NAME POSTGRES_PASSWORD "$POSTGRES_PASSWORD"
|
||||
tmux set-environment -t $SESSION_NAME POSTGRES_DB "$POSTGRES_DB"
|
||||
tmux set-environment -t $SESSION_NAME POSTGRES_HOST "$POSTGRES_HOST"
|
||||
tmux set-environment -t $SESSION_NAME POSTGRES_PORT "$POSTGRES_PORT"
|
||||
tmux set-environment -t $SESSION_NAME JWT_SECRET_KEY "$JWT_SECRET_KEY"
|
||||
tmux set-environment -t $SESSION_NAME S3_ENDPOINT "$S3_ENDPOINT"
|
||||
tmux set-environment -t $SESSION_NAME S3_PUBLIC_URL "$S3_PUBLIC_URL"
|
||||
tmux set-environment -t $SESSION_NAME S3_ACCESS_KEY "$S3_ACCESS_KEY"
|
||||
tmux set-environment -t $SESSION_NAME S3_SECRET_KEY "$S3_SECRET_KEY"
|
||||
tmux set-environment -t $SESSION_NAME S3_BUCKET "$S3_BUCKET"
|
||||
tmux set-environment -t $SESSION_NAME AWS_REGION "$AWS_REGION"
|
||||
tmux set-environment -t $SESSION_NAME VITE_BACKEND_URL "$VITE_BACKEND_URL"
|
||||
|
||||
# Pane 0: Database
|
||||
# Start interactive shell only. Stats will be shown after seeding.
|
||||
tmux send-keys -t $SESSION_NAME "docker exec -it postgres psql -U myuser -d mydb" Enter
|
||||
tmux select-pane -t $SESSION_NAME:0.0 -T "DB"
|
||||
|
||||
# Pane 1: Backend (Split Horizontally)
|
||||
# Source .env to ensure all env vars are available to Go
|
||||
tmux split-window -v -t $SESSION_NAME
|
||||
tmux send-keys -t $SESSION_NAME "cd backend && go run -tags dev ./main.go" Enter
|
||||
tmux send-keys -t $SESSION_NAME "set -a; source .env > /dev/null 2>&1; cd backend && go run -tags dev ./main.go" Enter
|
||||
tmux select-pane -t $SESSION_NAME:0.1 -T "Backend"
|
||||
|
||||
# Pane 2: Frontend (Split Vertically from Backend)
|
||||
tmux split-window -h -t $SESSION_NAME:0.1
|
||||
tmux send-keys -t $SESSION_NAME "cd frontend && npm run dev -- --host" Enter
|
||||
tmux send-keys -t $SESSION_NAME "set -a; source .env > /dev/null 2>&1; cd frontend && npm run dev -- --host" Enter
|
||||
tmux select-pane -t $SESSION_NAME:0.2 -T "Frontend"
|
||||
|
||||
# Pane 3: Rustfs (S3-compatible storage) - Split from Frontend
|
||||
tmux split-window -v -t $SESSION_NAME:0.2
|
||||
tmux send-keys -t $SESSION_NAME "docker logs -f rustfs" Enter
|
||||
tmux select-pane -t $SESSION_NAME:0.3 -T "Rustfs"
|
||||
|
||||
# Layout configuration
|
||||
tmux select-layout -t $SESSION_NAME even-vertical
|
||||
tmux select-pane -t $SESSION_NAME:0.0
|
||||
|
||||
Reference in New Issue
Block a user