This guide will help you test the newly integrated full-stack Task Manager application.
Before testing, ensure you have completed the setup:
- MongoDB is running (local or MongoDB Atlas)
- Backend server is running on port 5000
- Frontend dev server is running on port 5173
# macOS
brew services start mongodb-community
# Linux
sudo systemctl start mongodb
# Windows
# MongoDB should start automatically as a service
# Or run: mongod- Already running, just ensure your connection string is in
backend/.env
cd backend
npm run devExpected Output:
Server running in development mode on port 5000
MongoDB Connected: localhost (or your Atlas cluster)
If you see these messages, the backend is ready! ✅
Common Issues:
Port 5000 already in use→ Kill the process or change PORT in .envMongoNetworkError→ MongoDB is not runningError: listen EADDRINUSE→ Another app is using port 5000
# In the project root
npm run devExpected Output:
VITE v7.x.x ready in xxx ms
➜ Local: http://localhost:5173/
➜ Network: use --host to expose
Open your browser to http://localhost:5173
- Navigate to http://localhost:5173
- Click "Don't have an account? Create one"
- Fill in the registration form:
- Name: Test User
- Email: test@example.com
- Password: password123
- Confirm Password: password123
- Click "Create Account"
Expected Result:
- ✅ Toast notification: "Welcome, Test User! Your account has been created."
- ✅ Redirected to dashboard
- ✅ Empty dashboard (no tasks yet)
Backend Verification:
# In MongoDB, check if user was created
mongosh
> use task-manager
> db.users.find().pretty()You should see your new user in the database.
- Logout (click your name in the header → Logout)
- Navigate to login page
- Enter credentials:
- Email: test@example.com
- Password: password123
- Check "Remember Me" (optional)
- Click "Sign In"
Expected Result:
- ✅ Toast notification: "Welcome back, Test User!"
- ✅ Redirected to dashboard
- ✅ User data persists on page refresh
- Navigate to "Categories" page (sidebar)
- Click "New Category" button
- Fill in the form:
- Name: Work
- Color: Pick a color (e.g., blue)
- Click "Create"
Expected Result:
- ✅ Toast notification: "Category created successfully"
- ✅ Category appears in the list
- ✅ Data persists on page refresh
Default priorities might already exist from the backend. If not:
- Navigate to priorities (if there's a page, or via API testing)
- Create: High, Medium, Low priorities
- Navigate to "Tasks" page
- Click "New Task" button
- Fill in the form:
- Title: Complete project documentation
- Description: Write comprehensive docs
- Category: Work (select from dropdown)
- Priority: High (select from dropdown)
- Status: In Progress
- Due Date: Tomorrow's date
- Click "Create"
Expected Result:
- ✅ Toast notification: "Task created successfully"
- ✅ Task appears in the task list
- ✅ Task has correct category color
- ✅ Data persists on page refresh
Backend Verification:
mongosh
> use task-manager
> db.tasks.find().pretty()- Click on a task to edit it
- Change the title or status
- Click "Save"
Expected Result:
- ✅ Toast notification: "Task updated successfully"
- ✅ Changes reflect immediately
- ✅ Data persists on page refresh
- Click delete icon on a task
- Confirm deletion (if there's a confirmation modal)
Expected Result:
- ✅ Toast notification: "Task deleted successfully"
- ✅ Task removed from list immediately
- ✅ Change persists on page refresh
- Navigate to Dashboard
- Verify the stats cards show correct numbers:
- Total Tasks
- Completed Tasks
- Pending Tasks
- In Progress Tasks
- Check the charts:
- Pie chart shows task distribution
- Stats match actual task counts
Expected Result:
- ✅ All statistics are accurate
- ✅ Charts render correctly
- ✅ Data updates when tasks change
- Create a new task
- Navigate to Notifications page
- Check for notification about task creation
Expected Result:
- ✅ Notification appears
- ✅ Can mark as read
- ✅ Can delete notification
- ✅ Unread count badge updates
- Navigate to Calendar page
- Verify tasks appear on their due dates
- Check color coding by category
Expected Result:
- ✅ Tasks display on correct dates
- ✅ Category colors are visible
- ✅ Can navigate between months
- Click your name in header
- Go to Account/Profile page
- Update your name or email
- Save changes
Expected Result:
- ✅ Toast notification: "Profile updated successfully"
- ✅ Changes reflect in header
- ✅ Data persists on page refresh
- Create some tasks
- Close the browser completely
- Reopen and go to http://localhost:5173
Expected Result:
- ✅ Still logged in (if "Remember Me" was checked)
- ✅ All tasks are still there
- ✅ Dashboard shows correct stats
- In browser DevTools (F12) → Application → Local Storage
- Delete the
tokenitem - Try to navigate to a protected page
Expected Result:
- ✅ Redirected to login page
- ✅ Toast notification: "Not authorized" or similar
- ✅ Must log in again
- Stop the backend server (Ctrl+C)
- Try to create a task in the frontend
Expected Result:
- ✅ Toast notification: "Failed to create task" or connection error
- ✅ App doesn't crash
- ✅ User can still navigate
- Restart backend
- Try creating task again
Expected Result:
- ✅ Works normally
- ✅ Data is saved
Check:
- API requests to
http://localhost:5000/api/* - Response status codes (200, 201, 400, 401, etc.)
- Request/response payloads
- Authorization headers
Example successful task creation:
Request URL: http://localhost:5000/api/tasks
Request Method: POST
Status Code: 201 Created
Request Headers:
Authorization: Bearer eyJhbGc...
Request Payload:
{
"title": "Test task",
"description": "...",
...
}
Response:
{
"success": true,
"data": { ... }
}
Check for:
- JavaScript errors (red text)
- Network errors
- API response logs
- Authentication status
Verify:
tokenexists (long JWT string)userexists (JSON object)
Watch backend terminal for:
- Request logs
- Error messages
- Database connection status
- Socket.io connections
- Download MongoDB Compass
- Connect to
mongodb://localhost:27017 - Browse database
task-manager - View collections:
- users
- tasks
- categories
- priorities
- tags
- notifications
Visual verification of data helps debug issues.
Symptoms: All API calls fail, toast shows connection errors
Solutions:
- Check backend is running:
cd backend && npm run dev - Check backend URL in
.env:VITE_API_URL=http://localhost:5000/api - Check CORS settings in
backend/src/server.ts
Symptoms: Redirected to login, "Not authorized" errors
Solutions:
- Token expired → Log in again
- Check Authorization header is being sent (Network tab)
- Verify JWT_SECRET matches in backend
.env
Symptoms: Task created but list is empty
Solutions:
- Check browser console for errors
- Verify task was saved in MongoDB
- Check if
loadAllData()is called after login - Verify _id to id transformation in API interceptor
Symptoms: Backend shows MongoNetworkError
Solutions:
- Start MongoDB:
brew services start mongodb-community(macOS) - Check MongoDB is listening on port 27017
- Verify MONGO_URI in
backend/.env
Symptoms: EADDRINUSE: address already in use :::5000
Solutions:
# Find process using port 5000
lsof -i :5000
# Kill the process
kill -9 <PID>
# Or change port in backend/.env
PORT=5001Before moving to next phase, verify:
- Can register a new user
- Can login with created user
- Can create categories
- Can create priorities (or defaults exist)
- Can create tasks
- Can update tasks
- Can delete tasks
- Can toggle task completion
- Dashboard shows correct statistics
- Calendar displays tasks correctly
- Notifications appear for task actions
- Can update user profile
- Data persists after page refresh
- Data persists after browser close (with Remember Me)
- Logout works correctly
- Token expiration redirects to login
- Error messages display for failed operations
- MongoDB contains correct data
Once all tests pass:
- ✅ Backend integration complete!
- 🚧 Next: Implement WebSocket real-time updates
- 🚧 Next: Build subtasks UI
- 🚧 Next: Build tags UI
- 🚧 Next: Build recurring tasks UI
- 🚧 Next: Build file attachments UI
If you encounter issues:
- Check browser console (F12)
- Check backend terminal logs
- Check MongoDB connection
- Verify environment variables (.env files)
- Review IMPLEMENTATION_STATUS.md
- Clear localStorage and try fresh login
- Restart both servers
Happy Testing! 🎉
If everything works, you now have a fully functional full-stack task manager with real database persistence!