Build premium data portal with React + Tailwind CSS

Frontend Features:
- Landing page with glassmorphism, animated counters, hero section
- Interactive data tables with search, sort, filter, CSV export
- Premium dark theme (navy + gold accents)
- Framer Motion animations and micro-interactions
- Responsive design with Inter + Playfair Display typography
- DataTable component with pagination and live search

Backend Updates:
- New API endpoints: /api/rates/per-diem, /api/rates/accommodations, /api/stats
- Database service methods for bulk data retrieval
- Production mode serves built React app from /dist/client
- Fallback to legacy HTML for development

Tech Stack:
- React 18 + TypeScript
- Vite 7 build tool
- Tailwind CSS 4 with @tailwindcss/postcss
- Framer Motion for animations
- Lucide React icons
- SQLite3 backend

Build Output:
- 351KB optimized JavaScript bundle
- 29KB CSS bundle
- Fully tree-shaken and minified
This commit is contained in:
2026-01-13 11:05:54 -05:00
parent 66b72d5f74
commit 4d915aa3ea
18 changed files with 1211 additions and 7 deletions

View File

@@ -6,6 +6,9 @@
"scripts": {
"start": "node server.js",
"dev": "nodemon server.js",
"dev:client": "vite",
"build:client": "vite build",
"preview": "vite preview",
"test": "jest",
"test:watch": "jest --watch",
"test:coverage": "jest --coverage"
@@ -19,25 +22,47 @@
"author": "",
"license": "ISC",
"dependencies": {
"@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-dropdown-menu": "^2.1.16",
"@radix-ui/react-select": "^2.2.6",
"@radix-ui/react-tabs": "^1.1.13",
"amadeus": "^11.0.0",
"axios": "^1.13.1",
"better-sqlite3": "^11.0.0",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"compression": "^1.7.4",
"cors": "^2.8.5",
"dotenv": "^17.2.3",
"express": "^4.18.2",
"express-rate-limit": "^7.1.5",
"framer-motion": "^12.26.2",
"helmet": "^7.1.0",
"joi": "^17.11.0",
"lucide-react": "^0.562.0",
"node-cache": "^5.1.2",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"recharts": "^3.6.0",
"sqlite3": "^5.1.7",
"tailwind-merge": "^3.4.0",
"winston": "^3.11.0",
"winston-daily-rotate-file": "^4.7.1",
"xlsx": "^0.18.5"
},
"devDependencies": {
"@tailwindcss/postcss": "^4.1.18",
"@types/node": "^25.0.8",
"@types/react": "^19.2.8",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^5.1.2",
"autoprefixer": "^10.4.23",
"jest": "^29.7.0",
"nodemon": "^3.0.2",
"supertest": "^6.3.3"
"postcss": "^8.5.6",
"supertest": "^6.3.3",
"tailwindcss": "^4.1.18",
"typescript": "^5.9.3",
"vite": "^7.3.1"
}
}