Skip to content

Gasprinskiy/laundry

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Проект с использованием Docker Compose

Описание

Этот проект состоит из нескольких сервисов, работающих в Docker:

  • db (PostgreSQL) — база данных
  • redis — кэш
  • server (Go-приложение) — серверная часть
  • client (Vue-приложение с Nginx) — клиентская часть

Запуск проекта

  1. Запуск и перезапуска происходит через файл:
    ./start_docker.sh

Порядок запуска контейнеров

  1. PostgreSQL (db) — запускается первым, загружает дамп базы из dump.sql.
  2. Redis (redis) — запускается следом.
  3. Go-сервер (server) — поднимается после успешного старта PostgreSQL и Redis (занимает некоторое время пока redis и pg пройдут стадию healthcheck, в терминале появятся логи с путями api контроллера после запуска).
  4. Vue-клиент (client) — собирает vite проект и запускается после сервера, проксируется через Nginx.

Доступ к сервисам

  • Сервер (API): http://localhost:$API_PORT
  • Клиент (Nginx): http://localhost:$NGINX_PORT

.env

Файл .env не добавлен в .gitignore для того что бы проверка работоспособности была удобнее

Архитектура серверного приложения

Серверное приложение написано на Go и организовано по чистой (луковой) архитектуре:

  • config/ — конфигурация приложения связан с envoirment docker контейнера.
  • external/ — контроллер api запросов (внешний слой).
  • internal/ — внутренний слой.
  • internal/repositroy — слой работы с базами данных.
  • internal/usecase — слой бизнес логики.
  • internal/entity — сущностни приложения (структуры данных, константы и т.д).
  • redisclient/ — клиент для работы с Redis.
  • tools/ — вспомогательные утилиты.

Такая реализация дает возможность масштабирования и изолированного тестирования бизнес логики

Архитектура клиентского приложения

Клиентское приложения реализовано с помошью Vue.js 3 со сборщиком Vite

Основные директории

  • components/ — переиспользуемые Vue-компоненты.
  • composables/ — логика, используемая в нескольких компонентах.
  • router/ — маршрутизация Vue.
  • tools/ — вспомогательные утилиты.
  • views/ — страницы приложения.

Пакет API (packages/api)

Содержит логику работы с API сервера, не зависит от реализации клиента и может быть вынесен в отдельный пакет.

  • constants/ — константы, связанные с API (например, URL-эндпоинты, заголовки).
  • methods/ — методы для выполнения запросов к API.
  • types/ — описания типов данных, используемых в API.
  • client/ — абстракция API-клиента.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published