InsightOS — সম্পূর্ণ উন্নতির সারসংক্ষেপ
Phase 1: জটিল বাগ + নিরাপত্তা + Validate Middleware একত্রিকরণ
✅ Validate Middleware একত্রিকরণ
নতুন ফাইল: backend/src/middleware/validate.js — সব module থেকে duplicate validate middleware সরিয়ে এখানে আনা হয়েছে
পরিবর্তিত: auth.validation.js, product.validation.js, sale.validation.js, expense.validation.js — থেকে validate ফাংশন ও ApiError import সরানো হয়েছে
পরিবর্তিত: সকল controller — থেকে validate re-export সরানো হয়েছে, shared middleware ইম্পোর্ট করা হয়েছে
পরিবর্তিত: সকল route files — shared middleware থেকে validate ইম্পোর্ট করে
✅ user.service.js — MongoDB Transaction
deleteAccount এখন MongoDB session + transaction এর মধ্যে চলে — partial failure হলে সব rollback হয়
auth.service.js — নতুন avatar upload বা delete করার আগে পুরনো avatar ফাইল disk থেকে মুছে ফেলা হয়
✅ gemini.config.js — Logger
console.error → logger.error (Pino logger)
✅ Access Token httpOnly Cookie
auth.controller.js — register, login, refresh এ accessToken এখন httpOnly cookie হিসেবেও সেট হয়
auth.middleware.js — Authorization header না থাকলে cookie থেকে token পড়ে
logout, account delete — accessToken cookie clear করে
Frontend: authStore.js — localStorage সরানো হয়েছে (token আর localStorage এ রাখা হয় না)
Frontend: axios.config.js — request interceptor থেকে Bearer header logic সরানো হয়েছে (cookie automatic)
Rate limit: 200/hr → 1000/hr
Destructive DELETE: /api/user/data ও /api/user/account এ এখন { "confirm": true } body প্রয়োজন
user.controller.js — accessToken cookie clear যোগ করা হয়েছে
Phase 2: Architecture Improvements
✅ auth.controller → authService layer
getCurrentUser আর সরাসরি authRepository কল করে না — এখন authService.getUserById() এর মাধ্যমে যায়
auth.controller থেকে authRepository import সরানো হয়েছে
✅ Expense Categories — Shared Constants
নতুন ফাইল: backend/src/constants/expenseCategories.js
expense.model.js ও expense.validation.js এখন এক জায়গা থেকে categories ইম্পোর্ট করে
✅ Business Data Service — Cross-module coupling fix
নতুন ফাইল: backend/src/services/businessData.service.js
prompt.builder.js আর সরাসরি saleService/expenseService ইম্পোর্ট করে না
✅ authorizeRole — Implemented
নতুন এন্ডপয়েন্ট: GET /api/auth/users — admin-only, সব user লিস্ট করে
auth.repository.js → findAll() method
auth.service.js → getAllUsers() method
auth.controller.js → getAllUsers handler
সকল controller থেকে schema re-exports সরানো হয়েছে (routes এখন validation files থেকে সরাসরি ইম্পোর্ট করে)
✅ Backend Tests (46 tests, 4 files)
ফাইল
টেস্ট
কী টেস্ট করা হয়েছে
utils.test.js
10
ApiError, ApiResponse, asyncHandler
token.test.js
6
JWT generate/verify — access + refresh tokens
validate.test.js
4
Validation middleware — body, query, error handling
validation-schemas.test.js
26
Auth, Product, Sale, Expense — সব Zod schema
✅ Frontend Tests (30 tests, 4 files)
ফাইল
টেস্ট
কী টেস্ট করা হয়েছে
cn.test.js
5
Tailwind class merge
formatCurrency.test.js
8
Currency formatting, edge cases
formatDate.test.js
11
Date format, relative time
authStore.test.js
6
Zustand auth state management
🆕 Frontend Testing Infrastructure
vitest + jsdom + @testing-library/react + @testing-library/jest-dom ইন্সটল
vite.config.js এ test config যোগ
package.json এ "test": "vitest run" স্ক্রিপ্ট যোগ
Phase 4: Missing Features
✅ Dashboard API — GET /api/dashboard
নতুন: dashboard.service.js, dashboard.controller.js, dashboard.routes.js
রিটার্ন করে: summary (revenue, expense, profit, margin, transactions, products, low stock), revenueByDay, expenseByDay, topProducts, categoryBreakdown, recentSales, recentExpenses, lowStockProducts
নতুন: services/email.service.js — nodemailerベース (SMTP কনফিগার না থাকলে dev mode-এ console-এ log করে)
আপডেট: auth.model.js — isVerified, verificationToken, verificationTokenExpires ফিল্ড
নতুন এন্ডপয়েন্ট: POST /auth/send-verification, GET /auth/verify-email?token=xxx
আপডেট: auth.model.js — resetPasswordToken, resetPasswordExpires ফিল্ড
নতুন এন্ডপয়েন্ট: POST /auth/forgot-password, POST /auth/reset-password
আপডেট: .env.example — SMTP সেটিংস, APP_URL
আপডেট: env.js — SMTP ও APP_URL ভ্যালিডেশন
Phase 5: Frontend Polish + Performance
GET /api/products/low-stock?page=1&limit=20 — এখন paginated response দেয় { products, total, page, totalPages }
Repository, Service, Controller, Dashboard, BusinessData — সব জায়গায় আপডেট
VITE_CURRENCY_CODE (default USD) via .env
VITE_CURRENCY_LOCALE (default en-US) via .env
formatCurrency.js এখন Intl.NumberFormat ব্যবহার করে — locale-aware
Table: scope="col" on headers, role="status" + aria-live="polite" on loading, aria-label on pagination buttons
Modal, Input, Sidebar: আগে থেকেই proper ARIA attributes ছিল
মোট ৭৬টি টেস্ট — সব পাস ✅
প্রকল্প
ফাইল
টেস্ট
Backend
4
46
Frontend
4
30
মোট
8
76
পর্যায়
বিবরণ
ফাইল সংখ্যা
Phase 1
জটিল বাগ + নিরাপত্তা
20
Phase 2
Architecture উন্নতি
16
Phase 3
Testing
12
Phase 4
নতুন ফিচার
14
Phase 5
Frontend polish
9
জুলাই ২০২৬ • InsightOS Improvement Plan অনুযায়ী