Palmframe: The 100-Day Challenge
Starting point: Absolute zero. No code, no landing page, no GitHub repo, no domain, no users. Nothing.
Location: France (northern).
Start date: February 26, 2026 (Day 0 = today).
End date: June 6, 2026 (Day 100).
Builder: Solo. No co-founder. No employees. Just you + AI + the internet.
2. 1. Non-Negotiable Rules
These rules do not bend. If you break one, restart the day count.
- Ship something every day. A commit, a DM, a post, a bug fix, a feature. Something visible. No “research days.” Research is what you do while building.
- Write your daily log. Every night, write what you did, what you learned, and what’s next. In your journal (journal/2026/). Public. No skipping.
- Send DMs every day starting Day 11. Minimum 5/day. Non-negotiable. DMs are your distribution channel.
- Post publicly at least 3x/week. LinkedIn, Twitter, Reddit, HN — anywhere. Build in public. The product and the audience grow together.
- Do not rewrite from scratch. If something works, improve it. Do not start over. Ugly code that ships beats beautiful code that doesn’t exist.
- Do not spend more than 1 day on any single feature. If it takes longer, split it. Ship the smallest version today, improve it tomorrow.
- Every Sunday: weekly review. Numbers, learnings, plan for next week. Written. Public.
3. 2. The Daily Ritual
Same structure every day. Build the habit. The structure is the discipline.
| Time | Activity | Duration |
|---|---|---|
| Morning | Build. Code, design, fix, improve. Focused work. No Slack, no LinkedIn, no email. | 3–4 hours |
| Midday | Distribute. Send DMs. Post on LinkedIn/Twitter. Reply to comments. Engage. | 1–2 hours |
| Afternoon | Build more or handle feedback. Respond to users. Fix reported bugs. Ship fixes same day. | 2–3 hours |
| Evening | Log. Write journal entry. Update tracking spreadsheet. Plan tomorrow. | 30 min |
Total: ~7–9 hours/day. Not 16. Sustainable pace for 100 days. If you burn out on day 30, the challenge fails.
4. 3. What to Track Every Day
Create a simple spreadsheet (or a table in your journal). One row per day. These columns:
| Column | What | Why |
|---|---|---|
| Day # | 1, 2, 3, … 100 | Progress marker |
| Date | YYYY-MM-DD | Calendar reference |
| What I shipped | Feature, fix, page, post — something concrete | Accountability |
| DMs sent | Number of DMs sent (EN + FR) | Distribution metric |
| DM replies received | Number of replies | Engagement signal |
| Posts published | Number of public posts (LinkedIn, Twitter, Reddit, etc.) | Content cadence |
| New signups | Cloud signups (once live) | Growth metric |
| GitHub stars | Cumulative total | OSS traction |
| Paying customers | Cumulative total | Revenue metric |
| MRR (€) | Monthly recurring revenue | The number that matters |
| Feedback received | Notable feedback quotes or themes | Product direction |
| Mood (1–5) | How you felt today | Burnout detection |
| Blocker | What slowed you down, if anything | Pattern recognition |
5. Phase 0: Foundation (Days 1–3)
Feb 27 – Mar 1, 2026
Goal: Set up everything you need before writing a single line of product code. Do not skip this. Every shortcut here costs you days later.
Day 1 (Feb 27): Infrastructure
- Buy/configure palmframe.com domain (if not done)
- Create GitHub repository (public, AGPLv3 license)
- Set up project structure (choose your stack — Bun + SQLite recommended for speed)
- Set up a VPS or Vercel for hosting the cloud version
- Create accounts: Stripe (for payments later), Resend or SMTP (for transactional emails)
- Write CLAUDE.md for the project (so AI assistants understand the codebase)
- Ship: Empty repo with README, license, and project structure on GitHub
- Post: LinkedIn post — “Day 1. I’m starting a 100-day challenge to build an open-source startup dashboard. Follow along.”
- Journal: Write today’s entry
Day 2 (Feb 28): Landing Page
- Build and deploy a one-page landing page at palmframe.com
- Use the landing page copy from the copywriting arsenal
- Include: headline, problem, solution, features, pricing (coming soon), email signup for early access
- No framework. Plain HTML or minimal template. Ship ugly, iterate later.
- Add email collection (Buttondown, ConvertKit free tier, or simple API endpoint you build yourself)
- Ship: Live landing page with email collection
- Post: Share landing page screenshot on Twitter
- Journal: Write today’s entry
Day 3 (Mar 1): Plumbing
- Set up CI/CD (GitHub Actions: lint, test, build, deploy on push)
- Set up database schema (events table, projects table, API keys table)
- Set up auth (simple API key system — not OAuth, not magic links, just API keys for now)
- Docker Compose file (so self-hosting works from day one)
- Ship: Deployable skeleton that boots up, connects to DB, and returns 200 on /health
- Journal: Write today’s entry
6. Phase 1: Build the MVP (Days 4–10)
Mar 2 – Mar 8, 2026
Goal: A functional product that receives events via API and displays them in real-time. Ugly is fine. Broken edges are fine. It must work.
Day 4 (Mar 2): Events API
- Build
POST /v1/eventsendpoint - Accept: project, channel, event name, description, icon, tags (all optional except event name)
- Validate API key
- Store in database
- Return 201 with event ID
- Ship: Working API that accepts and stores events
- Test:
curl -X POSTsuccessfully creates events
Day 5 (Mar 3): Dashboard v1
- Build event feed page (newest first)
- Show: event name, channel, description, icon, timestamp
- Auto-refresh (SSE or WebSocket or simple polling for v1)
- Filter by channel
- Minimal CSS. Functional. Readable.
- Ship: Dashboard where you can see events as they arrive
Day 6 (Mar 4): Project Management
- Create project / generate API key flow
- Project switcher on dashboard
- Simple login (email + password, or magic link — keep it simple)
- Ship: Multi-project support with API key generation
Day 7 (Mar 5): Notifications
- Slack webhook integration (paste Slack webhook URL, receive events in channel)
- Discord webhook integration (same pattern)
- Email notification (send email on specific event types or all events)
- Ship: At least Slack notifications working
Day 8 (Mar 6): Self-Hosting & Docs
- Finalize Docker Compose setup (one command:
docker compose up) - Write README: installation, configuration, API reference, integration examples
- Test self-hosting on a fresh VPS (Hetzner €4/mo or similar)
- Add integration examples: curl, Node.js/Bun, Python, Go
- Ship: Someone can clone the repo and have it running in 5 minutes
Day 9 (Mar 7): SDK & Polish
- Build and publish
palmframenpm package (TypeScript SDK) - One function:
palmframe.track(event, data) - Fix the worst UX issues on the dashboard
- Add favicon, meta tags, basic SEO to landing page
- Ship:
npm install palmframeworks
Day 10 (Mar 8): Launch Prep
- Deploy cloud version (palmframe.com with sign-up flow)
- Test the full flow: sign up → create project → get API key → send event → see in dashboard
- Update landing page with “Get Started” button linking to sign-up
- Prepare launch posts (LinkedIn, Twitter, Reddit, HN) using copywriting arsenal
- Pre-write 10 DMs (5 FR, 5 EN) personalized for specific LinkedIn connections
- Ship: Everything works end-to-end. Ready to show to humans.
- Post: Teaser post: “Launching something tomorrow.”
7. Phase 2: Launch & First Users (Days 11–20)
Mar 9 – Mar 18, 2026
Goal: Get the product in front of real people. 50+ sign-ups. 100+ GitHub stars. Collect raw, unfiltered feedback.
Day 11 (Mar 9): LAUNCH DAY
- Publish GitHub repo (if not already public)
- Post on LinkedIn (FR + EN versions, use LI-1 and LI-2 from copywriting)
- Post on Twitter (TW-1 launch tweet + TW-2 thread)
- Post on r/SideProject (RD-1)
- Submit to Hacker News (HN-1: Show HN)
- DMs: 10 (5 EN, 5 FR) to carefully selected founders from LinkedIn
- Goal today: 20 sign-ups, 50 GitHub stars
Days 12–14 (Mar 10–12): Ride the Wave
- Reply to EVERY comment on every platform. Speed matters. Reply within 1 hour.
- Fix any bug reported within 24 hours. Ship the fix. Tell the person who reported it.
- Post on r/selfhosted (RD-2), r/webdev (RD-3)
- Post update on LinkedIn: “Launched 3 days ago, here’s what happened”
- DMs: 5/day (mix of FR and EN)
- Start email sequence A (welcome email) for new sign-ups
Days 15–17 (Mar 13–15): Feedback Collection Sprint
- Send email A3 (“1 question about Palmframe”) to all early sign-ups
- DM every person who starred the GitHub repo and has their contact visible
- Post on r/startups (RD-4)
- Post question post on LinkedIn (LI-6)
- DMs: 5/day
- Start categorizing feedback: what do people ask for most?
- Fix the top 3 most-reported issues
Days 18–20 (Mar 16–18): Consolidate
- Publish Python SDK:
pip install palmframe - Write first blog post / changelog: “Week 1: What I learned launching Palmframe”
- Build the top-requested feature from feedback
- DMs: 5/day
- Sunday Day 20: First weekly review. Write it publicly.
Phase 2 Targets
| Metric | Target |
|---|---|
| Sign-ups | 50+ |
| GitHub stars | 100+ |
| DMs sent (total) | 60+ |
| DM reply rate | Track it (expect 10–20%) |
| Active users (sent ≥1 event) | 10+ |
| Feedback collected | 20+ pieces |
| Posts published | 8+ |
8. Phase 3: Iterate & First Revenue (Days 21–40)
Mar 19 – Apr 7, 2026
Goal: Turn free users into paying customers. First €. Build the features that make people stay.
Days 21–25: Payment & Polish
- Integrate Stripe Checkout (Starter: €9/mo, Pro: €29/mo)
- Implement usage limits (free: 10K events/mo, starter: 100K, pro: 1M)
- Build usage dashboard (show events used / limit)
- Improve dashboard UX: better filters, search events, date range picker
- Add custom domain support for self-hosted instances
- DMs: 5/day
- Launch offer: first 20 paying customers get 30% off lifetime
Days 26–30: Content + Outreach
- Write comparison page: palmframe.com/vs/logsnag (SEO play)
- Write “How to track events in your startup” tutorial (blog + social)
- Post on Indie Hackers (IH-1)
- Post on Hypercafé / French communities (IH-2)
- Start emailing newsletter sign-ups with updates
- DMs: 7/day (ramp up — you have more confidence + a better product now)
- Send email sequence B (cold email to warm LinkedIn contacts with email addresses)
Days 31–35: Feature Sprint Based on Feedback
- Build the #1 most-requested feature
- Build the #2 most-requested feature
- Publish Go SDK:
go get palmframe - Improve Docker setup based on self-hosting feedback
- DMs: 7/day
- Write changelog post for each new feature
Days 36–40: Revenue Push
- DM everyone who signed up but hasn’t activated (sent 0 events): “Hey, noticed you signed up but haven’t tracked anything yet. What blocked you?”
- DM active free users approaching the free tier limit: “You’re at 8,000/10,000 events. Want me to bump your limit?”
- Post “30 days of building Palmframe” retrospective on LinkedIn
- DMs: 7/day
- Weekly reviews on Day 27 and Day 34.
Phase 3 Targets
| Metric | Target |
|---|---|
| Sign-ups (cumulative) | 150+ |
| GitHub stars | 300+ |
| Paying customers | 5–10 |
| MRR | €50–150 |
| Active users (weekly) | 30+ |
| DMs sent (total cumulative) | 200+ |
| Self-hosted installs | 20+ |
| Blog posts / changelogs | 5+ |
9. Phase 4: Growth Engine (Days 41–60)
Apr 8 – Apr 27, 2026
Goal: Build repeatable growth channels. Stop relying solely on DMs. SEO, integrations, and word-of-mouth should start working.
Days 41–45: Integrations & Partnerships
- Build Vercel integration (one-click install for Vercel users)
- Build or document Railway / Render one-click deploy
- Build Stripe webhook receiver (auto-track payments without user code)
- Build GitHub webhook receiver (auto-track deploys)
- DMs: 7/day
- Reach out to 3 newsletter authors (Indie Hackers, TLDR, Console.dev) for features
Days 46–50: SEO & Content Flywheel
- Write: palmframe.com/vs/slack-notifications
- Write: palmframe.com/vs/custom-webhooks
- Write: “How I built an open-source LogSnag alternative in 10 days” (dev blog bait)
- Write: “Real-time event tracking for [Next.js / Node.js / Python / Go]” (one per framework, SEO long-tail)
- Submit to dev tool directories (AlternativeTo, LibHunt, OSS Insight, etc.)
- DMs: 5/day (can decrease as organic grows)
Days 51–55: Error Tracking Module (Module #2)
- Build basic error tracking: JavaScript SDK catches errors + sends them as events with stack trace
- Error grouping by stack trace fingerprint
- New “errors” channel auto-created in dashboard
- This is the “startup OS expands” moment. Announce it big.
- Post: “Palmframe is no longer just event tracking. We’re building an operating system for startups.”
- DMs: 5/day
Days 56–60: Product Hunt Launch
- Prepare Product Hunt listing (use PH copy)
- Get 3–5 hunters/supporters lined up (ask beta users, LinkedIn connections)
- Launch on Product Hunt
- Simultaneously post on LinkedIn, Twitter, Reddit, HN (second Show HN: “Palmframe now does event tracking + error tracking”)
- DMs: 10/day (launch week effort)
- Weekly reviews on Day 48 and Day 55.
Phase 4 Targets
| Metric | Target |
|---|---|
| Sign-ups (cumulative) | 400+ |
| GitHub stars | 800+ |
| Paying customers | 20–30 |
| MRR | €250–500 |
| Active users (weekly) | 80+ |
| Self-hosted installs | 50+ |
| SEO pages published | 5+ |
| Newsletter features | 1–2 |
10. Phase 5: Expand & Scale (Days 61–80)
Apr 28 – May 17, 2026
Goal: Third module. Enterprise features. Start building a moat.
Days 61–67: Uptime Monitoring (Module #3)
- Build endpoint monitoring: HTTP checks every 1–5 minutes from multiple regions
- Alert on downtime (Slack, Discord, email)
- Uptime percentage display
- Response time tracking
- Announce: “Palmframe now replaces LogSnag + Sentry + UptimeRobot. Three tools in one.”
Days 68–72: Status Page (Module #4)
- Public status page (auto-generated from uptime monitoring data)
- Custom subdomain: status.yourcustomer.com
- Subscriber notifications (email when status changes)
- Incident creation and update flow
- This is the enterprise upsell. Status pages are required for SOC2, enterprise deals, etc.
Days 73–77: Team Features
- Multi-user support (invite team members)
- Role-based access (admin, member, viewer)
- Audit log (who did what)
- This unlocks team plans and higher pricing
Days 78–80: Content & Outreach Blitz
- Write case study with a happy early customer
- Post “60 days of building Palmframe: from zero to [MRR]”
- Reach out to 5 more newsletters / podcasts
- DMs: 5/day (sustained, not sprinting)
- Weekly reviews on Day 62, 69, 76.
Phase 5 Targets
| Metric | Target |
|---|---|
| Sign-ups (cumulative) | 700+ |
| GitHub stars | 1,500+ |
| Paying customers | 40–60 |
| MRR | €500–1,000 |
| Modules shipped | 4 (events, errors, uptime, status) |
| Self-hosted installs | 100+ |
11. Phase 6: Compound (Days 81–100)
May 18 – Jun 6, 2026
Goal: Compound all previous work. At this point, organic should be growing. Focus on retention, revenue optimization, and setting up for post-challenge sustainability.
Days 81–85: Revenue Optimization
- Analyze churn: who left and why?
- Build failed payment recovery (dunning emails)
- Annual plans: offer 2 months free on yearly billing
- Usage-based upgrade prompts: “You’re at 90% of your event limit”
Days 86–90: Developer Experience
- Improve docs (interactive examples, copy-paste snippets for every framework)
- Build PHP SDK, Ruby SDK (or whichever languages your users request)
- API playground (try the API from the browser without installing anything)
- Quick-start wizard: guided setup in the dashboard
Days 91–95: Community & Content
- Launch Discord or GitHub Discussions for the community
- Write “The story of building Palmframe in 100 days” (long-form blog post)
- Record a demo video (2–3 minutes, screen recording + voiceover)
- Submit to Awesome Self-Hosted, Awesome Open Source lists
Days 96–100: Retrospective & Next Phase
- Complete 100-day retrospective: every number, every lesson, every failure
- Plan the next 100 days (if the project has traction)
- Post the full story on LinkedIn, Twitter, Indie Hackers, HN
- Celebrate. Seriously. You did it.
Phase 6 Targets (End of 100 Days)
| Metric | Minimum | Good | Exceptional |
|---|---|---|---|
| Sign-ups | 500 | 1,000 | 2,000+ |
| GitHub stars | 1,000 | 2,500 | 5,000+ |
| Paying customers | 30 | 60 | 100+ |
| MRR | €400 | €1,000 | €2,000+ |
| Self-hosted installs | 100 | 300 | 500+ |
| Total DMs sent | 500 | 700 | 900+ |
| Blog posts / changelogs | 15 | 25 | 40+ |
| Modules | 3 | 4 | 5+ |
12. Milestone Targets (Summary)
| Day | Date | Milestone |
|---|---|---|
| 3 | Mar 1 | Infrastructure done. Landing page live. GitHub repo public. |
| 10 | Mar 8 | MVP done. Working product end-to-end. Ready for humans. |
| 11 | Mar 9 | Launch day. First real users. |
| 20 | Mar 18 | 50 sign-ups. 100 stars. DM machine running. |
| 30 | Mar 28 | First paying customer. €9. Frame it. |
| 40 | Apr 7 | 10 paying customers. Product-market signal. |
| 50 | Apr 17 | Error tracking module ships. “Startup OS” narrative begins. |
| 60 | Apr 27 | Product Hunt launch. 500+ sign-ups. €500 MRR. |
| 70 | May 7 | Uptime monitoring ships. 3 modules. |
| 80 | May 17 | Status page ships. Team features. Enterprise-ready. |
| 90 | May 27 | 1,000+ sign-ups. €1,000 MRR target. |
| 100 | Jun 6 | Retrospective. Decide: double down or pivot. |
13. The DM System
DMs are your primary growth channel for the first 60 days. Here’s the system:
Daily DM Cadence
| Phase | Days | DMs/day | Total DMs | Focus |
|---|---|---|---|---|
| Phase 0–1 | 1–10 | 0 | 0 | Building. No DMs yet. |
| Phase 2 | 11–20 | 5–10 | ~75 | Launch outreach. Ask for feedback. |
| Phase 3 | 21–40 | 5–7 | ~120 | Convert to users. Ask for payment. |
| Phase 4 | 41–60 | 5–10 | ~150 | Launch week spikes. Partnerships. |
| Phase 5–6 | 61–100 | 5 | ~200 | Sustained. Organic should be growing. |
| Total | ~545 |
DM Targeting Priority
- Founders in your LinkedIn who are actively building (posted recently, launched something, shared a milestone). These are warm. Use DM-EN-3 or DM-FR-3 (context hook).
- CTOs / technical founders. They understand the product instantly. Use DM-EN-2 or DM-FR-2 (pain-first).
- Founders you have email addresses for (281 from LinkedIn export). Use email sequence B in parallel.
- People who engaged with your posts (liked, commented). They already know you. Use DM-EN-4 or DM-FR-4 (ultra-short).
- Indie hackers / build-in-public people. They’ll give you the best feedback. Use DM-EN-7 or DM-FR-7.
DM Tracking
For each DM, track:
| Field | Example |
|---|---|
| Name | Jean Dupont |
| Platform | |
| Language | FR |
| Template used | DM-FR-2 |
| Date sent | 2026-03-09 |
| Replied? | Yes / No |
| Reply summary | “Cool, will check it out” |
| Signed up? | Yes / No |
| Became paying? | Yes / No |
| Follow-up needed? | Yes (Day 14) |
Use a spreadsheet. Or a simple SQLite database. Or Palmframe itself once it works (dogfooding!).
DM Rules
- Never copy-paste without personalizing. Mention their product, their post, their company. 1 sentence of personalization minimum.
- Never DM more than 30/day on LinkedIn. Risk of account restriction. Stay at 5–10/day.
- Follow up once. If no reply after 5–7 days, send the follow-up (DM-EN-9 or DM-FR-8). If still no reply, move on.
- Never be pushy. You’re asking for feedback, not selling. The energy is “I built something, would love your take” not “buy my product.”
- Batch them. Do all DMs in one 30–45 minute block. Don’t sprinkle them throughout the day.
14. The Content System
Posting Cadence
| Platform | Frequency | Content Type |
|---|---|---|
| 3x/week | Build-in-public updates, launches, questions, milestones | |
| Twitter/X | Daily (once launched) | Short updates, screenshots, GIFs, threads on launch days |
| 1x/week (different subreddit each time) | Show-off posts, question posts, helpful posts | |
| Hacker News | 2–3x total | Show HN on launch + major milestones only |
| Indie Hackers | 1x/week | Milestones, learnings, revenue updates |
| Blog (palmframe.com/blog) | 1x/week | Tutorials, comparisons, behind-the-scenes |
| Journal (alexisbouchez.com) | Daily | Personal log (not marketing — this is for you) |
Content Ratio
- 50% — Build-in-public updates (what you shipped, what you learned, numbers)
- 25% — Educational / helpful (how-to guides, comparisons, tutorials)
- 15% — Engagement (questions, polls, asking for feedback)
- 10% — Direct product promotion (launches, features, pricing)
15. The Feedback System
Feedback is the raw material of product-market fit. Treat it like gold.
How to Collect
- In-app: Simple feedback button in the dashboard (“What’s missing?”). Even a mailto: link works for v1.
- Email: Sequence A, email A3 (“1 question about Palmframe”). Plain text, reply-to you.
- DMs: Every DM reply is feedback. Capture it.
- Public posts: Comments on your Reddit/HN/LinkedIn posts. Screenshot and categorize.
- GitHub Issues: People will file issues. That’s feedback.
How to Categorize
Every piece of feedback goes into one bucket:
| Bucket | What it means | Action |
|---|---|---|
| Bug | Something is broken | Fix within 24h. Tell the reporter. |
| Missing feature | They want something that doesn’t exist | Add to feature request tally. Build when 3+ people ask. |
| UX friction | Something works but is confusing/annoying | Fix in next polish sprint. |
| Praise | They like something | Note what they like. Double down on it. Ask for testimonial. |
| “Not for me” | They don’t need this product | Ask why. Learn. Move on. |
| Pricing | Too expensive, too cheap, wrong model | Track patterns. Adjust if 5+ people say the same thing. |
The Feedback Loop
The most powerful thing you can do:
- Someone gives feedback (“I wish it had X”)
- You build X
- You tell them: “Hey, you asked for X. I shipped it. Here it is.”
- They become a fan for life. They tell their friends. They become a paying customer.
This loop, repeated 20 times, is worth more than any marketing campaign.
16. Weekly Review Template
Every Sunday. Write it in your journal. Post a summary on LinkedIn. This is your accountability mechanism.
Week [X] Review — Palmframe 100-Day Challenge
Days covered: [Day X] to [Day Y]
Dates: [Mon] to [Sun]Numbers this week:
- Sign-ups: [new this week] (total: [cumulative])
- GitHub stars: [new this week] (total: [cumulative])
- Paying customers: [new this week] (total: [cumulative])
- MRR: €[amount]
- DMs sent: [count]
- DM reply rate: [X]%
- Posts published: [count]
- Bugs fixed: [count]
- Features shipped: [list]
What went well:
- [...]
What didn’t go well:
- [...]
Top feedback received:
- [...]
Key learning:
- [...]
Plan for next week:
- [...]
Mood average (1–5): [X]
Biggest blocker: [...]
17. When to Pivot / Abort
Not every idea works. Here are clear signals to re-evaluate:
Red Flags (Consider Pivoting)
- Day 30, 0 paying customers, <20 active users. People are not using it even when it’s free. The problem might not be painful enough.
- Day 40, <5 paying customers despite 200+ DMs sent. You’re reaching people, they’re just not converting. Product or market issue.
- DM reply rate consistently below 5%. Your positioning or targeting is off.
- Everyone says “cool but I wouldn’t pay for it.” Nice-to-have, not must-have.
- You dread working on it. If your mood is consistently 1–2/5 for 2+ weeks, the project is killing you.
Green Flags (Keep Going)
- People use it without being asked to. They come back on their own.
- People pay without being pushed. The pricing page gets clicks.
- People tell others about it. You see sign-ups you didn’t DM.
- People ask for features. They want MORE of what you’re building.
- Your DM reply rate is 15%+ and people are enthusiastic.
Pivot Options (If Needed)
- Pivot the wedge, keep the vision. Event tracking doesn’t resonate? Try starting with the revenue dashboard wedge instead. Same OS vision, different entry point.
- Pivot the audience. Founders don’t bite? Try agencies managing multiple client projects. Same product, different buyer.
- Pivot to services + product. Sell security audits to pay bills (€297/audit), build Palmframe on the side. De-risk the runway.
- Kill it and start the next 100-day challenge. No shame. You’ve got data, skills, and audience from this one.
18. Full Calendar (Day by Day)
Every single day, with its date, phase, and minimum deliverable.
Click to expand full 100-day calendar
| Day | Date | Phase | Minimum Deliverable | DMs | Post? |
|---|---|---|---|---|---|
| 1 | Feb 27 | Foundation | Domain + GitHub repo + project structure | 0 | Yes (LI) |
| 2 | Feb 28 | Foundation | Landing page live at palmframe.com | 0 | Yes (TW) |
| 3 | Mar 1 | Foundation | CI/CD + DB schema + Docker skeleton + /health endpoint | 0 | |
| 4 | Mar 2 | MVP | POST /v1/events API working | 0 | |
| 5 | Mar 3 | MVP | Dashboard v1 (event feed, auto-refresh) | 0 | Yes (LI) |
| 6 | Mar 4 | MVP | Project management + API key generation | 0 | |
| 7 | Mar 5 | MVP | Slack notifications working | 0 | |
| 8 | Mar 6 | MVP | Docker Compose + README + self-hosting works | 0 | Yes (TW) |
| 9 | Mar 7 | MVP | npm package published + UX polish | 0 | |
| 10 | Mar 8 | MVP | Cloud version deployed + full flow tested + launch prep | 0 | Yes (teaser) |
| 11 | Mar 9 | Launch | LAUNCH DAY: LI + TW + Reddit + HN | 10 | Yes (all) |
| 12 | Mar 10 | Launch | Reply to all comments. Fix first reported bugs. | 5 | |
| 13 | Mar 11 | Launch | Post on r/selfhosted. Fix bugs. | 5 | Yes (Reddit) |
| 14 | Mar 12 | Launch | Post on r/webdev. Launch update on LI. | 5 | Yes (LI+Reddit) |
| 15 | Mar 13 | Launch | Send feedback email (A3) to sign-ups. DM GitHub starrers. | 5 | |
| 16 | Mar 14 | Launch | Post question post on LI. Categorize feedback. | 5 | Yes (LI) |
| 17 | Mar 15 | Launch | Fix top 3 reported issues. Post on r/startups. | 5 | Yes (Reddit) |
| 18 | Mar 16 | Launch | Python SDK published. | 5 | |
| 19 | Mar 17 | Launch | Build #1 requested feature from feedback. | 5 | Yes (TW) |
| 20 | Mar 18 | Launch | First blog/changelog post. Weekly Review #1. | 5 | Yes (LI) |
| 21 | Mar 19 | Revenue | Stripe Checkout integration started | 5 | |
| 22 | Mar 20 | Revenue | Stripe Checkout live. Paid plans active. | 5 | Yes (LI: “you can now pay”) |
| 23 | Mar 21 | Revenue | Usage limits + usage dashboard | 5 | |
| 24 | Mar 22 | Revenue | Dashboard UX improvements (filters, search) | 7 | |
| 25 | Mar 23 | Revenue | Dashboard UX improvements (date range, channels) | 7 | Yes (TW: screenshot) |
| 26 | Mar 24 | Revenue | Comparison page: /vs/logsnag | 7 | |
| 27 | Mar 25 | Revenue | Tutorial blog post. Weekly Review #2. | 7 | Yes (LI+blog) |
| 28 | Mar 26 | Revenue | Post on Indie Hackers. Post on Hypercafé. | 7 | Yes (IH+HC) |
| 29 | Mar 27 | Revenue | Email sequence B to LinkedIn contacts with emails | 7 | |
| 30 | Mar 28 | Revenue | Newsletter sign-up email. Aim for first paying customer! | 7 | Yes (TW) |
| 31 | Mar 29 | Revenue | Build #1 most-requested feature | 7 | |
| 32 | Mar 30 | Revenue | Build #2 most-requested feature | 7 | |
| 33 | Mar 31 | Revenue | Go SDK published | 7 | Yes (LI) |
| 34 | Apr 1 | Revenue | Docker improvements. Weekly Review #3. | 7 | Yes (LI: weekly review) |
| 35 | Apr 2 | Revenue | Changelog post for new features | 7 | Yes (TW+LI) |
| 36 | Apr 3 | Revenue | DM inactive sign-ups: “What blocked you?” | 7 | |
| 37 | Apr 4 | Revenue | DM active free users near limit | 7 | |
| 38 | Apr 5 | Revenue | Feature polish + bug fixes | 7 | |
| 39 | Apr 6 | Revenue | Build-in-public post: “30 days of Palmframe” | 7 | Yes (LI: milestone) |
| 40 | Apr 7 | Revenue | Revenue check. Feedback review. Weekly Review #4. | 7 | Yes (LI) |
| 41 | Apr 8 | Growth | Vercel integration started | 7 | |
| 42 | Apr 9 | Growth | Vercel integration shipped | 7 | Yes (TW+LI) |
| 43 | Apr 10 | Growth | Stripe webhook auto-tracker (zero-code payment tracking) | 7 | |
| 44 | Apr 11 | Growth | GitHub webhook auto-tracker (zero-code deploy tracking) | 7 | Yes (TW: “zero-code tracking”) |
| 45 | Apr 12 | Growth | Outreach to 3 newsletter authors | 7 | |
| 46 | Apr 13 | Growth | SEO page: /vs/slack-notifications | 5 | |
| 47 | Apr 14 | Growth | SEO page: /vs/custom-webhooks. Weekly Review #5. | 5 | Yes (LI) |
| 48 | Apr 15 | Growth | Blog: “How I built an OSS LogSnag alt in 10 days” | 5 | Yes (blog+LI+TW) |
| 49 | Apr 16 | Growth | Framework tutorial: “Event tracking for Next.js” | 5 | |
| 50 | Apr 17 | Growth | Submit to directories (AlternativeTo, etc.) | 5 | |
| 51 | Apr 18 | Growth | Error tracking module: JS SDK catches errors | 5 | |
| 52 | Apr 19 | Growth | Error grouping by stack trace fingerprint | 5 | |
| 53 | Apr 20 | Growth | Errors channel auto-created in dashboard | 5 | |
| 54 | Apr 21 | Growth | Error tracking announced. Weekly Review #6. | 5 | Yes (all: “Startup OS”) |
| 55 | Apr 22 | Growth | Product Hunt listing prepared | 5 | |
| 56 | Apr 23 | Growth | Line up PH supporters | 10 | |
| 57 | Apr 24 | Growth | PRODUCT HUNT LAUNCH DAY | 10 | Yes (all) |
| 58 | Apr 25 | Growth | Ride the PH wave. Reply to everything. | 10 | |
| 59 | Apr 26 | Growth | Second Show HN: “now with error tracking” | 10 | Yes (HN) |
| 60 | Apr 27 | Growth | Post “60 days” retrospective. Weekly Review #7. | 10 | Yes (LI: milestone) |
| 61 | Apr 28 | Expand | Uptime monitoring: endpoint check worker | 5 | |
| 62 | Apr 29 | Expand | Uptime: alerts on downtime | 5 | |
| 63 | Apr 30 | Expand | Uptime: response time tracking + display | 5 | |
| 64 | May 1 | Expand | Uptime: multi-region checks (2+ locations) | 5 | |
| 65 | May 2 | Expand | Uptime monitoring shipped. Announce. | 5 | Yes (all: “3 tools in 1”) |
| 66 | May 3 | Expand | Status page: public page renderer | 5 | |
| 67 | May 4 | Expand | Status page: incident CRUD. Weekly Review #8. | 5 | Yes (LI) |
| 68 | May 5 | Expand | Status page: subscriber notifications | 5 | |
| 69 | May 6 | Expand | Status page: custom subdomain | 5 | |
| 70 | May 7 | Expand | Status page shipped. Announce. | 5 | Yes (all: “4 modules”) |
| 71 | May 8 | Expand | Team features: invite members | 5 | |
| 72 | May 9 | Expand | Team features: roles (admin/member/viewer) | 5 | |
| 73 | May 10 | Expand | Team features: audit log | 5 | |
| 74 | May 11 | Expand | Team features shipped. Weekly Review #9. | 5 | Yes (LI) |
| 75 | May 12 | Expand | Case study with early customer | 5 | Yes (blog) |
| 76 | May 13 | Expand | “60 days of Palmframe: zero to [MRR]” post | 5 | Yes (LI: milestone) |
| 77 | May 14 | Expand | Outreach to 5 newsletters/podcasts | 5 | |
| 78 | May 15 | Expand | Polish + bug fixes | 5 | |
| 79 | May 16 | Expand | Polish + bug fixes | 5 | |
| 80 | May 17 | Expand | Phase 5 retrospective. Weekly Review #10. | 5 | Yes (LI) |
| 81 | May 18 | Compound | Churn analysis: who left and why? | 5 | |
| 82 | May 19 | Compound | Dunning emails (failed payment recovery) | 5 | |
| 83 | May 20 | Compound | Annual billing option | 5 | |
| 84 | May 21 | Compound | Usage-based upgrade prompts | 5 | |
| 85 | May 22 | Compound | Revenue optimization shipped | 5 | Yes (TW) |
| 86 | May 23 | Compound | Docs improvements: interactive examples | 5 | |
| 87 | May 24 | Compound | PHP or Ruby SDK. Weekly Review #11. | 5 | Yes (LI) |
| 88 | May 25 | Compound | API playground (browser-based API tester) | 5 | |
| 89 | May 26 | Compound | Quick-start wizard in dashboard | 5 | |
| 90 | May 27 | Compound | DX improvements shipped. Announce. | 5 | Yes (TW+LI) |
| 91 | May 28 | Compound | Discord / GitHub Discussions community launch | 5 | Yes (all: community) |
| 92 | May 29 | Compound | Start writing “100 days of Palmframe” long-form post | 5 | |
| 93 | May 30 | Compound | Record demo video (2–3 min) | 5 | |
| 94 | May 31 | Compound | Submit to Awesome Self-Hosted, Awesome OSS. Weekly Review #12. | 5 | Yes (LI) |
| 95 | Jun 1 | Compound | Finish “100 days” blog post draft | 5 | |
| 96 | Jun 2 | Compound | Final bug fixes + polish | 5 | |
| 97 | Jun 3 | Compound | Final bug fixes + polish | 5 | |
| 98 | Jun 4 | Compound | Full 100-day retrospective written | 5 | |
| 99 | Jun 5 | Compound | Publish retrospective everywhere (LI, TW, IH, HN, Reddit) | 5 | Yes (all) |
| 100 | Jun 6 | Compound | Celebrate. Plan next 100 days. Weekly Review #13 (final). | 0 | Yes (LI: thank you) |
19. Summary: The Numbers
| Metric | 100-Day Total |
|---|---|
| Days building | 100 |
| DMs sent | ~545 |
| Posts published | ~50 |
| Blog posts / changelogs | ~15–25 |
| Weekly reviews | 13 |
| Journal entries | 100 |
| Modules shipped | 4 (events, errors, uptime, status page) |
| SDKs published | 4–5 (JS, Python, Go, PHP/Ruby) |
| Launches | 3+ (initial, PH, milestones) |
Day 1 is February 27, 2026. Day 100 is June 6, 2026. The clock starts tomorrow.