NoteJS/README.md

176 lines
7.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# NoteJS - Приложение для быстрых заметок
Простое веб-приложение для создания и управления заметками с поддержкой Markdown форматирования и системой аутентификации.
## Особенности
- 🚀 Создано на Node.js + Express
- 🔐 **Система регистрации и авторизации по логину и паролю** (NEW!)
- 🔒 Безопасное хранение паролей с bcrypt хешированием
- 💾 Хранение данных в SQLite базе данных
- 👥 **Изолированные заметки - каждый пользователь видит только свои заметки** (NEW!)
- 📝 Поддержка Markdown форматирования
- 🎨 Простой и интуитивный интерфейс
- 📱 Адаптивный дизайн
## Установка и запуск
### Предварительные требования
- Node.js (версия 14 или выше)
- npm
### Установка
1. Клонируйте репозиторий:
```bash
git clone <repository-url>
cd NoteJS
```
2. Установите зависимости:
```bash
npm install
```
3. Настройте переменные окружения:
- Откройте файл `.env`
- Установите секрет сессии в переменной `SESSION_SECRET`
- Установите порт в переменной `PORT` (по умолчанию 3000)
Пример файла `.env`:
```env
SESSION_SECRET=your_session_secret_here
PORT=3000
```
4. Запустите сервер:
```bash
npm start
```
5. Откройте браузер и перейдите по адресу `http://localhost:3000`
## Использование
### Регистрация
1. Нажмите на ссылку "Зарегистрируйтесь" на странице входа
2. Заполните форму регистрации:
- **Логин**: минимум 3 символа
- **Пароль**: минимум 6 символов
- **Подтвердите пароль**: повторите пароль
3. Нажмите кнопку "Зарегистрироваться"
4. Вы будете автоматически залогинены и перенаправлены на страницу заметок
### Вход в систему
1. Введите ваш логин
2. Введите ваш пароль
3. Нажмите кнопку "Войти"
4. После успешного входа вы попадете в интерфейс заметок
### Создание заметок
1. Введите текст заметки в поле ввода
2. Используйте кнопки форматирования для добавления Markdown элементов:
- **B** - жирный текст
- _I_ - курсив
- H - заголовок
- 📋 - элемент списка
- " - цитата
- `</>` - код
- 🔗 - ссылка
3. Нажмите кнопку "Сохранить"
### Редактирование заметок
1. Нажмите кнопку "Редактировать" рядом с заметкой
2. Отредактируйте текст в появившемся поле ввода
3. Нажмите кнопку "Сохранить"
### Удаление заметок
1. Нажмите кнопку "Удалить" рядом с заметкой
2. Подтвердите удаление в появившемся диалоговом окне
### Выход из системы
Нажмите кнопку "🚪 Выйти" в верхней части страницы заметок
## Структура проекта
```
NoteJS/
├── public/ # Статические файлы (клиентская часть)
│ ├── index.html # Страница входа
│ ├── register.html # Страница регистрации (NEW!)
│ ├── notes.html # Страница заметок
│ ├── login.js # Логика входа (обновлена)
│ ├── register.js # Логика регистрации (NEW!)
│ ├── app.js # Клиентский JavaScript
│ └── style.css # Стили
├── server.js # Express сервер
├── .env # Конфигурация (не включать в git!)
├── package.json # Зависимости проекта
├── notes.db # SQLite база данных (создается автоматически)
└── README.md # Документация
```
## API Endpoints
### Аутентификация
- `GET /` - страница входа
- `GET /register` - страница регистрации
- `POST /api/register` - регистрация нового пользователя
- `POST /api/login` - вход в систему
- `POST /logout` - выход из системы
- `GET /api/user` - получить информацию о текущем пользователе (требует аутентификации)
### Заметки (требуют аутентификации)
- `GET /notes` - страница заметок
- `GET /api/notes` - получить все заметки
- `POST /api/notes` - создать новую заметку
- `PUT /api/notes/:id` - обновить заметку
- `DELETE /api/notes/:id` - удалить заметку
## Безопасность
- **Bcrypt хеширование** паролей при сохранении
- **Сессионная аутентификация** с express-session
- **Helmet** для защиты от распространенных уязвимостей
- **CORS** конфигурация
- **Body Parser** для безопасной обработки запросов
- Защищенные маршруты с проверкой аутентификации
## Требования к паролям
- Минимум 6 символов при регистрации
- Пароли хешируются с использованием bcrypt (стандарт раундов: 10)
- Пароли не могут быть восстановлены из БД
## Требования к логину
- Минимум 3 символа
- Должен быть уникальным (нельзя создать два аккаунта с одинаковым логином)
## Разработка
Для разработки используйте:
```bash
npm run dev
```
Этот скрипт использует **nodemon** для автоматической перезагрузки сервера при изменении файлов. Больше не нужно вручную перезапускать сервер при каждом изменении кода!
## Лицензия
Этот проект создан Fovway.