{"id":27247180,"url":"https://github.com/ivan-knyazev/organizer","last_synced_at":"2026-04-04T20:33:36.092Z","repository":{"id":287103377,"uuid":"954962221","full_name":"Ivan-Knyazev/organizer","owner":"Ivan-Knyazev","description":"Pet-project to create a modular service for personal effectiveness management. The development was started as part of the course \"Client-server applications\" at NUST MISIS, 2025","archived":false,"fork":false,"pushed_at":"2025-04-10T11:12:48.000Z","size":17,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-10T22:48:46.894Z","etag":null,"topics":["docker","docker-compose","gin-gonic","golang","react","rest-api"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ivan-Knyazev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-25T22:19:50.000Z","updated_at":"2025-04-10T11:12:53.000Z","dependencies_parsed_at":"2025-04-10T01:25:16.687Z","dependency_job_id":"1c84972c-9611-420c-a27d-930e6c6794f7","html_url":"https://github.com/Ivan-Knyazev/organizer","commit_stats":null,"previous_names":["ivan-knyazev/organizer"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ivan-Knyazev%2Forganizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ivan-Knyazev%2Forganizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ivan-Knyazev%2Forganizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ivan-Knyazev%2Forganizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ivan-Knyazev","download_url":"https://codeload.github.com/Ivan-Knyazev/organizer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248312197,"owners_count":21082637,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-compose","gin-gonic","golang","react","rest-api"],"created_at":"2025-04-10T22:48:51.160Z","updated_at":"2025-12-30T23:05:06.652Z","avatar_url":"https://github.com/Ivan-Knyazev.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Organizer - Многофункциональный Инструмент для Личной Эффективности\r\n\r\n\u003cb\u003eOrganizer\u003c/b\u003e - это проект, нацеленный на создание удобного многофункционального инструмента для управления личной эффективностью. Данное приложение задумано для помощи в повседневной жизни, потребность в котором есть у меня самого. Реализация в виде модулей задумана для возможности лёгкого внедрения необходимого функционала.\r\n\r\n## Содержание\r\n\r\n- [Organizer - Многофункциональный Инструмент для Личной Эффективности](#organizer---многофункциональный-инструмент-для-личной-эффективности)\r\n  - [Содержание](#содержание)\r\n  - [Описание проекта](#описание-проекта)\r\n  - [Стек технологий](#стек-технологий)\r\n  - [Структура проекта](#структура-проекта)\r\n  - [Реализованный функционал](#реализованный-функционал)\r\n    - [Основные модули:](#основные-модули)\r\n    - [Frontend:](#frontend)\r\n    - [Backend:](#backend)\r\n  - [Инструкции по запуску](#инструкции-по-запуску)\r\n    - [Backend (Go + PostgreSQL)](#backend-go--postgresql)\r\n    - [Frontend (React)](#frontend-react)\r\n  - [Дальнейшие планы](#дальнейшие-планы)\r\n\r\n## Описание проекта\r\n\r\nПроект представляет собой модульную систему, позволяющую легко интегрировать новые компоненты для управления различными аспектами личной продуктивности. Текущая реализация включает модули для заметок, базы знаний и получения информации о погоде.\r\n\r\n## Стек технологий\r\n\r\n**Backend:**\r\n- **Язык:** Go (Golang)\r\n- **Фреймворк:** Gin\r\n- **База данных:** PostgreSQL\r\n- **ORM:** GORM\r\n- **Аутентификация:** JWT (JSON Web Tokens)\r\n- **API Документация:** Swagger (OpenAPI) с использованием `swag` и `gin-swagger`\r\n- **Контейнеризация БД:** Docker, Docker Compose\r\n\r\n**Frontend:**\r\n- **Библиотека:** React\r\n- **Маршрутизация:** React Router DOM\r\n- **HTTP-клиент:** Axios\r\n- **Сборщик:** Create React App (`react-scripts`)\r\n- **Стилизация:** CSS (глобальный `style.css`)\r\n- **Управление состоянием (базовое):** React Context API (для аутентификации)\r\n\r\n**Общие инструменты:**\r\n- **Система контроля версий:** Git\r\n- **Менеджер пакетов (Frontend):** npm (или yarn)\r\n\r\n## Структура проекта\r\n```\r\n    .\r\n    ├── frontend/ # Директория Frontend (React приложение)\r\n    │ ├── public/\r\n    │ ├── src/\r\n    │ ├── package.json\r\n    │ └── README.md # Инструкции по запуску Frontend\r\n    ├── backend/ # Директория Backend (Go приложение)\r\n    │ ├── config/\r\n    │ ├── handlers/\r\n    │ ├── middleware/\r\n    │ ├── models/\r\n    │ ├── routes/\r\n    │ ├── utils/\r\n    │ ├── docs/ # Сгенерированная Swagger документация\r\n    │ ├── main.go\r\n    │ ├── go.mod\r\n    │ ├── docker-compose.yml\r\n    │ └── README.md # Инструкции по запуску Backend\r\n    ├── .gitignore\r\n    └── README.md # Этот файл (главный README)\r\n```\r\n\r\n## Реализованный функционал\r\n\r\n### Основные модули:\r\n1.  **Аутентификация пользователей:**\r\n    *   Регистрация новых пользователей.\r\n    *   Вход существующих пользователей с использованием JWT.\r\n    *   Защита маршрутов для авторизованных пользователей.\r\n    *   Выход из системы.\r\n2.  **Профиль пользователя:**\r\n    *   Отображение данных пользователя (email, ФИО, возраст, контакты).\r\n    *   Редактирование данных профиля.\r\n    *   Смена пароля.\r\n    *   Отображение хеш-строки для привязки Telegram-бота (функционал бота не реализован).\r\n3.  **Заметки:**\r\n    *   Создание новых текстовых заметок (с заголовком и содержанием).\r\n    *   Получение списка заметок пользователя с пагинацией.\r\n    *   Редактирование существующих заметок.\r\n    *   Удаление заметок.\r\n    *   Отображение последней заметки на главной странице для авторизованных пользователей.\r\n4.  **База Знаний (ссылки):**\r\n    *   Добавление новых ссылок на удаленные ресурсы с заголовком/описанием.\r\n    *   Получение списка всех сохраненных ссылок пользователя.\r\n    *   Удаление ссылок.\r\n    *   Отображение общего количества ссылок на главной странице для авторизованных пользователей.\r\n5.  **Погода:**\r\n    *   Получение краткой сводки об актуальной информации о погоде для заданного города.\r\n    *   Агрегация данных из нескольких источников (OpenWeatherMap, WeatherAPI.com, Open-Meteo) на стороне бэкенда.\r\n    *   Отображение виджета погоды для Москвы по умолчанию на главной странице.\r\n\r\n### Frontend:\r\n- Реализованы все основные экраны: Главный, Авторизации/Регистрации, Профиля, Погоды, Заметок, Базы знаний, Страница 404.\r\n- Динамическое отображение контента в зависимости от статуса аутентификации.\r\n- Обработка состояний загрузки и ошибок при взаимодействии с API.\r\n\r\n### Backend:\r\n- Реализованы REST API эндпоинты для всех вышеперечисленных функций.\r\n- Использование PostgreSQL для хранения данных.\r\n- JWT-аутентификация для защиты эндпоинтов.\r\n- Автоматическая генерация Swagger (OpenAPI) документации.\r\n\r\n## Инструкции по запуску\r\n\r\nДля полного запуска приложения необходимо запустить Backend и Frontend части.\r\n\r\n### Backend (Go + PostgreSQL)\r\nПодробные инструкции находятся в файле [backend/README.md](./backend/README.md).\r\n\r\n**Кратко:**\r\n1.  Установите Go, Docker и Docker Compose.\r\n2.  Перейдите в директорию `backend`.\r\n3.  Создайте файл `.env` на основе примера (укажите API ключи для погоды).\r\n4.  Запустите базу данных: `docker-compose up -d`.\r\n5.  Установите зависимости: `go mod tidy`.\r\n6.  (Опционально) Сгенерируйте Swagger документацию: `swag init`.\r\n7.  Запустите сервер: `go run main.go`.\r\n\r\n### Frontend (React)\r\nПодробные инструкции находятся в файле [frontend/README.md](./frontend/README.md).\r\n\r\n**Кратко:**\r\n1.  Установите Node.js и npm (или yarn).\r\n2.  Перейдите в директорию `frontend`.\r\n3.  Установите зависимости: `npm install` (или `yarn install`).\r\n4.  Убедитесь, что переменная `REACT_APP_API_BASE_URL` в `.env` файле фронтенда (если используется) или значение по умолчанию в `src/services/api.js` указывает на ваш запущенный бэкенд (например, `http://localhost:8080/api`).\r\n5.  Запустите приложение: `npm start` (или `yarn start`).\r\n\r\n## Дальнейшие планы\r\n- Реализация функционала Telegram-бота\r\n- Внедрение модуля \"Блог\"\r\n- Интеграция с файловым хранилищем (S3)\r\n- Добавление Rich Text Editor для заметок\r\n- Расширение функционала погодного модуля (прогноз на несколько дней, выбор источников)\r\n- Написание тестов\r\n- Добавление более детальной валидации и обработки ошибок\r\n- ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivan-knyazev%2Forganizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fivan-knyazev%2Forganizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivan-knyazev%2Forganizer/lists"}