Inspiration
Every engineer has been through it — something breaks at 2am, your phone is blowing up with customer emails asking "is this down for everyone?", and you're simultaneously trying to fix the issue and explain it to people while half asleep. We've always had great tools for detecting problems. We had nothing simple for communicating them. Statuspage costs $299/month. Setting up anything else takes a weekend just to configure. We wanted something that takes 5 minutes, costs almost nothing, and doesn't make you feel like you need a DevOps degree to run it.
What it does
StateMe gives engineering teams a public status page and incident management dashboard in one place. You add your services, publish your page at [stateme-domain]/your-slug, and when something breaks — you open an incident, post updates as the situation evolves, and your subscribers get notified automatically by email. When the dust settles, one click generates a complete AI-written postmortem from your incident timeline so you're not staring at a blank document at midnight. The whole thing is live to customers from the moment you sign up.
How we built it
The frontend is Next.js 15 with the App Router — we used Server Actions heavily so there's no separate API layer to maintain. The UI was scaffolded with v0 and uses shadcn/ui components throughout. The database is Aurora PostgreSQL Serverless v2 on AWS, connected through Vercel's marketplace integration. Choosing Aurora wasn't an afterthought — resolving an incident has to atomically update the incident status and recalculate every affected service's status in a single transaction. That needs ACID guarantees. Aurora also scales to zero when no one is using it, which made the economics work for a weekend project. Postmortems are generated by the Groq API using openai/gpt-oss-120b or llama-3.3-70b-versatile. We feed it the full incident timeline — every status update with its timestamp — and it produces a structured document with root cause, impact, action items, and lessons learned. It takes about 3 seconds and saves about 3 hours. Email notifications go through Resend. Billing through Stripe. The whole stack deploys to Vercel with a single push.
Challenges we ran into
Getting the service status calculation right took longer than expected. A service's current status isn't stored statically — it's always the worst active incident affecting it. When you resolve an incident, every service it touched needs to be recalculated. Getting that logic correct inside a database transaction, without race conditions, was the most genuinely tricky part of the backend. Auth also gave us a fight. We went through three different approaches over the course of the weekend before landing on something that actually worked reliably on the deployed URL.
Accomplishments that we're proud of
The postmortem generator is the one that makes people stop and look twice. You click a button on a resolved incident and 3 seconds later you have a complete, structured postmortem written in your voice, from your actual incident data. No prompt engineering required from the user — they just click. The other one is how the public status page updates. The moment you post an incident update in the dashboard, the public page reflects it — no manual refresh, no webhook delay. It just works.
What we learned
Aurora Serverless v2 through Vercel's marketplace is genuinely painless. What we expected to be the hardest part — database setup — was done in under 10 minutes and we never thought about it again. The connection string was injected automatically, scaling happened automatically, and it cost essentially nothing during development. We also learned that the postmortem is where teams feel the most pain post-incident. It's the thing everyone knows needs to happen and nobody wants to do. Automating it isn't just a neat feature — it's actually the thing people will pay for.
What's next for StateMe
Custom domains so your status page lives at status.yourcompany.com. Slack notifications alongside email. An uptime monitor that opens incidents automatically when a service goes down. And eventually a public API so teams can trigger incidents from their own deployment pipelines. The foundation is production-grade. The next features are just building on top of it.
Built With
- amazon-web-services
- api
- aurora
- bcryptjs
- css
- drizzle
- groq
- iron-session
- next.js
- orm
- postgresql
- react
- resend
- serverless
- shadcn/ui
- stripe
- tailwind
- typescript
- v2
- vercel
Log in or sign up for Devpost to join the conversation.