PeoplePerson
I've simplified my stack (again). AI tools make it simpler to build software products and as I've been building more and more websites I've realized that overengineering my stack has prevented me from diving deep into the cruxes of the problems I set out to solve. I've made three simplifications. First, I switched from FastAPI+React to Sveltekit. You don't need Python to write code that calls AI models and a full stack framework helps you spend less time writing types. Second, I switched from using SQL to Firestore. When a project is early and data types are shifting often, a SQL schema causes painfully slow migrations. Third, I'm deploying with Vercel rather than GCP. No more terraform or build configs, Vercel does it all as framework defined infrastructure. https://vercel.com/blog/framework-defined-infrastructure
Website: peopleperson.klazr.com GitHub: github.com/rklaeser/PeoplePerson
I've been wanting to build something like PeoplePerson for at least a year and last week I finally felt like I had my development stack and process honed to quickly make something worthwhile.
What is it?
PeoplePerson is basically a CRM focused on helping you remember facts and memories about your friends. I'm also trying to give it texting capabilities but that's pending approval of a business account in Twilio.
Who would use PeoplePerson
- You
- Your uncommunicative partner
- Your mom who can't remember your partner's name
What's the tech stack
Frontend
- Framework: React 19.1.1
- Build Tool: Vite
- Routing: TanStack Router (file-based routing)
- State:
- TanStack Query (React Query) for server state
- Zustand for client state
- Styling: Tailwind CSS with custom components
- UI Components: Radix UI primitives (dialogs, dropdowns, tabs, etc.)
- Language: TypeScript
Backend
- API: Python FastAPI
- Authentication: Firebase
DevOps
- Infrastructure: Cloud Run in Google Cloud Platform
- CI/CD: Google Cloud Build (cloudbuild.yaml)
- Infrastructure as Code: Terraform
- Version Control: Git/GitHub
Takeaways
Focusing on a specific stack has made development times much faster. I know exactly which tools to reach for and how they work together, which eliminates the analysis paralysis that used to slow me down.
Running each issue I'm developing through an overengineering/YAGNI check has been useful for accelerating development time. I do wish I had an easier workflow for this. The crux is that after developing an issue in an llm's context window that instance gets stuck in its perspective. Perhaps using subagents and explicitly prompting them would save time. "Ask Greg" (the senior architect who believes strongly in keeping things simple to critique this plan).