Skip to content

Repository files navigation

Yu-Gi-Oh! Deck & Wishlist

App per gestire una wishlist di carte e costruire deck per retro format (Goat, Edison, HAT, Tengu). Il modello di dominio (Card, Print, Deck, Format, Banlist…) è in CONTEXT.MD; le decisioni non ovvie in docs/adr/.

Architettura & scelte tecniche

Stack: Expo SDK 57 · React Native 0.86 · React 19 · Expo Router · TypeScript. Target: web primario, mobile in seguito.

Cross-platform first (principio guida): riusa il più possibile lo stesso codice su web e mobile. Evita scelte device-specific (file .web.tsx, rami Platform.OS) se non quando una capability differisce davvero; in quel caso isola la parte specifica dietro un piccolo modulo. Vedi AGENTS.md.

Persistenza (local-first): i dati utente (Wishlist, Deck) sono salvati on-device via @react-native-async-storage/async-storageuna sola API KV che funziona su web e native (niente localStorage/AsyncStorage separati). Forma relazionale (decks, deck_entries, wishlist_items); si salvano solo i riferimenti alle carte (cardId), non i payload. Tutto dietro un repository con exportAll(), così il futuro passaggio a Neon + Drizzle è un import di dati, non un redesign. → ADR 0001. In transizione a cloud auth-gated (Neon Auth + Data API + RLS, solo Google), che supera il local-first → ADR 0005.

Dati carta: YGOPRODeck API, on-demand, con cache persistita via TanStack Query (rate limit 20 req/s da rispettare).

Immagini: proxy/CDN di caching + disk cache di expo-image, per non hotlinkare direttamente (contro i termini YGOPRODeck). Il vero download-e-riospita arriverà col backend. → ADR 0002.

Formati & validazione: solo retro format, con banlist statiche impacchettate nell'app; validazione soft (warning, nessun blocco). → ADR 0003.

Librerie: TanStack Query ora. Zustand e Tamagui rimandati (non necessari in v1).


Progetto creato con create-expo-app.

Get started

  1. Install dependencies

    npm install
  2. Start the app

    npx expo start

In the output, you'll find options to open the app in a

You can start developing by editing the files inside the app directory. This project uses file-based routing.

Get a fresh project

When you're ready, run:

npm run reset-project

This command will move the starter code to the app-example directory and create a blank app directory where you can start developing.

Other setup steps

Learn more

To learn more about developing your project with Expo, look at the following resources:

Join the community

Join our community of developers creating universal apps.

Releases

Packages

Contributors

Languages