BeamNG.Earth
A 1:1 scale streamed Earth for BeamNG.drive: real elevation and satellite imagery, floating origin, LOD streaming from a companion server
翻譯準備中
Minecraft-Stats is a website that allows you to track players amount statistics in more than 300 differents servers. If the server is not listed, you can add it instantly. We store all the data, so you can see the evolution of your server.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Plateforme web qui suit en continu le nombre de joueurs sur les serveurs Minecraft référencés, et publie leurs courbes historiques. Accessible sur minecraft-stats.fr et minecraft-stats.com — même application, deux domaines. Minecraft Stats ping chaque serveur Minecraft référencé toutes les 10 minutes et stocke les mesures. Le résultat : des courbes de joueurs sur plusieurs mois, des classements par activité réelle, des métriques de croissance hebdomadaires et mensuelles — au lieu des classements par votes accumulés des sites concurrents.檢視完整 README ↗
Plateforme web qui suit en continu le nombre de joueurs sur les serveurs Minecraft référencés, et publie leurs courbes historiques.
Accessible sur minecraft-stats.fr et minecraft-stats.com — même application, deux domaines.
Minecraft Stats ping chaque serveur Minecraft référencé toutes les 10 minutes et stocke les mesures. Le résultat : des courbes de joueurs sur plusieurs mois, des classements par activité réelle, des métriques de croissance hebdomadaires et mensuelles — au lieu des classements par votes accumulés des sites concurrents.
Aujourd'hui : ~520 serveurs référencés, ~28 000 visiteurs uniques par mois, hébergé sur un VPS en France.
Collecte automatisée
Un scheduler ping chaque serveur toutes les 10 minutes via @minescope/mineping, espace les requêtes pour ne pas saturer les serveurs cibles, et bulk insert les mesures dans PostgreSQL. Toutes les 6 heures, un second job rafraîchit les favicons (Sharp → WebP) et recalcule les métriques de croissance.
Visualisation Page d'accueil avec stats globales (24 h, 7 j, 30 j, 6 mois, 1 an) et intervalles d'agrégation (30 min, 1 h, 6 h, 1 jour, 1 semaine). Chaque page serveur affiche son historique complet via AG Charts, son pic, sa moyenne, sa médiane, sa croissance.
Recherche et filtres Pagination côté serveur, recherche par nom ou IP, filtres multi-sélection par catégorie (Survival, Creative, PvP, Roleplay, Minigames…) et langue (FR, EN, ES, DE, IT, PT, RU…).
Comptes
Inscription email avec vérification (MJML + Resend), OAuth Google et Discord (Ally), hash Argon2, rate limiting par route. Un utilisateur connecté peut soumettre un serveur et gérer ceux qu'il a ajoutés. Rôles : user, writer (blog), admin.
Blog et API publique
Blog d'articles avec éditeur Tiptap côté admin. API REST versionnée /api/v1, documentée automatiquement via Swagger/Scalar UI sur /docs. Cache Redis applicatif + headers Cache-Control sur les endpoints publics.
| Couche | Techno |
|---|---|
| Frontend | Next.js 16 (App Router) + React 19 |
| Charts | AG Charts Community |
| Forms | React Hook Form + Zod |
| Styling | Tailwind CSS + Radix UI (shadcn) |
| Backend | AdonisJS 6 |
| ORM | Lucid |
| Base de données | PostgreSQL |
| Cache + rate limiting | Redis |
| Auth OAuth | Ally |
| Resend + MJML | |
| Images | Sharp (PNG → WebP) |
| Ping Minecraft | @minescope/mineping |
| Monitoring | Prometheus + Grafana |
| Hébergement | VPS Pulseheberg (France) |
┌────────────────────┐
│ Cloudflare CDN │
└──────────┬─────────┘
│
┌────────────────────┴───────────────────┐
│ │
┌─────▼──────┐ ┌──────▼─────┐
│ Next.js │ ── REST /api/v1 ──▶ │ AdonisJS 6 │
│ App Router│ │ (Node 24) │
│ ISR + SSR │ └──────┬─────┘
└────────────┘ │
┌────────────────────┼───────────────────┐
│ │ │
┌─────▼─────┐ ┌──────▼──────┐ ┌──────▼──────┐
│ PostgreSQL│ │ Redis │ │ Scheduler │
│ (Lucid) │ │ cache + RL │ │ pings 10min │
└───────────┘ └─────────────┘ │ growth 6h │
└──────┬──────┘
│
┌──────▼──────┐
│ Minecraft │
│ servers (×N)│
└─────────────┘
servers — un serveur Minecraft référencéserver_stats — une mesure de ping (one row per serveur per 10 min), table time-series partitionnable mensuellementserver_stats_hourly — agrégation horaire pré-calculée pour les vues longues plagesserver_growth_stats — métriques de croissance hebdomadaires/mensuelles recalculées par croncategories, languages + tables pivot — taxonomie many-to-manyusers, access_tokens, posts — comptes, OAuth, blogDocumentation interactive sur /docs (Scalar UI), spec OpenAPI sur /swagger.
| Endpoint | Description |
|---|---|
GET /api/v1/servers | Liste tous les serveurs avec leurs stats récentes |
GET /api/v1/servers/paginate | Pagination + filtres (catégories, langues, recherche) |
GET /api/v1/servers/:id | Détails d'un serveur |
GET /api/v1/servers/:id/stats | Historique d'un serveur (fromDate, toDate, interval) |
GET /api/v1/global-stats | Agrégation des joueurs sur tous les serveurs |
GET /api/v1/website-stats | Statistiques globales de la plateforme |
GET /api/v1/categories, /languages | Taxonomie publique |
POST /api/v1/login, /register, /verify-email | Auth email |
GET /api/v1/login/:provider | OAuth (Google, Discord) |
GET /metrics | Métriques Prometheus |
Rate limiting adaptatif par route, validation VineJS, CORS configuré pour les deux domaines.
code/
├── backend/ AdonisJS 6 — API REST + scheduler + ping Minecraft
├── frontend/ Next.js 16 — App Router + ISR + SSR
├── docs/ Documentation interne, scripts ops
├── analytics/ Données SQLite extraites pour analyses ad-hoc
└── CLAUDE.md Guide pour le développement assisté par IA
GPL-3.0 — voir LICENSE.
Gabriel Landry (Sportek) — github.com/Sportek — gabriel-landry.dev
Nom de domaine minecraft-stats.com offert par Pol Marnette (pol.tf).