Day 7: Week 1 retrospective - what worked, what didn't

Day 7 of 30. End of week one. Time to be honest about where we are.

#building-in-public #planning

Day 7 of 30. End of week one. Time to be honest about where we are.

We’ve been heads-down for a week. “Shipping” every day, or at least thinking every day, and writing about our learning. But are we actually on track? Let’s review.

The 30-day progress

===

30-day progress

==============================
[+] Day 7 of 30
23%
Week 2
8
9
10
11
12
13
14
Week 3
15
16
17
18
19
20
21
Week 4
22
23
24
25
26
27
28
Week 5
29
30
+
Completed
*
Current
Upcoming
==================================================

The goal: build a screenshot API SaaS and get our first customer in 30 days. Specifically, by day 15 we wanted to have something people would find useful and which works well.

That’s 8 days from now. Exciting!

What we actually accomplished

===

Week 1 progress

[7/7] 100%
[✓]
Define the project, set constraints Day 1
[✓]
Choose tech stack, set up repo Day 2
[✓]
Design architecture Day 3
[✓]
Set up CI/CD pipeline Day 4
[✓]
Configure hosting & storage Day 5
[✓]
Get Playwright capturing screenshots Day 6
[✓]
Week 1 retro Day 7
==================================================

On paper, we’re on track, and every planned task got done, more or less. We’re sure we can make improvements on each step, but for now, we have a solid basis.

What’s actually working

The screenshot engine works. We can hit an endpoint, pass a URL, and get back a PNG. It takes 2-3 seconds for most sites. That’s the core product, and it works.

CI/CD is smooth. Push to main, wait a few minutes, it’s deployed. There are no manual steps, and the setup is simple.

Costs are controlled. We’re under $10 per month, not counting our own hours.

Daily writing is sustainable. We were worried the dev log might feel like a chore, but it doesn’t. Writing clarifies thinking, and knowing we’ll publish keeps us accountable.

What’s not working (yet)

We don’t have an API yet. We have a screenshot function. But there’s no authentication, no rate limiting, no job queue, no user accounts. Someone can’t actually use this as a service yet.

No landing page. Besides our blog, we have currently zero web presence. If someone wanted to sign up today, they couldn’t.

Scope is not well-defined yet. We have a lot of potential features in our backlog which we’re keen on delivering, but we have to make sure we’re keeping track of our mission.

For a customer by day 15

===

Day 15 requirements

[0/7] 0%
[ ]
User registration and login
[ ]
API key generation
[ ]
REST API with auth
[ ]
Usage tracking
[ ]
Landing page
[ ]
Stripe integration
[ ]
Documentation
==================================================

That’s a lot for 8 days, but not impossible.

The numbers

cost-breakdown - Week 1 costs
Total monthly cost: $4.50/mo
VPS (Hetzner CX22)
Hetzner
$4.50
Storage FREE
Cloudflare R2
-
Domain FREE
Not purchased yet - TBD
-
CI/CD FREE
GitHub Actions
-
Budget usage $4.50 / $20.00 (23%)
[✓] Well under budget!

What would success look like?

By day 15 (end of week 2):

  • Landing page live
  • API functional with auth
  • Stripe integration working
  • Posted in 3+ communities
  • At least 5 beta signups
  • Ideally: At least 1 customer

By day 30:

  • Stable product
  • Clear documentation
  • 10+ users (free or paid)
  • At least $50 in revenue
  • A decision: continue or sunset

Lessons from week 1

Infrastructure first was right. Having CI/CD and hosting sorted means we can now move fast on features without deployment friction.

Writing takes time but pays off. These posts take 30-45 minutes each. That’s time not coding. But they force clarity and create a record we’ll value later.

The boring stuff matters. We spent zero time on “exciting” features like AI enhancement or visual diffs. We spent all our time on Docker, databases, and deployment. That’s correct prioritization.

Solo building is hard. No one to bounce ideas off, no one to catch mistakes, no one to share the load. We’re managing, but it’s harder than working with a team.

Tomorrow: the actual API

Week 2 starts now. Day 8 we’re building the REST API contract - the endpoints, request/response formats, error handling. The interface that developers will actually use.

Let’s go.

Book of the day

The Lean Startup by Eric Ries

The classic. We’ve read it before, but week 1’s retrospective reminded us of its core message: build, measure, learn, ideally as fast as possible.

We’ve been building, but we haven’t been measuring enough. We haven’t introduced analytics yet, we have no landing page to gauge interest and we have room to improve in our marketing of our product.

Ries would tell us to get something in front of potential customers immediately, even if it’s embarrassing. Week 2 is about closing that loop.


Day 7 stats

Hours
██░░░░░░░░░░░░░
14h
</> Code
█░░░░░░░░░░░░░░
450
$ Revenue
░░░░░░░░░░░░░░░
$0
Customers
░░░░░░░░░░░░░░░
0
Hosting
████░░░░░░░░░░░
$5.5/mo
Achievements:
[✓] Week 1 complete [ ] 8 days to first customer
╔════════════════════════════════════════════════════════════╗
E

Erik

Building Allscreenshots. Writes code, takes screenshots, goes diving.

Try allscreenshots

Screenshot API for the modern web. Capture any URL with a simple API call.

Get started