- 🏆 Player Profiles - View comprehensive player statistics, tournament history, and character usage
- 📊 Head-to-Head Analysis - Track your match history against specific opponents
- 📈 Performance Metrics - SPR (Seed Performance Rating) calculations and win rate tracking
- 📱 Responsive Design - Works well on desktop and mobile devices
- Frontend: Svelte + Vite + TypeScript
- Backend: Rust with Axum
- Data Source: start.gg GraphQL API
- Deployment: Docker & Docker Compose
- Docker and Docker Compose
- A start.gg API token
- Create an account at start.gg
- Go to your developer settings
- Generate a new API token
- Save it for the next step
-
Clone the repository
git clone https://github.com/danbugs/smithereens.git cd smithereens
-
Set up your environment
# Create a .env file in the root directory echo "STARTGG_TOKEN=Bearer your_token_here" > .env
-
Build and start the application
# Using make make local-build make local-run
-
Access the application
- Frontend: http://localhost:8083
- Backend API: http://localhost:3000/api
-
Stop the application
make local-stop
If you want to run the services locally without Docker:
-
Backend
cd backend export SMITHE_STARTGG_TOKEN="Bearer your_token_here" export SMITHE_CLIENT_VERSION=20 export SMITHE_PORT=3000 cargo run
-
Frontend
cd frontend npm install npm run dev
The frontend development server will proxy API requests to the backend automatically.
# Build both images
make build-all
smithereens/
├── frontend/ # Svelte frontend application
│ ├── src/ # Source code
│ ├── Dockerfile # Frontend container definition
│ └── nginx.conf # Nginx configuration
├── backend/ # Rust backend API
│ ├── src/ # Source code
│ └── Dockerfile # Backend container definition
├── docker-compose.yaml
├── Makefile # Convenient commands
└── README.md
We welcome contributions from the community! Whether you're fixing bugs, adding features, or improving documentation, your help makes Smithereens better for everyone.
- 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
- Follow the existing code style
- Write tests for new features
- Update documentation as needed
- Be respectful and constructive in discussions
- Port already in use: Change the ports in
docker-compose.yaml
if 8083 or 3000 are already taken - API token issues: Make sure your token includes "Bearer " prefix
- Build failures: Ensure you have the latest Docker version
# View logs
docker compose logs -f
# Check specific service
docker compose logs -f backend
docker compose logs -f frontend
# Restart services
docker compose restart
# Rebuild images without cache
docker compose build --no-cache
This project is licensed under the terms described in the LICENSE.md file.
If you encounter any issues or have questions:
- Open an issue on GitHub
- Check existing issues for solutions
- Join our community discussions on our Discord server