An open API service indexing awesome lists of open source software.

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

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 для заметок
- Расширение функционала погодного модуля (прогноз на несколько дней, выбор источников)
- Написание тестов
- Добавление более детальной валидации и обработки ошибок
-