Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/volchok96/url-shortener

Creation of a REST API service for the URL Shortener and deploy it to a virtual server using GitHub Actions.
https://github.com/volchok96/url-shortener

cicd docker golang sqlite

Last synced: about 2 months ago
JSON representation

Creation of a REST API service for the URL Shortener and deploy it to a virtual server using GitHub Actions.

Awesome Lists containing this project

README

        

# url-shortener

url-shortener - это простой и эффективный сервис для сокращения URL-адресов, написанный на Go. Он позволяет пользователям сокращать длинные URL-адреса, управлять ими и перенаправлять на исходные URL-адреса.

## Особенности

- **Сокращение URL**: Преобразование длинных URL-адресов в более короткие и удобные ссылки.
- **Перенаправление**: Перенаправление пользователей с коротких URL-адресов на исходные.
- **Управление URL**: Сохранение и получение сокращенных URL-адресов.
- **Логирование**: Встроенное логирование для мониторинга и отладки.
- **Управление конфигурацией**: Отдельные файлы конфигурации для локальной и производственной среды.
- **Юнит-тесты**: Комплексные юнит-тесты для обеспечения надежности сервиса.
- **Готовность к развертыванию**: Включает конфигурацию развертывания для легкой настройки.
- **Авторизация**: Защита определенных маршрутов с помощью базовой аутентификации.
- **GitHub Actions**: Мануальный деплой.

## Структура проекта

- **cmd/URLShortener/main.go**: Точка входа в приложение.
- **config/**: Содержит файлы конфигурации для разных сред.
- **internal/**:
- **config/**: Управление конфигурацией.
- **http-server/**: Содержит код, связанный с HTTP-сервером, включая обработчики и middleware.
- **lib/**: Утилиты, такие как обработка API ответов, логирование и генерация случайных строк.
- **storage/**: Управление операциями хранения, включая реализацию на SQLite.
- **tests/**: Содержит юнит-тесты для проекта.

## Хендлеры и маршруты

- Обработка перенаправления по сокращенному URL.
- Сохранение новых URL.

## Методы API

- **GET /**: Перенаправление по сокращенному URL.
- **POST /url**: Сохранение нового URL.

## GitHub Actions

Этот проект включает поддержку GitHub Actions для автоматизации деплоя. Развертывание происходит автоматически с использованием Serverless технологий (Vercel).

## Запуск сервера без GitHub Actions

### Необходимые условия

- Go 1.16 или выше
- SQLite3

### Установка

1. Клонирование репозитория:

```sh
git clone https://github.com/volchok96/url-shortener.git
cd url-shortener
```

2. Установите зависимости:

```sh
go mod download
```

### Запуск приложения

1. Запустите сервер:

```sh
go run cmd/url-shortener/main.go
```

2. Сервис будет доступен по адресу `http://localhost:8082`.

### Конфигурация

Файл конфигурации находятся в каталоге `config/`. Вы можете изменить файл `local.yaml` для настройки видимости логов.

### Тестирование

Чтобы запустить функциональные тесты:

```sh
go test ./tests
```