Vybe — A Production-Ready URL Shortener That Survives Failure


What it does

Vybe is a URL shortener built not just to work—but to survive real production conditions.

It converts long URLs into short, shareable links while ensuring:

  • high availability
  • resilience to failures
  • real-time system visibility

Core capabilities:

  • Create and redirect short links
  • Handle high traffic (500+ requests/sec)
  • Continue operating even when dependencies fail

This project focuses on how systems behave when things go wrong—not just when everything works.


Hackathon Quest Progress

Reliability Engineering — Gold (The Immortal)

  • 70%+ test coverage
  • Graceful failure with clean error handling
  • Chaos testing with service failures and recovery
  • Failure modes documented

Proof:

  • Redis crash → system slows but stays alive
  • Instance failure → traffic rerouted
  • 7/7 failure scenarios passed (100% recovery rate)

Scalability Engineering — Gold (The Speed of Light)

  • Load tested to 500+ concurrent users / RPS
  • Multiple app instances (horizontal scaling)
  • Nginx load balancing
  • Redis caching implemented
  • Error rate < 5% under load

Performance:

  • ~45ms average latency
  • Stable under stress
  • Bottlenecks identified and optimized

Incident Response — Gold (The Command Center)

  • Structured JSON logging with request IDs
  • Metrics exposed via /metrics
  • Real-time dashboards (Grafana)
  • Alerts configured (error rate, downtime)
  • Runbooks for failure scenarios

Observability:

  • Latency, traffic, errors, saturation tracked
  • Root cause diagnosis via logs and metrics

Documentation — Gold (The Codex)

  • Complete README and setup guide
  • Architecture diagram
  • API documentation
  • Runbooks for incidents
  • Decision log
  • Failure mode documentation

The Problem

Most hackathon apps:

  • work locally
  • break under load
  • crash on failure
  • have no monitoring

Real systems face:

  • dependency failures
  • traffic spikes
  • unpredictable errors

Can a simple app behave like a production system?


How we built it

Core Stack

  • Flask (backend API)
  • PostgreSQL (database)
  • Redis (cache)
  • Nginx (reverse proxy + load balancer)
  • Docker Compose (orchestration)

Observability Stack

  • Prometheus (metrics)
  • Grafana (dashboards)
  • Structured logging
  • Alertmanager (alerts)

Key Engineering Features

Graceful Degradation

  • Cache failure → fallback to database
  • Instance failure → reduced capacity, not downtime

Horizontal Scaling

  • Multiple app instances
  • Load distributed via Nginx

Structured Logging

  • Request ID
  • latency
  • status
  • error context

Real-Time Observability

Tracks:

  • latency
  • traffic
  • error rate
  • cache performance

Automated Testing & CI

  • Unit and integration tests
  • Coverage tracking
  • CI blocks broken deployments

What makes it special

Survives real failures

Tested:

  • Redis crash
  • Database issues
  • Instance failure
  • CPU/memory pressure
  • Network latency

Result: 100% recovery rate


Degrades instead of crashing

  • Slower > down
  • Reduced capacity > failure

Full system visibility

  • Metrics + logs + alerts
  • No blind debugging

Proven performance

  • 500 RPS handled
  • ~45ms latency
  • <5% error rate
  • 0 data loss

Challenges

  • Database errors crashing the app
  • Redis dependency causing failures
  • Connection pool exhaustion
  • Lack of visibility early on
  • Slow queries due to missing indexes

Fixes:

  • Graceful error handling
  • Redis fallback strategy
  • Connection pooling
  • Prometheus + Grafana
  • Database indexing

Accomplishments

  • Fully observable system
  • Graceful degradation across components
  • 7/7 failure scenarios passed
  • 500 RPS achieved
  • Production-grade monitoring and logging

This is not just a working app—it’s a reliable system.


What we learned

  • Graceful degradation is critical
  • Observability is non-negotiable
  • Testing failures is essential
  • Production engineering is about reliability

What’s next

  • Auto-scaling
  • Multi-region deployment
  • Advanced analytics
  • Custom domains
  • Improved caching strategies

Final Note

Vybe started as a simple URL shortener.

But the goal was bigger:

To build a system that survives production—not just works in development.

And that’s exactly what we achieved.

Built With

Share this project:

Updates