# NoteJS - Приложение для быстрых заметок Простое веб-приложение для создания и управления заметками с поддержкой Markdown форматирования и системой аутентификации. ## Особенности - 🚀 Создано на Node.js + Express - 🔐 **Система регистрации и авторизации по логину и паролю** (NEW!) - 🔒 Безопасное хранение паролей с bcrypt хешированием - 💾 Хранение данных в SQLite базе данных - 👥 **Изолированные заметки - каждый пользователь видит только свои заметки** (NEW!) - 📝 Поддержка Markdown форматирования - 🎨 Простой и интуитивный интерфейс - 📱 Адаптивный дизайн ## Установка и запуск ### Предварительные требования - Node.js (версия 14 или выше) - npm ### Установка 1. Клонируйте репозиторий: ```bash git clone 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.