Skip to content

Проект представляет собой простой REST API для заметок, написанный на Go, с использованием PostgreSQL, JWT‑аутентификации, и классической структуры проекта internal/.

Notifications You must be signed in to change notification settings

ryabikinroman/notes-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Notes API (WIP)

Проект представляет собой простой 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  

🧱 Архитектура

Проект построен по простой многослойной архитектуре:

1. handlers/

HTTP-слой:\

  • принимает запросы\
  • вызывает бизнес‑логику из storage\
  • возвращает JSON-ответы\
  • middleware.go выполняет JWT-проверку

2. storage/

Слой доступа к данным:\

  • работа с PostgreSQL\
  • запросы для пользователей и заметок\
  • подключение к БД (db.go)

3. auth/

Модуль JWT:\

  • генерация токена\
  • структура Claims\
  • проверка токена

4. models/

Простые структуры моделей (DTO):\

  • User\
  • Note

5. migrations/

SQL-файлы для создания таблиц notes и users.


📌 Примеры запросов (Postman)

1. Авторизация

POST /auth/login

{
  "username": "roman",
  "password": "12345"
}

Ответ:

{
  "token": "<jwt_token>"
}

2. Получить все заметки

GET /notes Headers:

Authorization: Bearer <jwt>

3. Создать заметку

POST /notes

{
  "title": "Новая заметка",
  "content": "Текст заметки"
}

4. Обновить заметку

PUT /notes/1

{
  "title": "Обновлено",
  "content": "Новый текст"
}

5. Удалить заметку

DELETE /notes/1


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

1. Запуск через Docker

docker-compose up --build

2. Запуск локально

go mod tidy
go run main.go

About

Проект представляет собой простой REST API для заметок, написанный на Go, с использованием PostgreSQL, JWT‑аутентификации, и классической структуры проекта internal/.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published