Skip to content

About

URL Shortener with analytics (fiber, postgresql, redis)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

URL Shortener - Сервис сокращения URL с аналитикой

Сервис принимает оригинальные адреса и генерирует из них короткие. При переходе на короткий адрес - перенаправляет пользователя на оригинальный URL и собирает статистику по переходам: кто перешёл, когда, с какого устройства и браузера.

Старт

Обзор

{
		v1.NewLinkRoutes(apiV1Group, lk, l, baseURL+"/v1")
}

{
		v2.NewLinkRoutes(apiV1Group, lk, l, baseURL+"/v2")
}

Запуск

  1. Клонируйте репозиторий
  2. В корне создайте .env файл, скопируйте туда содержимое env.example - cp .env.example .env
  3. Выполните, дождитесь запуска сервиса
    make compose-up
    
  4. Перейдите на http://localhost:8080/v1/web и пользуйтесь сервисом.
image

API

request:

{
    "url": "https://www.rbc.ru/person/680a00fa9a79477f2728e7a2",
    "custom_alias": "messi"
}

response:

{
    "original_url": "https://www.rbc.ru/person/680a00fa9a79477f2728e7a2",
    "short_url": "http://localhost:8080/v1/s/messi"
}

request:

GET http://localhost:8080/v1/s/messi

response: 301 redirect

request:

GET http://localhost:8080/v1/analytics/messi

response:

{
    "analytics": {
        "total_clicks": 12,
        "clicks_by_browser": [
            {
                "browser": "Firefox",
                "clicks": 5
            },
            {
                "browser": "Chrome",
                "clicks": 7
            }
        ],
        "clicks_by_device": [
            {
                "device": "Desktop",
                "clicks": 7
            },
            {
                "device": "Mobile",
                "clicks": 5
            }
        ],
        "recent_clicks": [
            {
                "date": "2026-01-30",
                "clicks": 7
            },
            {
                "date": "2026-01-29",
                "clicks": 5
            }
        ]
    }
}

request:

GET http://localhost:8080/v1/analytics/messi?group-by=day

response:

{
    "analytics": {
        "recent_clicks": [
            {
                "date": "2026-01-30",
                "clicks": 7
            },
            {
                "date": "2026-01-29",
                "clicks": 5
            }
        ]
    }
}

request:

GET http://localhost:8080/v1/analytics/messi?group-by=month

response:

{
    "analytics": {
        "recent_clicks": [
            {
                "date": "2026-01",
                "clicks": 12
            }
        ]
    }
}

request:

GET http://localhost:8080/v1/analytics/messi?group-by=browser

response:

{
    "analytics": {
        "clicks_by_browser": [
            {
                "browser": "Firefox",
                "clicks": 7
            },
            {
                "browser": "Chrome",
                "clicks": 5
            }
        ]
    }
}

request:

GET http://localhost:8080/v1/analytics/messi?group-by=device

response:

{
    "analytics": {
        "clicks_by_device": [
            {
                "device": "Desktop",
                "clicks": 7
            },
            {
                "device": "Mobile",
                "clicks": 5
            }
        ]
    }
}

Прочие make команды

Зависимости:

make deps

docker compose down -v:

make compose-down

About

URL Shortener with analytics (fiber, postgresql, redis)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages