Application engaging members of families, neighbourhoods, or groups of roommates to perform common tasks (shopping, cleaning, maintenance, etc.) using gamification.
The goal of the application is to encourage collaboration through visibility, fairness, and experience-based motivation.
People who perform common tasks.
Each user:
- has a nickname
- gains experience points (XP)
- can react to activities
Things that have already been done.
Each activity contains:
type– e.g. cooking, vacuuming, shoppingexp– experience points awardeddate- optional
comment - reactions from other users
Activities are displayed in a virtualized list for performance.
Things that should be done in the future.
Each work request contains:
typeexppriority
A work request can later be promoted into an activity once completed.
- Frontend: React + TypeScript
- Authentication: AWS Cognito (Amplify Authenticator)
- Backend: AWS GraphQL
- UI: Virtualized lists (react-virtualized)
- Testing: Playwright (E2E, headless supported)
The application uses gamification mechanics:
- XP system
- visibility of contributions
- reactions
npm installnpm run devThe app runs at:
http://localhost:5173
The project uses Playwright for E2E testing.
npx playwright testnpx playwright test --headednpx playwright test tests/e2e/activity.spec.tsTests use a dedicated Cognito test user.
A setup test logs in and stores session state in:
tests/e2e/.auth/state.json
Subsequent tests reuse that session to avoid repeated login.
The activity list is virtualized using react-virtualized.
This means:
- Only visible rows are rendered in the DOM
- Tests may need to scroll the virtualized container
- Sorting new activities by creation time improves test stability
data-testidattributes are used for stable test selectors- Business logic is tested, not native browser behavior
- Date picker logic is tested (e.g. “Today”, “Yesterday” buttons), not browser UI
- E2E tests rely on backend IDs intercepted from GraphQL responses
- Kimbalontek, a spirit of the house that is happy or upset depending on the chores queue length and chores priorities
- Notifications
- about new work requests
- about lack of any activities reported a given day
- custom engagement messages generated by AI
- End-year "wrapped" (like in Spotify)
- Create a branch
- Make changes
- Add or update tests
- Open a pull request
All new features should include appropriate E2E coverage.