Show HN: Apitally – A simple, privacy-focused API monitoring and analytics tool
G’day Hacker News, I’m Simon Gurcke, the sole founder of Apitally (https://apitally.io).

I’m building a simple API monitoring and analytics tool for Python / Node.js apps. It helps users understand API usage and performance, spot issues early and troubleshoot effectively when something goes wrong.

Features include:

- Dashboards: Provide insights into API traffic, errors, performance and consumers.

- Request logging: Opt-in and highly configurable in terms of what data is logged. Users can drill down from aggregated metrics to individual requests (proven to be super helpful when troubleshooting issues).

- Custom alerts: Based on 14 different API metrics with notifications delivered via email, Slack or Microsoft Teams.

- Validation error tracking: Captures metrics about which fields failed validation and why. Works for web frameworks with built-in validation (e.g. FastAPI with pydantic), or that integrate with popular third-party validation libraries (e.g. Zod for Hono).

- Server error tracking: Captures exception details and stack traces for 500 error responses. An integration with the Sentry SDK also captures event IDs, allowing users to click through to the relevant Sentry issue for more context.

I first started developing Apitally to scratch my own itch. While working at a health tech company where I was responsible for API-based software products, I became frustrated with the monitoring tools we had in place - Datadog and the ELK stack. They were too complex for my API-centric use cases, and often a pain to use.

As a result, I focused on making Apitally as simple as possible. This involved not just refining the UX of the dashboard, but also optimizing the developer experience with the open-source SDKs:

- https://github.com/apitally/apitally-py - Python SDK (supports FastAPI, Flask, Django, Litestar, Starlette)

- https://github.com/apitally/apitally-js - Node.js SDK (supports Express, NestJS, Fastify, Koa, Hono)

My other focus was on data privacy, as that is a strict requirement in the healthcare industry. By default, Apitally doesn’t capture any sensitive data - metrics are aggregated on the client side (similar to Prometheus) and sent in the background in regular intervals.

The hardest part has been implementing integrations for various web frameworks and supporting a wide range of versions. I learned a lot about the inner workings of web frameworks in the process. Good test coverage and an extensive test matrix were really important to not break people’s production APIs with buggy middleware.

Apitally’s backend is built in Python and runs on a small Kubernetes cluster on DigitalOcean. It uses PostgreSQL and ClickHouse to store data and NATS JetStream as a message queue. I chose NATS for being lightweight and its exactly-once processing capabilities. I’m also impressed by ClickHouse’s performance given the low hardware specs of my server (4 vCPUs, 8 GB RAM).

Apitally is free to use for small hobby projects (with limitations), and I offer two paid tiers for $39 and $119 (USD) per month. The dashboard has a demo mode, allowing people to explore the product without having to set up their own app first.

Thank you for reading about my bootstrapped indie product. Please let me know your thoughts and questions in the comments.