REST API для керування нотатками з повною системою автентифікації користувачів.
- Node.js
- Express.js
- MongoDB
- Mongoose
- JWT
- bcrypt
- Multer
- Cloudinary
- Nodemailer
- Brevo SMTP
- Handlebars
- Cookie Parser
- CORS
- Celebrate / Joi
- dotenv
- Реєстрація користувача
- Вхід у систему
- Вихід із системи
- Refresh Access Token
- HTTP-only Cookies
- Хешування паролів за допомогою bcrypt
- Надсилання листа для відновлення пароля
- JWT Reset Token
- HTML Email Template (Handlebars)
- Зміна пароля за токеном
- Отримання інформації про користувача
- Завантаження аватара
- Зберігання аватара у Cloudinary
- Створення нотатки
- Отримання списку нотаток
- Отримання нотатки за ID
- Оновлення нотатки
- Видалення нотатки
- Валідація вхідних даних
src/
│
├── controllers/
├── db/
├── middleware/
├── models/
├── routes/
├── services/
├── templates/
├── utils/
├── server.js
Клонувати репозиторій
git clone <repository-url>Перейти до директорії проєкту
cd nodejs-appВстановити залежності
npm installСтворити файл .env
PORT=3000
MONGODB_USER=
MONGODB_PASSWORD=
MONGODB_URL=
MONGODB_DB=
JWT_SECRET=
SMTP_HOST=
SMTP_PORT=
SMTP_USER=
SMTP_PASSWORD=
SMTP_FROM=
FRONTEND_DOMAIN=
CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=Режим розробки
npm run devПродакшн
npm start| Method | Endpoint |
|---|---|
| POST | /auth/register |
| POST | /auth/login |
| POST | /auth/logout |
| POST | /auth/refresh |
| POST | /auth/send-reset-email |
| POST | /auth/reset-password |
| Method | Endpoint |
|---|---|
| PATCH | /users/me/avatar |
| Method | Endpoint |
|---|---|
| GET | /notes |
| GET | /notes/:id |
| POST | /notes |
| PATCH | /notes/:id |
| DELETE | /notes/:id |
Аватари користувачів зберігаються в Cloudinary.
Для надсилання листів використовується:
- Brevo SMTP
- Nodemailer
- Handlebars Email Templates
- JWT Authentication
- HTTP-only Cookies
- bcrypt Password Hashing
- Request Validation
- File Upload Validation
- Обмеження розміру завантаження файлів
Цей проєкт створений у навчальних цілях під час проходження курсу GoIT.