Проект представляет собой простой REST API для заметок, написанный на
Go, с использованием PostgreSQL, JWT‑аутентификации, и
классической структуры проекта internal/.
⚠️ Проект не завершён и находится в активной разработке.
Его цель --- развитие навыков backend‑разработки, архитектурного проектирования и работы с Go.
internal/
├── auth/ # JWT-токены, Claims
│ ├── claims.go
│ └── jwt.go
├── handlers/ # HTTP-обработчики, middleware
│ ├── auth.go
│ ├── errors.go
│ ├── middleware.go
│ └── notes.go
├── models/ # Модели данных
│ ├── note.go
│ └── user.go
├── storage/ # Работа с БД
│ ├── db.go
│ ├── notes.go
│ └── users.go
└── migrations/ # SQL-миграции
├── 001_create_notes.sql
└── 002_create_users.sql
Dockerfile
docker-compose.yml
main.go
README.md
Проект построен по простой многослойной архитектуре:
HTTP-слой:\
- принимает запросы\
- вызывает бизнес‑логику из storage\
- возвращает JSON-ответы\
middleware.goвыполняет JWT-проверку
Слой доступа к данным:\
- работа с PostgreSQL\
- запросы для пользователей и заметок\
- подключение к БД (
db.go)
Модуль JWT:\
- генерация токена\
- структура Claims\
- проверка токена
Простые структуры моделей (DTO):\
- User\
- Note
SQL-файлы для создания таблиц notes и users.
POST /auth/login
{
"username": "roman",
"password": "12345"
}Ответ:
{
"token": "<jwt_token>"
}GET /notes Headers:
Authorization: Bearer <jwt>
POST /notes
{
"title": "Новая заметка",
"content": "Текст заметки"
}PUT /notes/1
{
"title": "Обновлено",
"content": "Новый текст"
}DELETE /notes/1
docker-compose up --build
go mod tidy
go run main.go