https://github.com/ivan-knyazev/organizer
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
https://github.com/ivan-knyazev/organizer
docker docker-compose gin-gonic golang react rest-api
Last synced: 3 months ago
JSON representation
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
- Host: GitHub
- URL: https://github.com/ivan-knyazev/organizer
- Owner: Ivan-Knyazev
- Created: 2025-03-25T22:19:50.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-04-10T11:12:48.000Z (about 1 year ago)
- Last Synced: 2025-04-10T22:48:46.894Z (about 1 year ago)
- Topics: docker, docker-compose, gin-gonic, golang, react, rest-api
- Language: HTML
- Homepage:
- Size: 16.6 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Organizer - Многофункциональный Инструмент для Личной Эффективности
Organizer - это проект, нацеленный на создание удобного многофункционального инструмента для управления личной эффективностью. Данное приложение задумано для помощи в повседневной жизни, потребность в котором есть у меня самого. Реализация в виде модулей задумана для возможности лёгкого внедрения необходимого функционала.
## Содержание
- [Organizer - Многофункциональный Инструмент для Личной Эффективности](#organizer---многофункциональный-инструмент-для-личной-эффективности)
- [Содержание](#содержание)
- [Описание проекта](#описание-проекта)
- [Стек технологий](#стек-технологий)
- [Структура проекта](#структура-проекта)
- [Реализованный функционал](#реализованный-функционал)
- [Основные модули:](#основные-модули)
- [Frontend:](#frontend)
- [Backend:](#backend)
- [Инструкции по запуску](#инструкции-по-запуску)
- [Backend (Go + PostgreSQL)](#backend-go--postgresql)
- [Frontend (React)](#frontend-react)
- [Дальнейшие планы](#дальнейшие-планы)
## Описание проекта
Проект представляет собой модульную систему, позволяющую легко интегрировать новые компоненты для управления различными аспектами личной продуктивности. Текущая реализация включает модули для заметок, базы знаний и получения информации о погоде.
## Стек технологий
**Backend:**
- **Язык:** Go (Golang)
- **Фреймворк:** Gin
- **База данных:** PostgreSQL
- **ORM:** GORM
- **Аутентификация:** JWT (JSON Web Tokens)
- **API Документация:** Swagger (OpenAPI) с использованием `swag` и `gin-swagger`
- **Контейнеризация БД:** Docker, Docker Compose
**Frontend:**
- **Библиотека:** React
- **Маршрутизация:** React Router DOM
- **HTTP-клиент:** Axios
- **Сборщик:** Create React App (`react-scripts`)
- **Стилизация:** CSS (глобальный `style.css`)
- **Управление состоянием (базовое):** React Context API (для аутентификации)
**Общие инструменты:**
- **Система контроля версий:** Git
- **Менеджер пакетов (Frontend):** npm (или yarn)
## Структура проекта
```
.
├── frontend/ # Директория Frontend (React приложение)
│ ├── public/
│ ├── src/
│ ├── package.json
│ └── README.md # Инструкции по запуску Frontend
├── backend/ # Директория Backend (Go приложение)
│ ├── config/
│ ├── handlers/
│ ├── middleware/
│ ├── models/
│ ├── routes/
│ ├── utils/
│ ├── docs/ # Сгенерированная Swagger документация
│ ├── main.go
│ ├── go.mod
│ ├── docker-compose.yml
│ └── README.md # Инструкции по запуску Backend
├── .gitignore
└── README.md # Этот файл (главный README)
```
## Реализованный функционал
### Основные модули:
1. **Аутентификация пользователей:**
* Регистрация новых пользователей.
* Вход существующих пользователей с использованием JWT.
* Защита маршрутов для авторизованных пользователей.
* Выход из системы.
2. **Профиль пользователя:**
* Отображение данных пользователя (email, ФИО, возраст, контакты).
* Редактирование данных профиля.
* Смена пароля.
* Отображение хеш-строки для привязки Telegram-бота (функционал бота не реализован).
3. **Заметки:**
* Создание новых текстовых заметок (с заголовком и содержанием).
* Получение списка заметок пользователя с пагинацией.
* Редактирование существующих заметок.
* Удаление заметок.
* Отображение последней заметки на главной странице для авторизованных пользователей.
4. **База Знаний (ссылки):**
* Добавление новых ссылок на удаленные ресурсы с заголовком/описанием.
* Получение списка всех сохраненных ссылок пользователя.
* Удаление ссылок.
* Отображение общего количества ссылок на главной странице для авторизованных пользователей.
5. **Погода:**
* Получение краткой сводки об актуальной информации о погоде для заданного города.
* Агрегация данных из нескольких источников (OpenWeatherMap, WeatherAPI.com, Open-Meteo) на стороне бэкенда.
* Отображение виджета погоды для Москвы по умолчанию на главной странице.
### Frontend:
- Реализованы все основные экраны: Главный, Авторизации/Регистрации, Профиля, Погоды, Заметок, Базы знаний, Страница 404.
- Динамическое отображение контента в зависимости от статуса аутентификации.
- Обработка состояний загрузки и ошибок при взаимодействии с API.
### Backend:
- Реализованы REST API эндпоинты для всех вышеперечисленных функций.
- Использование PostgreSQL для хранения данных.
- JWT-аутентификация для защиты эндпоинтов.
- Автоматическая генерация Swagger (OpenAPI) документации.
## Инструкции по запуску
Для полного запуска приложения необходимо запустить Backend и Frontend части.
### Backend (Go + PostgreSQL)
Подробные инструкции находятся в файле [backend/README.md](./backend/README.md).
**Кратко:**
1. Установите Go, Docker и Docker Compose.
2. Перейдите в директорию `backend`.
3. Создайте файл `.env` на основе примера (укажите API ключи для погоды).
4. Запустите базу данных: `docker-compose up -d`.
5. Установите зависимости: `go mod tidy`.
6. (Опционально) Сгенерируйте Swagger документацию: `swag init`.
7. Запустите сервер: `go run main.go`.
### Frontend (React)
Подробные инструкции находятся в файле [frontend/README.md](./frontend/README.md).
**Кратко:**
1. Установите Node.js и npm (или yarn).
2. Перейдите в директорию `frontend`.
3. Установите зависимости: `npm install` (или `yarn install`).
4. Убедитесь, что переменная `REACT_APP_API_BASE_URL` в `.env` файле фронтенда (если используется) или значение по умолчанию в `src/services/api.js` указывает на ваш запущенный бэкенд (например, `http://localhost:8080/api`).
5. Запустите приложение: `npm start` (или `yarn start`).
## Дальнейшие планы
- Реализация функционала Telegram-бота
- Внедрение модуля "Блог"
- Интеграция с файловым хранилищем (S3)
- Добавление Rich Text Editor для заметок
- Расширение функционала погодного модуля (прогноз на несколько дней, выбор источников)
- Написание тестов
- Добавление более детальной валидации и обработки ошибок
-