GoCode

command module
v0.0.0-...-aa89e4c Latest Latest
Warning

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

Go to latest
Published: Jul 22, 2024 License: MIT Imports: 1 Imported by: 0

README

GoCode - платформа для изучения go. Тут можно проходить тесты, решать задачи и изучать go с нуля!

Разработан многостраничный сайт, который поддерживает REST, gRPC, работу с базами данных, docker, k8s и тд

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

Архитектура вашего проекта организована согласно современным практикам для облегчения разработки, тестирования, поддержки и развертывания. Рассмотрим каждый раздел структуры вашего проекта, его назначение и причины, почему такая структура полезна.

Основная структура проекта

C:.
├───.github
│   └───workflows
├───.vscode
├───api
│   ├───grpc
│   │   ├───gen
│   │   │   └───pb-go
│   │   │       └───com.user_data
│   │   ├───proto
│   │   └───server
│   └───rest
├───cmd
├───internal
│   ├───app
│   ├───config
│   │   └───secrets
│   ├───db
│   └───middleware
├───migrations
├───pkg
├───scripts
├───test
└───web
    ├───app
    ├───static
    │   ├───assets
    │   ├───css
    │   └───js
    └───templates

Подробный разбор

.github

Этот каталог содержит конфигурации для GitHub Actions. GitHub Actions - это CI/CD инструмент для автоматизации задач сборки, тестирования и развертывания вашего проекта. Размещение конфигураций CI/CD в репозитории позволяет автоматизировать эти процессы при каждом изменении кода.

  • .github/workflows - файлы рабочих процессов для GitHub Actions.

.vscode

Этот каталог содержит конфигурации для редактора Visual Studio Code. Настройки и расширения, специфичные для проекта, размещены здесь, что позволяет разработчикам иметь единое окружение.

api

Этот каталог организует код, связанный с API. Обычно используется для отделения логики, связанной с API, от остальной части кода.

  • grpc - код, связанный с gRPC API.
    • gen - сгенерированный код из proto файлов.
      • pb-go - сгенерированный Go код.
        • com.user_data - подкаталог для определенного набора данных.
    • proto - proto файлы, используемые для генерации gRPC кода.
    • server - серверная логика для gRPC API.
  • rest - код, связанный с REST API.

cmd

Каталог cmd используется для размещения точек входа вашего приложения. Например, если у вас есть несколько приложений в одном репозитории, каждое из них будет иметь свой подкаталог в cmd, содержащий main.go.

internal

Каталог internal содержит внутренние пакеты, которые не предназначены для использования вне вашего проекта. Этот механизм обеспечивает инкапсуляцию и защищает внутренние детали реализации.

  • app - основная логика приложения.
  • config - конфигурационные файлы и их обработка.
    • secrets - секреты и конфиденциальные данные.
  • db - код, связанный с базой данных.
  • middleware - промежуточное ПО для обработки запросов.

migrations

Каталог migrations используется для хранения файлов миграций базы данных. Эти файлы используются для создания, изменения и управления схемой базы данных.

pkg

Каталог pkg используется для пакетов, которые могут быть переиспользованы в других проектах. Этот подход помогает создавать модули, которые можно легко импортировать и использовать вне основного проекта.

scripts

Каталог scripts используется для хранения вспомогательных скриптов для автоматизации задач, таких как развертывание, сборка или обслуживание.

test

Каталог test используется для хранения тестов, которые могут быть организованы отдельно от кода. Это позволяет поддерживать тесты в чистоте и легко управлять ими.

web

Каталог web содержит веб-ресурсы и фронтенд-код.

  • app - основное приложение фронтенда.
  • static - статические файлы, такие как изображения, CSS, JavaScript.
    • assets - ассеты, такие как изображения и шрифты.
    • css - стили CSS.
    • js - JavaScript файлы.
  • templates - HTML шаблоны, используемые сервером для рендеринга страниц.

Почему такая структура важна

  1. Модульность: Деление проекта на модули (каталоги) позволяет управлять кодом более эффективно. Каждый модуль может разрабатываться, тестироваться и изменяться независимо от других.

  2. Читаемость и поддерживаемость: Организованный код легче читать и поддерживать. Новые разработчики могут быстро понять структуру проекта и найти необходимые файлы.

  3. Инкапсуляция: Использование internal для защиты внутренних деталей реализации помогает предотвратить непреднамеренное использование этих деталей в других частях проекта или в других проектах.

  4. Тестируемость: Четкая структура помогает в написании и поддержке тестов. Разделение тестов и основного кода улучшает управляемость и ясность.

  5. Автоматизация: Наличие конфигураций для CI/CD в .github и скриптов в scripts помогает автоматизировать сборку, тестирование и развертывание, что повышает эффективность разработки и уменьшает количество ошибок.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
api
grpc command
grpc/server command
rest command
internal
db
web
app command

Jump to

Keyboard shortcuts

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