Skip to content

peter115342/foosball_group_tracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

98 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Foosballek

Python GCP CI/CD Firestore Firebase Next.js

Foosball Group Tracker Logo

About The Project

This is a web application that allows users to track their foosball matches, create groups, and maintain statistics. Deployed at foosballek.com.

Features

  • 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

Technology Stack

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

Screenshots

Dashboard:

image

Matches:

image

Statistics:

image

Deployment

The application is deployed to foosballek.com using Firebase App Hosting.

Continuous Integration

The project uses GitHub Actions for continuous integration, defined in .github/workflows/ci.yml. The CI pipeline includes:

  1. Linting: Python code is linted using Ruff
  2. Backend Testing: Python Cloud Functions are tested using pytest
  3. Frontend Testing: TypeScript code is tested using Jest

Usage Limits

To ensure fair use and stay within budget, the following limits are enforced:

Groups

  • Maximum 20 groups per user
  • Group creation rate limited to 1 per minute
  • Maximum 30 guests per group

Matches

  • 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.

Contributing

Contributions are welcome!

License

Distributed under the MIT License. See LICENSE for more information.

About

Web app for tracking Foosball matches in groups

Topics

Resources

License

Stars

Watchers

Forks

Contributors