shortify

module
v0.0.0-...-705876c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 16, 2025 License: BSD-3-Clause

README

image

Shortify

Shortify это сервис сокращатель ссылок.

Требования

  • Task - для удобного запуска заготовленных задач (команд);
  • Docker - все задачи выполняются в Docker контейнерах, что избавляет от необходимости устанавливать какие-либо зависимости.

Быстрый старт

Подготовьте файл с переменными окружения

Можно просто взять файл .env.example и убрать окончание .example.

mv .env.example .env

Параметр PERSISTENCE_TYPE отвечает за тип хранилища ссылок.
Доступно inmemory и postgres.

Запуск всего приложения
task start

Команда запустит базу данных PostgreSQL, применит все миграции и запустит HTTP сервер.
По адресу http://localhost:8080/swagger/index.html можно будет открыть Swagger документацию.

Запуск юнит-тестов
task unit-test

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

Сервис разработан согласно принципам SOLID и чистой архитектуры для большей поддерживаемости и масштабируемости.

.
├── cmd
│   └── api-server            # команда, запускающая API сервер
├── configs
├── docs                      # Swagger документация
├── internal
│   ├── config
│   ├── delivery              # способы доставки данных в наше приложение будь то http, cli или kafka
│   │   └── http              # REST API
│   │       └── v1            # версионирование REST API
│   ├── domain                # доменный слой, который содержит всего одну сущность - URL
│   ├── dto                   # DTO сервисов для общения со слоем контроллеров.
│   ├── generation            # реализация различных схем предоставления коротких ссылок
│   │   └── rand              # генерация на основе пакета crypto/rand
│   │   └── kgs               # здесь же могла бы быть реализация, обращающаяся к какому-то внешнему сервису (Key Generation Service)
│   ├── persistence           # реализации различных схем хранения данных
│   │   └── inmemory          # в памяти
│   │   └── postgres          # в базе данных
│   └── url                   # сервисный слой
├── migrations
├── v1                        # DTO http контроллеров
│   └── url.go                # и одновременно это пакет для других Go'шных сервисов. Здесь же можно предоставить HTTP клиент
├── .env.example
├── .mockery.yaml             # конфигурация mockery для генерации моков
├── Dockerfile
├── docker-compose.yaml
├── go.mod
├── go.sum

Directories

Path Synopsis
cmd
api-server command
Package docs Code generated by swaggo/swag.
Package docs Code generated by swaggo/swag.
internal
dto
url

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL