Files
turbovault-app/README.md
2026-03-29 02:37:49 -04:00

213 lines
6.5 KiB
Markdown

# 🎮 TurboVault
> Your personal video game collection tracker and manager
[![Rails 8.1](https://img.shields.io/badge/Rails-8.1-red.svg)](https://rubyonrails.org/)
![CI](https://github.com/YOUR_USERNAME/turbovault/workflows/CI/badge.svg)
[![RuboCop](https://img.shields.io/badge/code_style-rubocop-brightgreen.svg)](https://github.com/rubocop/rubocop)
[![Sorbet](https://img.shields.io/badge/types-sorbet-blue.svg)](https://sorbet.org)
[![Ruby 3.3](https://img.shields.io/badge/Ruby-3.3-red.svg)](https://www.ruby-lang.org/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
TurboVault is a modern, self-hosted web application for tracking and organizing your video game collection. Built with Rails 8 and Hotwire, it offers a fast, responsive experience for managing physical and digital games across all platforms.
## ✨ Features
- 📚 **Track Physical & Digital Games** - Manage both formats with detailed metadata
- 🎮 **IGDB Integration** - Automatic game matching with cover art and metadata
- 📊 **Collection Statistics** - Track spending, completion rates, and platform distribution
- 🗂️ **Collections** - Organize games into custom collections
- 🔍 **Smart Search** - Find games quickly with advanced filtering
- 📥 **CSV Import** - Bulk import your existing collection
- 🎨 **5 Beautiful Themes** - Light, Dark, Midnight, Retro, and Ocean
- 🔐 **RESTful API** - Programmatic access to your collection
- 📍 **Location Tracking** - Remember where your physical games are stored
-**Ratings & Status** - Track completion status and personal ratings
- 👥 **Public Profiles** - Optionally share your collection with others
## 🚀 Quick Start
### Prerequisites
- Ruby 3.3+
- PostgreSQL 15+
- Node.js 18+ (for asset compilation)
- Docker (optional, for containerized development)
### Local Development
1. **Clone the repository**
```bash
git clone https://github.com/yourusername/turbovault.git
cd turbovault
```
2. **Install dependencies**
```bash
bundle install
```
3. **Set up environment variables**
```bash
cp .env.example .env
# Edit .env with your configuration
```
4. **Start Docker services**
```bash
docker-compose up -d
```
5. **Set up the database**
```bash
rails db:prepare
```
6. **Start the development server**
```bash
task dev
# or: bin/dev
```
7. **Visit the app**
- App: http://localhost:3000
- Mailpit (email testing): http://localhost:8025
### Demo Account
A demo account is automatically created in development:
- **Email:** demo@turbovault.com
- **Password:** password123
## 🐳 Docker Deployment
TurboVault includes Docker and Kubernetes manifests for easy deployment.
### Kubernetes (Recommended for Production)
TurboVault is designed for Kubernetes with automated GitHub Actions CI/CD.
**📖 Documentation:**
- ⭐ [Quick Start Guide](docs/QUICK_START.md) - Deploy in minutes
- [Deployment Guide](docs/DEPLOYMENT.md) - Complete reference
- [Kubernetes README](k8s/README.md) - K8s details
**🚀 Quick Deploy:**
```bash
# 1. Push to GitHub
git push origin main
# 2. Tag a release (triggers automatic build)
git tag v1.0.0 && git push origin v1.0.0
# 3. Configure Kubernetes secrets & manifests
cp k8s/secrets.yaml.example k8s/secrets.yaml
# Edit secrets.yaml, deployment.yaml, configmap.yaml
# 4. Deploy
./scripts/deploy-k8s.sh
```
See [Quick Start Guide](docs/QUICK_START.md) for detailed steps.
### Docker Compose (Development/Testing)
```bash
docker-compose -f docker-compose.prod.yml up -d
```
## 🔧 Configuration
### IGDB Integration (Optional)
To enable automatic game metadata matching:
1. Create a Twitch developer account at https://dev.twitch.tv
2. Register an application to get your Client ID and Secret
3. Add to `.env`:
```bash
IGDB_CLIENT_ID=your_client_id
IGDB_CLIENT_SECRET=your_client_secret
```
IGDB sync is enabled by default for all users and runs every 30 minutes.
## 📚 Documentation
**All documentation is in the [`docs/`](docs/) folder.**
**Quick Links:**
- ⭐ [Quick Start](docs/QUICK_START.md) - Deploy in minutes
- 🚀 [Deployment Guide](docs/DEPLOYMENT.md) - Complete reference
- 💻 [Development Guide](docs/DEVELOPMENT_GUIDE.md) - Local development
- 📖 [API Documentation](docs/API_DOCUMENTATION.md) - RESTful API
- 🎮 [IGDB Integration](docs/IGDB_INTEGRATION.md) - Game metadata
- 🎨 [Themes](docs/THEMES.md) - Customization
- 🔷 [Sorbet Types](docs/SORBET.md) - Type checking guide
- 🎯 [Demo Account](docs/DEMO_ACCOUNT.md) - Try it out
[**See all documentation →**](docs/README.md)
## 🛠️ Tech Stack
- **Framework:** Ruby on Rails 8.1 with Sorbet type checking
- **Frontend:** Hotwire (Turbo + Stimulus)
- **Styling:** Tailwind CSS
- **Database:** PostgreSQL with Row Level Security
- **Background Jobs:** Solid Queue
- **Deployment:** Docker, Kubernetes
- **APIs:** IGDB (game metadata)
## 🤖 Continuous Integration
TurboVault includes GitHub Actions workflows:
- **CI Pipeline** - Runs tests, linting, and security scans on every push
- **Build & Push** - Automatically builds Docker images and pushes to GitHub Container Registry
### Setup GitHub Actions
**No setup required!** The default workflow uses GitHub Container Registry (ghcr.io), which works out of the box with no secrets needed.
Just push a tag:
```bash
git tag v1.0.0
git push origin v1.0.0
```
Your image will be at: `ghcr.io/your-username/turbovault:v1.0.0`
**Want to use a different registry?** See [.github/SECRETS_SETUP.md](.github/SECRETS_SETUP.md) for examples (Docker Hub, private registry, etc.)
## 🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
All PRs will automatically run CI tests.
## 📝 License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## 🙏 Acknowledgments
- Game data provided by [IGDB](https://www.igdb.com/)
- Built with [Ruby on Rails](https://rubyonrails.org/)
- UI powered by [Tailwind CSS](https://tailwindcss.com/)
## 📧 Support
- 📖 [Documentation](docs/)
- 🐛 [Issue Tracker](https://github.com/yourusername/turbovault/issues)
- 💬 [Discussions](https://github.com/yourusername/turbovault/discussions)
---
Made with ❤️ for gamers and collectors