Use this checklist to verify the backend integration is working correctly.
- Backend running on
http://localhost:5000 - Frontend running on
http://localhost:3000 -
.env.localconfigured correctly -
npm installcompleted
- Go to http://localhost:3000/sign-up
- Try registering with invalid email → See validation error
- Try weak password → See validation error
- Try password mismatch → See validation error
- Register with valid data → Success + auto-login + redirect to dashboard
- Go to http://localhost:3000/sign-in
- Try login with wrong email → See error
- Try login with wrong password → See error
- Login with valid credentials → Success + redirect to dashboard
- Verify accessToken in localStorage
- Logout
- Try accessing /projects → Redirected to /sign-in
- Try accessing /dashboard → Redirected to /sign-in
- Login again → Can access protected routes
- Login and note the time
- Wait 15+ minutes (or modify token expiry in backend)
- Make an API call (create project, etc.)
- Should work without re-login (auto token refresh)
- Click logout button
- Verify redirected to /sign-in
- Verify accessToken removed from localStorage
- Verify cannot access protected routes
- Login and go to /projects
- See list of projects (or empty state if none)
- Projects display correctly with colors, status, stats
- Loading indicator shows during fetch
- Click "New Project" button
- Try submitting empty form → See validation errors
- Fill in project details:
- Name: "Test Project"
- Description: "Test Description"
- Status: "IN_PROGRESS"
- Color: Blue (#3B82F6)
- Click "Create Project"
- See success toast
- New project appears in list immediately
- Click on a project
- Should navigate to project detail page
- See project tasks/board
- (If you have edit UI) Update project name
- Changes saved and reflected immediately
- (If you have delete UI) Delete a project
- Project removed from list
- Open a project
- See task board with columns
- Tasks grouped by columns
- Loading indicator during fetch
- Click "Add Task" or + button
- Fill in task details:
- Title: "Test Task"
- Description: "Test Description"
- Priority: HIGH
- Tags: ["test", "urgent"]
- Due Date: Future date
- Click "Create Task"
- Task appears in list immediately
- Task shows correct priority, tags, due date
- Click on a task to edit
- Change title or priority
- Save changes
- Changes reflected immediately
- Drag a task to different column (if drag-drop implemented)
- Or use move task functionality
- Task moves immediately
- Backend persists the move
- Mark a task as complete
- Task status updates
- Completion timestamp set
- Delete a task
- Task removed from list immediately
- Open browser window 1: Login to account A
- Open browser window 2 (incognito): Login to same account A
- Navigate both to same project
- In window 1: Create a new task
- In window 2: Task appears automatically (no refresh)
- In window 1: Update a task title
- In window 2: Title updates automatically
- In window 1: Move a task to different column
- In window 2: Task moves automatically
- In window 1: Delete a task
- In window 2: Task disappears automatically
- Stop backend server
- See WebSocket disconnect in console
- Restart backend server
- WebSocket should reconnect automatically
- Real-time updates work again
- Stop backend
- Try creating a project
- See user-friendly error message
- Start backend
- Try again → Should work
- Try creating project with name > 255 chars
- See validation error
- Try creating task without title
- See validation error
- Manually corrupt token in localStorage
- Try making API call
- Should attempt token refresh
- If refresh fails → Redirect to login
- (If you have permissions) Try deleting someone else's project
- Should see "Forbidden" error
- Try accessing non-existent project
- See "Not found" error
- Refresh /projects page
- See loading indicator while fetching
- Loading disappears when data loaded
- Open a project
- See loading indicator while fetching tasks
- Loading disappears when tasks loaded
- Click "Create Project"
- Button shows loading state
- Button disabled during creation
- Button returns to normal after completion
- Logout and try accessing /projects
- Should see loading screen briefly
- Then redirect to login
- Resize browser window
- Check mobile view
- Check tablet view
- Check desktop view
- All layouts work correctly
- Create project → Success toast
- Error occurs → Error toast
- Toasts disappear after timeout
- Real-time validation on forms
- Error messages display correctly
- Error messages clear when fixed
- Logout and register new account
- See "No projects" empty state
- Create project → Empty state disappears
- Delete all projects → Empty state appears
- All features work in Chrome
- No console errors
- WebSocket connects
- All features work in Firefox
- No console errors
- WebSocket connects
- All features work in Safari
- No console errors
- WebSocket connects
- All features work in Edge
- No console errors
- WebSocket connects
- Page loads in < 2 seconds
- No unnecessary API calls
- Images load properly
- Real-time updates are instant (< 500ms)
- No lag between windows
- UI updates immediately on action
- No perceived lag
- Rollback if API call fails
- Create project
- Refresh page
- Project still there
- Create task in window 1
- Verify appears in window 2
- Close window 2
- Create task in window 1
- Open window 2 again
- All tasks present
- Window 1: Update task A
- Window 2: Update task A at same time
- Both updates should succeed
- Last update wins
- Verify token not in URL
- Verify token not logged to console
- Verify token in localStorage only
- Without token → Cannot access /projects
- Without token → Cannot access /dashboard
- With token → Can access all routes
- Login
- Logout
- Verify token removed
- Verify WebSocket disconnected
- Verify cannot access protected routes
- Project with no tasks displays correctly
- User with no projects displays empty state
- Project name with 255 characters
- Task description with long text
- Text truncates/wraps properly
- Project name with emoji: "Project 🚀"
- Task with special chars: "Test & <script>"
- No XSS vulnerabilities
- Create 10 tasks rapidly
- All created successfully
- No race conditions
Fill out after testing:
✅ Passed: ___ / ___
❌ Failed: ___ / ___
Testing Date: __________
Tester: __________
Backend Version: __________
Frontend Version: __________