This noble project, first wrought by the esteemed craftsman JosΓ© Lopes (known throughout the realm as @MIBismuth), was christened in days of yore as "HS-WebApp" and didst flourish under his skilled hand (consult ye the ancient scrolls preserved in the legacy branch for proof of these bygone times).
Verily, this humble creation served as the cornerstone most foundational in the construction of the grand Hacker League project. Through great toil and scholarly pursuit, the project hath been most triumphantly transmuted from the primitive tongue of vanilla JavaScript unto the more refined and courtly language of React, thereby achieving superior maintainability and providing a most pleasant experience for all who venture forth to use it.
- Interactive Leaderboard with team and individual classifications
- Multiple Point Types: Total, PJ (Journey Points), and PCC (Community Contribution Points)
- Dynamic Controls: Inline dropdown menus for classification type and point filtering
- Medal System: π₯π₯π₯ποΈ for top 5 positions with position-specific colors
- Statistics Dashboard: Total participants, active teams, and total points
- Expandable History: Click rows to see recent activity with "See more" navigation
- Real-time Sorting: Sort by Total Points, PJ Points, or PCC Points
- Comprehensive Activity Log: View all point attributions across teams and individuals
- Advanced Filtering: Filter by entity type (Teams/Individuals), points type (PJ/PCC), and specific entities
- Pagination: Navigate through large datasets with 10 items per page
- Expandable Details: Click rows to see full activity descriptions
- Personal Profile Management: Edit user information, upload logos
- Logo Upload: Local file upload with Base64 storage and persistence
- Team Selection: Multi-team membership with checkbox interface
- Profile Data: Display member number, join date, IST ID, roles, and additional info
- Edit Mode: Toggle between view and edit modes with form validation
- Secure Login/Logout: Cookie and local storage support
- Mock User System: Available for development testing (admin, alexchen, mariasantos, davidkim)
- Session Management: Persistent login state
- Role Management: Admin and user roles with appropriate permissions
- User Management: Create, edit, and delete users
- Search Functionality: Find users by username
- Mock Data Integration: Realistic user data for testing
- Form Validation: Complete user information management
- Error Handling: Proper error messages and loading states
- Frontend: React 18 with React Router v6
- State Management: React Context API with hooks
- Styling: CSS3 with responsive design and custom color scheme
- Mock API: Simulated backend with network delays
- Authentication: JWT-based with localStorage persistence
- File Handling: FileReader API for local image uploads
src/
βββ components/
β βββ Auth/
β β βββ LoginForm.js
β β βββ RegisterForm.js
β β βββ Auth.css
β βββ Layout/
β β βββ Navbar.js
β β βββ Navbar.css
β βββ Profile/
β β βββ UserProfile.js
β β βββ Profile.css
β βββ Leaderboard/
β β βββ LeaderboardTable.js
β β βββ Leaderboard.css
β βββ Admin/
β β βββ AdminPanel.js
β β βββ Admin.css
β βββ PrivateRoute.js
βββ contexts/
β βββ AuthContext.js
βββ pages/
β βββ LoginPage.js
β βββ RegisterPage.js
β βββ ProfilePage.js
β βββ LeaderboardPage.js
β βββ HistoryPage.js
β βββ AdminPage.js
βββ services/
β βββ apiService.js
β βββ mockDataService.js
βββ App.js
βββ index.js
- Node.js (v14 or higher)
- npm or yarn
-
Clone the repository
git clone https://github.com/HackerSchool/Hacker-League.git cd Hacker-League
-
Install dependencies
npm install
-
Start the development server
npm start
-
Open your browser Navigate to
http://localhost:3000
The application includes mock users for testing:
- admin (password: admin) - Administrator with full access
- alexchen - Team leader with member access
- mariasantos - Regular member
- davidkim - Team leader with member access
npm run build
- Primary Dark:
#2b2a28
(Dark gray) - Primary Green:
#6dba76
(Green) - Primary Blue:
#156082
(Blue) - Text: White for contrast
- Accent:
#90EE90
(Light green for username)
# Run tests
npm test
# Run tests with coverage
npm test -- --coverage
npm run build
The build folder contains static files that can be deployed to:
- Netlify
- Vercel
- GitHub Pages
- AWS S3
- Decider: GonΓ§alo Fecha
- Developers: AndrΓ© Caseiro, AndrΓ© Santos, Armando GonΓ§alves, GonΓ§alo Azevedo
- Technical Expert: JosΓ© Lopes, Filipe PiΓ§arra
- Game Design: JoΓ£o Rodrigues, Filipe Vaz
- Logo Design: Francisco GonΓ§alves
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Pls Pls Pls remember to update README and rest of documentation, if existing.
This project is licensed under the MIT License. Feel free to fork, modify, and share your improvements!
If you encounter any issues or have questions:
- Check the Issues page
- Create a new issue with detailed information
- Contact the development team