A platform where the CS2 community unites to demand better anti-cheat from Valve. Every signature goes into an open letter delivered to Valve on August 31, 2026.
🖊️ Petition — Sign via Steam, your account is your signature 🎬 Media Wall — Share clips & screenshots of cheaters ruining the game 💬 Community Opinions — Discuss issues, vote, comment — Reddit-style 📊 Statistics — Track cheating prevalence and VAC ban data 💰 Revenue Tracker — Real-time estimate of how much CS2 earns daily 📰 Blog — Articles and updates about the movement 📬 Contact — Reach the team directly
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router, Turbopack) |
| Language | TypeScript 5 |
| Database | PostgreSQL + Prisma ORM |
| Auth | Steam OpenID 2.0 via NextAuth v5 |
| Styling | Tailwind CSS v4 + shadcn/ui |
| Editor | Tiptap rich text editor |
| Nodemailer (Proton Mail SMTP) | |
| Deployment | Docker → GitHub Actions → DockerHub → Watchtower |
| Proxy | Cloudflare Tunnel → Nginx Proxy Manager |
- Node.js 22+
- PostgreSQL 15+
- Steam API Key
# Clone the repository
git clone https://github.com/KasheK420/savecounterstrike.git
cd savecounterstrike
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env
# Edit .env with your values (database URL, Steam API key, etc.)
# Run database migrations
npx prisma migrate dev
# Generate Prisma client
npx prisma generate
# Start the dev server
npm run devThe app will be running at http://localhost:3000.
| Command | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Production build (includes type checking) |
npm run start |
Start production server |
npm run lint |
Run ESLint |
npm test |
Run tests (Vitest) |
This project uses automatic semantic versioning on every push to master:
| Commit prefix | Bump | Example |
|---|---|---|
BREAKING / BREAKING CHANGE |
Major | 1.0.0 → 2.0.0 |
feat: |
Minor | 1.0.0 → 1.1.0 |
fix:, docs:, refactor:, etc. |
Patch | 1.0.0 → 1.0.1 |
The current version and git commit SHA are displayed in the site footer.
src/
├── app/
│ ├── (admin)/ # Admin panel (protected)
│ ├── (public)/ # Public pages (petition, opinions, stats, etc.)
│ └── api/ # API routes
├── components/
│ ├── auth/ # Session provider, Steam login
│ ├── hero/ # Hero sections, counters
│ ├── petition/ # Petition, signatures, notable signers
│ ├── opinions/ # Opinion cards, voting, comments
│ ├── revenue/ # Revenue tracker breakdown
│ └── shared/ # Reusable components
├── lib/
│ ├── auth.ts # NextAuth config (JWT sessions)
│ ├── db.ts # Prisma singleton
│ ├── steam.ts # Steam OpenID 2.0 utilities
│ ├── mask.ts # Privacy masking (server-only)
│ ├── rate-limit.ts # IP-based rate limiting
│ └── validations.ts # Zod schemas
└── proxy.ts # Edge middleware (security headers)
We welcome contributions from the community! See CONTRIBUTING.md for guidelines on:
- Setting up the development environment
- Code style and conventions
- Submitting pull requests
- Reporting bugs
Found a vulnerability? Do NOT open a public issue. Please read our Security Policy and report responsibly via email.
This project is licensed under the MIT License — see LICENSE for details.
Created by Lukáš Majoros (@KasheK420)
If you believe CS2 deserves better anti-cheat, sign the petition.