chore: cleanup

This commit is contained in:
sjdonado
2025-03-19 06:09:43 +01:00
parent 917a79c536
commit e14fc266bb
3 changed files with 10 additions and 7 deletions
+2 -2
View File
@@ -4,14 +4,14 @@
Lightweight URL shortener API service with minimal resource requirements. Average memory consumption is under **20MiB** and single CPU core consumption under 20%.
bit is highly performant, achieving in average **3K RPS** with a minimum latency of 56ms (100K requests using 100 connections, [benchmark](docs/SETUP.md#benchmark)).
Performance: Avg **3K reqs/sec**, latency 56ms (100K requests using 100 connections, [benchmark](docs/SETUP.md#benchmark)).
Self-hosted with [Dokku](docs/SETUP.md#dokku) and [Docker Compose](docs/SETUP.md#docker-compose).
Images available on [Docker Hub](https://hub.docker.com/r/sjdonado/bit/tags).
## Why bit?
It is feature-complete by design. Its strength lies in simplicity, a reliable URL shortener without unnecessary bloat. Bug fixes will continue, but new features aren't planned.
It is feature-complete by design. Its strength lies in simplicity, reliable without unnecessary bloat. Bug fixes will continue, but new features aren't planned.
- Minimal tracking setup: Country, browser, os, referer. No cookies or persistent tracking mechanisms are used beyond what's available from a basic client's request.
- Flexible request forwarding system passes client context to destinations via standard `X-Forwarded-For` and `User-Agent` headers, enabling advanced tracking and integration capabilities when needed.
+5 -2
View File
@@ -34,6 +34,7 @@ module App::Controllers
end
link.clicks = [] of App::Models::Click
render_json({"data" => App::Serializers::Link.new(link)}, 201)
end
@@ -71,7 +72,8 @@ module App::Controllers
query = query.order_by("id DESC").limit(limit + 1)
links = Database.all(Link, query)
return paginated_response(links, limit) { |link| App::Serializers::Link.new(link) }
paginated_response(links, limit) { |link| App::Serializers::Link.new(link) }
end
def get
@@ -106,7 +108,8 @@ module App::Controllers
query = query.order_by("id DESC").limit(limit + 1)
clicks = Database.all(Click, query)
return paginated_response(clicks, limit) { |click| App::Serializers::Click.new(click) }
paginated_response(clicks, limit) { |click| App::Serializers::Click.new(click) }
end
def update
+3 -3
View File
@@ -113,9 +113,9 @@ RAM: 1GiB
CPU: Apple M3 Pro
**Summary**
- Requests/secs average central tendency: (1328.47 + 1357.19 + 1407.03) / 3 + (1785.03 + 1789.06 + 1778.84) / 3 = 3148.54 reqs/sec
- Latency average central tendency: (76.19 + 74.68 + 71.85) / 3 - (29.43 + 14.50 + 9.42) / 3 = 56.4ms
- Latency for conservative capacity planning: (76.19 + 74.68 + 71.85) / 3 + (29.43 + 14.50 + 9.42) / 3 = 89.63ms
- Reqs/sec (average central tendency): (1328.47 + 1357.19 + 1407.03) / 3 + (1785.03 + 1789.06 + 1778.84) / 3 = 3148.54 reqs/sec
- Latency (average central tendency): (76.19 + 74.68 + 71.85) / 3 - (29.43 + 14.50 + 9.42) / 3 = 56.4ms
- Latency (for conservative capacity planning): (76.19 + 74.68 + 71.85) / 3 + (29.43 + 14.50 + 9.42) / 3 = 89.63ms
- Best single run: 18041.44 reqs/sec
```