Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/volchok96/url-shortener
- Owner: volchok96
- Created: 2024-09-02T15:38:39.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2024-09-15T22:05:52.000Z (4 months ago)
- Last Synced: 2024-10-13T17:23:50.490Z (3 months ago)
- Topics: cicd, docker, golang, sqlite
- Language: Go
- Homepage: https://url-shortener-six-beta.vercel.app
- Size: 39.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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
```