3.1 KiB
3.1 KiB
🚀 QUICK START - Server Setup
Step 1: Copy .env file
cd d:/hotel-booking/server
cp .env.example .env
The .env file has been pre-created with default configuration
Step 2: Create Database (if not exists)
# Open MySQL command line
mysql -u root -p
# Create database
CREATE DATABASE hotel_db;
# Exit
exit;
Step 3: Run Migrations
cd d:/hotel-booking/server
npm run migrate
This command will create the following tables:
- roles
- users
- refresh_tokens
- rooms
- room_types
- bookings
- payments
- services
- service_usages
- promotions
- checkin_checkout
- banners
- password_reset_tokens
- reviews
Step 4: (Optional) Seed Data
npm run seed
This command will create:
- 3 roles: admin, staff, customer
- Demo users
- Demo rooms & room types
- Demo bookings
Step 5: Start Server
npm run dev
You will see:
✅ Database connection established successfully
📊 Database models synced
🚀 Server running on port 3000
🌐 Environment: development
🔗 API: http://localhost:3000/api
🏥 Health: http://localhost:3000/health
Step 6: Test API
Health Check
Open browser: http://localhost:3000/health
Test Login (after seeding data)
curl -X POST http://localhost:3000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"admin@hotel.com","password":"Admin123"}'
⚠️ Troubleshooting
Error: "Access denied for user 'root'"
Solution: Update DB_PASS in .env file
DB_PASS=your_mysql_password
Error: "Unknown database 'hotel_db'"
Solution: Create database manually (Step 2)
Error: "Port 3000 already in use"
Solution: Change PORT in .env
PORT=3001
Error: "Cannot find module"
Solution: Reinstall dependencies
npm install
📝 Next Steps
- ✅ Server is running
- ✅ Database is set up
- ✅ API endpoints are ready
- 🔜 Test with frontend login form
- 🔜 Implement remaining APIs
🧪 Test với Postman
Collection: Hotel Booking API
1. Register
POST http://localhost:3000/api/auth/register
Body (JSON):
{
"name": "Test User",
"email": "test@example.com",
"password": "Test1234",
"phone": "0123456789"
}
2. Login
POST http://localhost:3000/api/auth/login
Body (JSON):
{
"email": "test@example.com",
"password": "Test1234",
"rememberMe": true
}
3. Get Profile
GET http://localhost:3000/api/auth/profile
Headers:
Authorization: Bearer YOUR_ACCESS_TOKEN
✅ Checklist
- MySQL is running
- .env file has been created and configured correctly
- Database hotel_db has been created
- Migrations have run successfully
- Server is running (port 3000)
- Health check returns 200 OK
- Frontend .env has VITE_API_URL=http://localhost:3000
- Frontend is running (port 5173)
🎯 Ready to Test Login!
- Server: http://localhost:3000 ✅
- Client: http://localhost:5173 ✅
- Login page: http://localhost:5173/login ✅
- API endpoint: http://localhost:3000/api/auth/login ✅
Everything is ready! You can now test the login form from the frontend! 🚀