Tiers2gether is a collaborative tier list maker that allows users to create, share, and collectively rank characters or items. Users can create boards, invite others, and see real-time rankings across different tiers (S, A, B, C, D).
- Jonathan Becker (jbecke14) - Full Stack Development, Firebase Integration, Testing
- Estimated completion time: ~40 hours
- Firebase Documentation
- Express.js Documentation
- Jest Documentation
- React Documentation
- React DnD Documentation
-
Frontend (React + TypeScript)
- React for component-based UI
- TypeScript for client logic
- React DnD for drag-and-drop functionality
- Jest for E2E testing
- Tailwind CSS for styling
-
Backend (Express + Firebase)
- Express.js TypeScript server
- Firebase Firestore database
- Express-session for authentication
- bcrypt for password hashing
-
Authentication System
- Session-based auth with HTTP-only cookies
- Password hashing with bcrypt
- Protected route middleware
-
Board Management
- Real-time tier list updates
- Collaborative ranking system
- Access control via creator/allowed users
-
Data Structures
interface TierBoard {
id: string;
name: string;
tagList: string[];
characters: {
[characterId: string]: BoardCharacter;
};
createdAt: Date;
updatedAt: Date;
creatorUsername: string;
accessKey: string;
allowedUsers: string[];
}
-
shows login screen when not authenticated
- Verifies initial auth state
- Checks for login form presence
-
validates form inputs on submit
- Tests required fields
- Validates input constraints
-
handles successful login
- Tests credential submission
- Verifies successful auth state
- Checks session creation
-
handles failed login
- Tests invalid credentials
- Verifies error messages
- Checks auth state remains false
-
handles logout
- Tests session cleanup
- Verifies state reset
- Checks cookie removal
-
creates default board if no boards exist
- Tests automatic board creation
- Verifies default settings
- Checks Firebase integration
-
handles board creation
- Tests manual board creation
- Verifies board properties
- Validates API calls
-
handles board deletion with multiple boards
- Tests deletion logic
- Verifies cleanup
- Checks remaining boards state
shows loading state when authenticated
- Tests loading indicators
- Verifies async state handling
-
loads board data on mount
- Verifies initial board loading
- Checks board name rendering
- Tests API integration
-
displays character in correct tier
- Validates character placement
- Ensures correct tier assignment
- Tests character name rendering
-
handles tag management
- Tests tag addition functionality
- Verifies dialog interactions
- Validates API calls for tag updates
- Checks UI updates after tag addition
-
handles share functionality
- Tests share board dialog
- Validates clipboard integration
- Verifies access key copying
- Tests UI feedback for sharing
- Node.js >= 16
- npm
- Firebase credentials
- Clone the repository
git clone https://github.com/jbecker7/Tiers2gether
cd tiers2gether
- Install dependencies
npm install
cd client && npm install
cd ../server && npm install
- Create Firebase config
- Add
serviceAccountKey.json
to/server/firebase/
- Set up environment variables
- Start development servers
npm run dev
cd client
npx jest
- Feature: narrow by tags
- Testing: more comprehensive unit testing for edge cases