# Introduction

A URL shortener microservice built with Ruby on Rails 8. Given a target URL, it generates a short code, scrapes the page title/metadata, tracks every visit with geolocation, and presents a per-link analytics view.

🔗 **Live demo:** <https://url-shortener-fqp5.onrender.com> *(demo only — data may be reset at any time)*

## Overview

| Feature             | Details                                                                        |
| ------------------- | ------------------------------------------------------------------------------ |
| **Framework**       | Ruby on Rails 8                                                                |
| **Database**        | PostgreSQL (single database — primary DB hosts app data, cache, queue & cable) |
| **Background Jobs** | SolidQueue (runs on primary DB, no external broker required)                   |
| **Caching**         | SolidCache (runs on primary DB, 12-hour TTL on short code lookups)             |
| **Realtime**        | SolidCable (runs on primary DB)                                                |
| **Geolocation**     | MaxMind GeoLite2                                                               |
| **Asset Pipeline**  | Importmap + TailwindCSS                                                        |

## Quick Links

* [Requirements](https://jake-yin.gitbook.io/simple-url-shortener/getting-started/requirements)
* [Installation & Setup](https://jake-yin.gitbook.io/simple-url-shortener/getting-started/installation)
* [Running the Application](https://jake-yin.gitbook.io/simple-url-shortener/getting-started/running)
* [Short URL Path Strategy](https://jake-yin.gitbook.io/simple-url-shortener/architecture/short-url-strategy)
* [Strengths](https://jake-yin.gitbook.io/simple-url-shortener/project-notes/strengths)
* [Limitations](https://jake-yin.gitbook.io/simple-url-shortener/project-notes/limitations)
