diff --git a/.gitignore b/.gitignore index e1b049b..a0e03f0 100644 --- a/.gitignore +++ b/.gitignore @@ -33,4 +33,26 @@ Thumbs.db dist/ build/ -.cursor/ \ No newline at end of file +# Cursor IDE +.cursor/ + +# Загруженные файлы пользователей +public/uploads/ + +# Тестовые файлы +test-icons.html + +# Планы и заметки разработчика +планы.txt +*.txt + +# Скриншоты +*.png +*.jpg +*.jpeg +*.gif +*.webp + +# Временные файлы +*.tmp +*.temp \ No newline at end of file diff --git a/README.md b/README.md index e737285..97c6105 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,16 @@ ## Особенности - 🚀 Создано на Node.js + Express -- 🔐 **Система регистрации и авторизации по логину и паролю** (NEW!) +- 🔐 **Система регистрации и авторизации по логину и паролю** - 🔒 Безопасное хранение паролей с bcrypt хешированием - 💾 Хранение данных в SQLite базе данных -- 👥 **Изолированные заметки - каждый пользователь видит только свои заметки** (NEW!) +- 👥 **Изолированные заметки - каждый пользователь видит только свои заметки** +- 👤 **Личный кабинет с возможностью загрузки аватарки** (NEW!) +- 🖼️ **Управление аватаркой: загрузка, удаление, предварительный просмотр** (NEW!) - 📝 Поддержка Markdown форматирования +- 🏷️ **Система тегов с автоматическим извлечением из заметок** (NEW!) +- 🔍 **Поиск по заметкам с подсветкой результатов** (NEW!) +- 📅 **Мини-календарь для навигации по датам заметок** (NEW!) - 🎨 Простой и интуитивный интерфейс - 📱 Адаптивный дизайн @@ -98,6 +103,27 @@ npm start 1. Нажмите кнопку "Удалить" рядом с заметкой 2. Подтвердите удаление в появившемся диалоговом окне +### Личный кабинет + +1. Нажмите на ваше имя пользователя в верхней части страницы заметок +2. В личном кабинете вы можете: + - **Загрузить аватарку**: нажмите "Загрузить аватар" и выберите изображение (JPG, PNG, GIF до 5 МБ) + - **Удалить аватарку**: нажмите кнопку "Удалить" рядом с аватаркой + - **Изменить данные профиля**: отредактируйте логин и email + - **Изменить пароль**: введите текущий пароль и новый пароль + +### Поиск и фильтрация + +1. **Поиск по заметкам**: используйте поле поиска в левой панели для поиска по содержимому заметок +2. **Фильтрация по тегам**: кликайте на теги в левой панели для фильтрации заметок +3. **Навигация по календарю**: кликайте на даты в мини-календаре для просмотра заметок за определенный день + +### Теги + +- Теги автоматически извлекаются из заметок при использовании символа `#` (например: `#важное`) +- Теги отображаются в левой панели с количеством заметок +- Кликабельные теги в заметках позволяют быстро фильтровать контент + ### Выход из системы Нажмите кнопку "🚪 Выйти" в верхней части страницы заметок @@ -108,14 +134,18 @@ npm start NoteJS/ ├── public/ # Статические файлы (клиентская часть) │ ├── index.html # Страница входа -│ ├── register.html # Страница регистрации (NEW!) +│ ├── register.html # Страница регистрации │ ├── notes.html # Страница заметок -│ ├── login.js # Логика входа (обновлена) -│ ├── register.js # Логика регистрации (NEW!) -│ ├── app.js # Клиентский JavaScript -│ └── style.css # Стили -├── server.js # Express сервер +│ ├── profile.html # Страница личного кабинета (NEW!) +│ ├── login.js # Логика входа +│ ├── register.js # Логика регистрации +│ ├── profile.js # Логика личного кабинета (NEW!) +│ ├── app.js # Клиентский JavaScript (обновлен) +│ ├── style.css # Стили (обновлены) +│ └── uploads/ # Загруженные аватарки пользователей (NEW!) +├── server.js # Express сервер (обновлен) ├── .env # Конфигурация (не включать в git!) +├── .gitignore # Исключения для git (обновлен) ├── package.json # Зависимости проекта ├── notes.db # SQLite база данных (создается автоматически) └── README.md # Документация @@ -132,10 +162,17 @@ NoteJS/ - `POST /logout` - выход из системы - `GET /api/user` - получить информацию о текущем пользователе (требует аутентификации) +### Профиль пользователя (требует аутентификации) + +- `GET /profile` - страница личного кабинета +- `PUT /api/user/profile` - обновить данные профиля или пароль +- `POST /api/user/avatar` - загрузить аватарку +- `DELETE /api/user/avatar` - удалить аватарку + ### Заметки (требуют аутентификации) - `GET /notes` - страница заметок -- `GET /api/notes` - получить все заметки +- `GET /api/notes` - получить все заметки пользователя - `POST /api/notes` - создать новую заметку - `PUT /api/notes/:id` - обновить заметку - `DELETE /api/notes/:id` - удалить заметку @@ -147,7 +184,10 @@ NoteJS/ - **Helmet** для защиты от распространенных уязвимостей - **CORS** конфигурация - **Body Parser** для безопасной обработки запросов +- **Multer** для безопасной загрузки файлов с валидацией - Защищенные маршруты с проверкой аутентификации +- **Валидация загружаемых файлов**: проверка типа, размера и формата +- **Изоляция данных**: каждый пользователь видит только свои заметки и файлы ## Требования к паролям @@ -160,6 +200,13 @@ NoteJS/ - Минимум 3 символа - Должен быть уникальным (нельзя создать два аккаунта с одинаковым логином) +## Требования к аватаркам + +- **Максимальный размер**: 5 МБ +- **Поддерживаемые форматы**: JPG, PNG, GIF +- **Автоматическое изменение размера**: изображения автоматически обрезаются до квадратного формата +- **Безопасность**: проверка типа файла и размера перед загрузкой + ## Разработка Для разработки используйте: diff --git a/index.html b/index.html index 0c71d4c..0fbc7f6 100644 --- a/index.html +++ b/index.html @@ -5,10 +5,7 @@