CoOp:Anything
Search any game and see how much of it you can play with friends: every co-op mod, its stage, quality and community rating.
Gérez vos decks de cartes en ligne avec PlayDeck
Translation pending
GamesTypeScript · PLpgSQLGitHub @romaincouturierOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Application Next.js 15 pour gérer vos decks de cartes et jouer en multijoueur avec authentification et stockage cloud.
Couleurs SuperTilt :
git clone <votre-repo>
cd playdeck
npm install
Schéma de base (ÉTAPE 1) :
supabase/schema.sqldecks et cardscard-imagesSchéma de jeu multijoueur (ÉTAPE 2) :
supabase/game-schema.sqlgames, game_players, et game_cardsgenerate_game_code() et distribute_cards()card-images a été créé.env.local.example :cp .env.local.example .env.local
.env.local et ajoutez vos informations Supabase :NEXT_PUBLIC_SUPABASE_URL=votre-url-supabase
NEXT_PUBLIC_SUPABASE_ANON_KEY=votre-cle-anon-supabase
Vous pouvez trouver ces informations dans :
npm run dev
Ouvrez http://localhost:3000 dans votre navigateur.
playdeck/
├── app/
│ ├── decks/ # Pages de gestion des decks
│ │ ├── [id]/ # Page détail d'un deck
│ │ │ ├── actions.ts # Actions serveur pour les cartes
│ │ │ └── page.tsx # Page détail du deck
│ │ ├── actions.ts # Actions serveur pour les decks
│ │ └── page.tsx # Liste des decks
│ ├── games/ # Pages de jeu multijoueur
│ │ ├── [id]/ # Pages d'une partie
│ │ │ ├── lobby/ # Salle d'attente
│ │ │ ├── actions.ts # Actions de jeu (piocher, jouer, etc.)
│ │ │ └── page.tsx # Plateau de jeu
│ │ ├── create/ # Création de partie
│ │ ├── join/ # Rejoindre une partie
│ │ └── actions.ts # Actions de gestion des parties
│ ├── login/ # Page de connexion
│ │ └── page.tsx
│ ├── globals.css # Styles globaux + variables Tailwind
│ ├── layout.tsx # Layout principal
│ └── page.tsx # Page d'accueil (redirige vers /decks)
├── components/
│ ├── ui/ # Composants UI Shadcn
│ ├── card-grid.tsx # Grille d'affichage des cartes
│ ├── card-image.tsx # Affichage d'image avec gestion d'erreur
│ ├── card-upload.tsx # Composant d'upload multiple de cartes
│ ├── create-deck-dialog.tsx # Dialog de création de deck
│ ├── create-game-form.tsx # Formulaire de création de partie
│ ├── deck-card.tsx # Carte d'affichage d'un deck
│ ├── game-board.tsx # Plateau de jeu avec Realtime
│ ├── game-lobby.tsx # Lobby avec liste des joueurs Realtime
│ └── join-game-form.tsx # Formulaire pour rejoindre une partie
├── lib/
│ ├── supabase/
│ │ ├── client.ts # Client Supabase côté navigateur
│ │ └── server.ts # Client Supabase côté serveur
│ └── utils.ts # Utilitaires (cn)
├── types/
│ └── database.types.ts # Types TypeScript pour la BDD (avec tables de jeu)
├── supabase/
│ ├── schema.sql # Schéma de base (decks/cards)
│ └── game-schema.sql # Schéma du jeu multijoueur
└── proxy.ts # Proxy d'authentification (Next.js 15)
decks
id (UUID, PK)user_id (UUID, FK vers auth.users)name (TEXT)description (TEXT, nullable)created_at (TIMESTAMP)cards
id (UUID, PK)deck_id (UUID, FK vers decks)image_url (TEXT)position (INTEGER)created_at (TIMESTAMP)games
id (UUID, PK)host_id (UUID, FK vers auth.users)deck_id (UUID, FK vers decks)code (TEXT, unique) - Code à 6 caractèresstatus (TEXT) - 'waiting', 'playing', 'finished'max_players (INTEGER) - 2 à 6current_turn_player_id (UUID, nullable)created_at, started_at, finished_at (TIMESTAMP)game_players
id (UUID, PK)game_id (UUID, FK vers games)user_id (UUID, FK vers auth.users)player_order (INTEGER) - Ordre de jeuis_host (BOOLEAN)joined_at (TIMESTAMP)game_cards
id (UUID, PK)game_id (UUID, FK vers games)card_id (UUID, FK vers cards)location (TEXT) - 'deck', 'hand', 'discard'owner_user_id (UUID, nullable, FK vers auth.users)position (INTEGER)created_at (TIMESTAMP)Dans la salle d'attente :
Pendant la partie :
# Développement
npm run dev
# Build production
npm run build
# Démarrer en production
npm start
# Linter
npm run lint
🔧 Problèmes d'affichage des images, d'upload ou d'authentification ?
Consultez le Guide de Dépannage Complet qui couvre :