This is a web application that allows users to track their foosball matches, create groups, and maintain statistics. Deployed at foosballek.com.
- User Authentication: Login with Google authentication
- Group Creation: Create and manage your foosball groups
- Group Management: Invite friends using unique codes and migrate existing stats from guests to them
- Match Tracking: Record match results and track performance
- Statistics: View statistics about your performance
- Export Data: Export match and stats data in JSON
| Category | Technologies |
|---|---|
| Cloud Platform | Google Cloud Platform (GCP) |
| Programming Languages | Python, TypeScript (Next.js) |
| Data Storage/Database | Firestore |
| Backend | Cloud Functions |
| CI | GitHub Actions |
| Package Management | uv, npm |
| Code Quality | Ruff |
| Testing | pytest, jest |
| Web Framework | Next.js, ShadCN UI Components |
| Hosting | Firebase App Hosting, Cloudflare |
The application is deployed to foosballek.com using Firebase App Hosting.
The project uses GitHub Actions for continuous integration, defined in .github/workflows/ci.yml. The CI pipeline includes:
- Linting: Python code is linted using Ruff
- Backend Testing: Python Cloud Functions are tested using pytest
- Frontend Testing: TypeScript code is tested using Jest
To ensure fair use and stay within budget, the following limits are enforced:
- Maximum 20 groups per user
- Group creation rate limited to 1 per minute
- Maximum 30 guests per group
- Match creation rate limited to 1 every 10 seconds
- Match queries limited to 100 matches per request
These limits help maintain performance and prevent abuse of the system. Additional validation is performed by our backend Cloud Functions.
Contributions are welcome!
Distributed under the MIT License. See LICENSE for more information.