[{"data":1,"prerenderedAt":112},["ShallowReactive",2],{"$f2ipyg6gshbulq":3},{"site":4,"app":16,"alternatives":66,"compose":107,"log":108,"changelog":109},{"hourly_rate_usd":5,"break_even_window_mo":6,"reference_env":7,"attribution":8},20,18,"Fresh Debian 12, Docker + Compose preinstalled, 2 GB RAM \u002F 2 vCPU ($5-class VPS)",{"caniselfhostit":9},{"name":10,"url":11,"repo":12,"license":13,"author":14,"note":15},"caniselfhostit.com","https:\u002F\u002Fcaniselfhostit.com","https:\u002F\u002Fgithub.com\u002Fcaniselfhostit\u002Fcaniselfhostit","MIT","Jashanpreet Singh","Capability data (app → replacement pairings, pricing snapshots) seeded from this dataset. They answer 'can you run it, and how' — go there for guided installs.",{"id":17,"name":18,"domain":19,"category":20,"price_usd_mo":21,"price_plan":22,"price_unit":23,"price_source":24,"price_checked":25,"links":26,"jobs":28,"verdict":32,"alternatives":33,"provenance":36,"verdict_reason":39,"what_you_lose":40,"economics":42,"hardware_tier":46,"verified":47,"compose":55,"derived":58},"doodle","Doodle","doodle.com","comms-scheduling",10.95,"Pro","per-seat","https:\u002F\u002Fdoodle.com\u002Fen\u002Fpremium","2026-08-07",{"caniselfhostit":27},"https:\u002F\u002Fcaniselfhostit.com\u002Fdoodle",[29,30,31],"group scheduling polls","availability collection","calendar integration","YES",[34,35],"rallly","calcom",{"capability_seed":37,"decision_layer":38},"caniselfhostit","original","Rallly does the one Doodle job — find a time that works for everyone — with a clean UI, no ads around your poll, and no $10.95\u002Fmo for what is fundamentally a form with dates on it.",[41],"Doodle's booking-page features beyond group polls (Cal.com covers those, separately verified)",{"vps_share_usd_mo":43,"storage_usd_mo":44,"maint_min_mo":45},0.3,0,10,"pi",{"by":48,"at":49,"protocol":50,"setup_min":51,"assistant":52,"evidence":53,"what_broke":56},"zernonia","2026-08-10","v1",12,"claude-code",[54,55],"logs\u002Fdoodle.md","compose\u002Fdoodle-rallly.yml",[57],"Boot to healthy measured at 64s on the 2GB reference env",{"hourly_rate_usd":5,"self_host_cost_usd_mo":59,"net_saving_usd_mo":60,"setup_cost_usd":61,"break_even_months":62,"break_even_date":63,"markup_index":64,"primary_abandoned":65,"verdict_stale":65},3.63,7.32,4,0.55,"2026-08-27",3.01,false,[67,89],{"id":34,"name":68,"tagline":69,"repo":70,"site":71,"license":72,"category":20,"resources":73,"provenance":78,"metrics":79},"Rallly","Send a group a link, let them tick the times that work, and pick the winner, with no cap on how many people answer.","lukevella\u002Frallly","https:\u002F\u002Frallly.co","AGPL-3.0",{"ram_min_mb":74,"disk_gb":75,"arm64":76,"containers":77,"external_db":76},2048,5,true,2,{"capability_seed":37,"decision_layer":38},{"id":34,"stars":80,"last_commit":81,"latest_release":82,"docker_pulls":86,"open_issues":87,"fetched_at":88},5209,"2026-08-10T22:19:11Z",{"tag":83,"published_at":84,"url":85},"v4.12.2","2026-08-07T11:19:12Z","https:\u002F\u002Fgithub.com\u002Flukevella\u002Frallly\u002Freleases\u002Ftag\u002Fv4.12.2",null,1,"2026-08-11T03:55:30.702Z",{"id":35,"name":90,"tagline":91,"repo":92,"site":93,"license":72,"category":20,"resources":94,"provenance":97,"metrics":98},"Cal.com","Send someone a link, they pick a slot, the invite lands in both calendars, and none of it runs on a domain you are renting.","calcom\u002Fcal.diy","https:\u002F\u002Fcal.com",{"ram_min_mb":95,"disk_gb":96,"arm64":76,"containers":77,"external_db":76},4096,15,{"capability_seed":37,"decision_layer":38},{"id":35,"stars":99,"last_commit":100,"latest_release":101,"docker_pulls":86,"open_issues":105,"fetched_at":106},47409,"2026-08-08T17:13:42Z",{"tag":102,"published_at":103,"url":104},"v6.2.0","2026-03-01T23:49:01Z","https:\u002F\u002Fgithub.com\u002Fcalcom\u002Fcal.diy\u002Freleases\u002Ftag\u002Fv6.2.0",1390,"2026-08-11T03:55:17.695Z","# Rallly — meeting polls; node app + postgres. Sidecar probe (slim image, no curl).\nservices:\n  rallly:\n    image: lukevella\u002Frallly:latest\n    container_name: rallly\n    restart: unless-stopped\n    depends_on:\n      rallly-db:\n        condition: service_healthy\n    environment:\n      DATABASE_URL: postgres:\u002F\u002Frallly:rallly@rallly-db:5432\u002Frallly\n      SECRET_PASSWORD: change-me-please-0123456789abcdef\n      NEXT_PUBLIC_BASE_URL: http:\u002F\u002Flocalhost:3004\n    ports:\n      - \"3004:3000\"\n\n  probe:\n    image: busybox:stable\n    network_mode: \"service:rallly\"\n    depends_on:\n      - rallly\n    command: sh -c 'while true; do sleep 30; done'\n    healthcheck:\n      test: [\"CMD-SHELL\", \"nc -z localhost 3000 || exit 1\"]\n      interval: 5s\n      timeout: 5s\n      retries: 60\n      start_period: 25s\n  rallly-db:\n    image: postgres:16-alpine\n    restart: unless-stopped\n    environment:\n      POSTGRES_USER: rallly\n      POSTGRES_PASSWORD: rallly\n      POSTGRES_DB: rallly\n    volumes:\n      - rallly-db:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n    healthcheck:\n      test: [\"CMD-SHELL\", \"pg_isready -U rallly\"]\n      interval: 5s\n      timeout: 5s\n      retries: 12\nvolumes:\n  rallly-db:\n","# Doodle — verdict log\n\n- **Date:** 2026-08-10\n- **Verdict:** YES — worth it\n- **Protocol:** v1 (2GB reference env, Docker preinstalled, AI assistant: claude-code)\n\n## Setup evidence\n\n- Compose: `compose\u002Fdoodle-rallly.yml`\n- Boot to healthy: **64s** measured this session\n- Setup time recorded: 12 min (boot + configuration to first working workflow)\n\n## What broke \u002F notes\n\n- Boot to healthy measured at 64s on the 2GB reference env\n\n## The call\n\nRallly does the one Doodle job — find a time that works for everyone — with a clean UI, no ads around your poll, and no $10.95\u002Fmo for what is fundamentally a form with dates on it.\n",[110],{"date":49,"app":17,"from":86,"to":32,"reason":111},"Initial verdict: Rallly does the one Doodle job — find a time that works for everyone — with a clean UI, no ads around your pol.",1786459421768]