# NoteJS React - Приложение для заметок

Современное PWA приложение для ведения заметок с поддержкой Markdown, изображений, файлов и AI.

## Структура проекта

```
notejs-react/
├── backend/          # Backend сервер (Node.js + Express)
│   ├── database/     # SQLite базы данных
│   ├── public/       # Статические файлы и загрузки
│   ├── server.js     # Основной файл сервера
│   └── package.json  # Зависимости бэкенда
├── src/              # Frontend исходники (React + TypeScript)
│   ├── api/          # API клиенты
│   ├── components/   # React компоненты
│   ├── hooks/        # Кастомные хуки
│   ├── pages/        # Страницы приложения
│   ├── store/        # Redux store
│   ├── styles/       # CSS стили
│   ├── types/        # TypeScript типы
│   └── utils/        # Утилиты
├── public/           # Публичные файлы (иконки, манифест)
└── package.json      # Зависимости фронтенда
```

## Установка

### 1. Установка зависимостей фронтенда

```bash
npm install
```

### 2. Установка зависимостей бэкенда

```bash
cd backend
npm install
cd ..
```

## Запуск

### Вариант 1: Запуск всего приложения (рекомендуется)

```bash
npm start
```

или

```bash
npm run dev:all
```

Это запустит:

- **Frontend** на `http://localhost:5173`
- **Backend** на `http://localhost:3001`

### Вариант 2: Раздельный запуск

**Frontend:**

```bash
npm run dev
```

**Backend (в отдельном терминале):**

```bash
npm run server
```

или

```bash
cd backend
npm start
```

## Функционал

### ✨ Основные возможности

- 📝 Создание и редактирование заметок с Markdown
- 🖼️ Загрузка изображений к заметкам
- 📎 Прикрепление файлов (PDF, DOC, XLS, ZIP и др.)
- 📌 Закрепление важных заметок
- 📦 Архивация заметок
- 🔍 Поиск по заметкам и тегам
- 📅 Календарь заметок
- 🏷️ Система тегов
- 🌓 Светлая/тёмная тема
- 🎨 Настройка цветовой схемы
- 👤 Профили пользователей с аватарами

### 🤖 AI функционал

- Улучшение текста заметок
- Исправление ошибок
- Генерация контента
- Настройка собственного OpenAI-совместимого API

### 📱 PWA

- Установка как приложение
- Работа офлайн (Service Worker)
- Push-уведомления (опционально)
- Адаптивный дизайн для всех устройств

### Markdown поддержка

- Заголовки (H1-H5)
- **Жирный** и _курсив_
- Списки (маркированные и нумерованные)
- ~~Зачеркнутый текст~~
- [Ссылки](https://example.com)
- `Код` и блоки кода
- Todo списки с чекбоксами
- ||Спойлеры||
- Внешние ссылки

## Технологии

### Frontend

- React 18
- TypeScript
- Redux Toolkit
- React Router
- Vite
- Axios
- Marked (Markdown)
- Iconify

### Backend

- Node.js
- Express
- SQLite3
- Bcrypt
- Multer
- Express Session
- Helmet

## Разработка

### Сборка production версии

```bash
npm run build
```

Собранные файлы будут в папке `dist/`.

### Проверка типов

```bash
npm run lint
```

## Конфигурация

### Backend (.env)

Создайте файл `backend/.env`:

```env
PORT=3001
SESSION_SECRET=your-secret-key-here
NODE_ENV=development
ENCRYPTION_KEY=your-encryption-key-min-32-chars
```

**Важно:** 
- `ENCRYPTION_KEY` - ключ для шифрования заметок в базе данных (минимум 32 символа)
- В продакшене ОБЯЗАТЕЛЬНО используйте надежный случайный ключ
- Не используйте дефолтный ключ в продакшене!

### AI настройки

Настройки AI выполняются через интерфейс приложения в разделе "Настройки".

Требуется:

- OpenAI API Key (или ключ совместимого API)
- Base URL (например, `https://api.openai.com/v1/`)
- Модель (например, `gpt-3.5-turbo`)

## Порты

- **Frontend (dev)**: `http://localhost:5173`
- **Backend**: `http://localhost:3001`
- **Старое приложение**: `http://localhost:3000` (если запущено)

## Лицензия

ISC

## Автор

NoteJS Team
