Skip to content

DobryySoul/pdfium

Repository files navigation

PDFium

PDFium — это backend-сервис на языке Go, предоставляющий API для аутентификации пользователей и работы с PDF-файлами (в данный момент реализована загрузка файлов, планируется конвертация в изображения). Проект спроектирован с применением Clean Architecture (Чистой архитектуры) и использует высокопроизводительный фреймворк Fiber.

Технологический стек

  • Язык: Go 1.24
  • Web-фреймворк: Fiber v3
  • База данных: PostgreSQL (через jackc/pgx/v5)
  • Кэширование: Redis (redis/go-redis/v9)
  • Логирование: Zap (go.uber.org/zap)
  • Управление конфигурацией: Cleanenv (ilyakaznacheev/cleanenv)
  • Безопасность: JWT-токены (pkg/jwt), хэширование паролей (golang.org/x/crypto)

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

Проект организован по стандартам Go Standard Project Layout в сочетании с Clean Architecture:

.
├── cmd/                # Точки входа приложения (например, main.go)
│   └── main.go         # Запуск приложения
├── config/             # Конфигурационные файлы
│   └── config.yaml     # Основной файл конфигурации
├── internal/           # Приватный код приложения (бизнес-логика)
│   ├── app/            # Инициализация приложения, внедрение зависимостей (DI) и запуск сервера
│   ├── config/         # Структуры данных и функции для загрузки конфигурации
│   ├── entity/         # Основные доменные сущности (User, Request и т.д.)
│   ├── handlers/       # Транспортный слой: HTTP-роутинг и обработчики (Fiber)
│   ├── repository/     # Слой доступа к данным: запросы к PostgreSQL
│   └── usecase/        # Слой бизнес-логики: сервисы для аутентификации и работы с PDF
├── logs/               # Директория для файлов с логами работы приложения
├── migrations/         # SQL-скрипты миграций базы данных
└── pkg/                # Общие библиотеки и утилиты (можно переиспользовать)
    ├── jwt/            # Утилиты для работы с JSON Web Tokens
    ├── logger/         # Настройка и обертки для логгера Zap
    ├── postgres/       # Клиент и пул подключений для PostgreSQL
    └── redis/          # Инициализация подключения к Redis

Основной функционал

  • Аутентификация (Auth):
    • /register — Регистрация новых пользователей.
    • /login — Авторизация пользователей и выдача JWT-токенов.
  • Работа с PDF:
    • Загрузка PDF-файлов на сервер (UploadPdfFile).
    • Безопасное переименование и сохранение загруженных файлов в файловую систему.
    • (В разработке) Конвертация PDF-страниц в изображения.

Архитектура

Приложение разделено на независимые слои (Clean Architecture):

  1. Handlers (Транспортный слой): Принимает HTTP-запросы, валидирует входящие данные (например, entity.DoRegister, entity.DoLogin) и передает их в слой бизнес-логики.
  2. Usecase (Слой бизнес-логики): Содержит основные правила приложения (регистрация, генерация токенов, логика загрузки файлов). Не зависит от HTTP или базы данных.
  3. Repository (Слой данных): Реализует интерфейсы, необходимые Usecase слою, выполняя реальные запросы в базу данных PostgreSQL.

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

(Инструкции по запуску можно дополнить, например:)

# 1. Запуск инфраструктуры (БД, Redis) через Docker
docker-compose up -d

# 2. Применение миграций базы данных
# ...

# 3. Запуск сервиса
go run cmd/main.go

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors