Skip to content

pinksy91/AlphaType

Repository files navigation

AlphaType

AlphaType logo

Un dojo di dattilografia bilingue che unisce pratica narrativa, progressione in stile RPG e una tastiera virtuale tattile

React 19.1.1 TypeScript 5.8 Vite 6 Tailwind CSS

Languages


🎯 Panoramica

AlphaType è un trainer di dattilografia moderno e interattivo che trasforma l'apprendimento della digitazione in un'esperienza coinvolgente simile a un videogioco. Progettato per supportare sia italiano che inglese, AlphaType combina:

  • Pratica guidata con filtri personalizzabili e testi curati
  • Modalità Storia con capitoli narrativi in tre generi diversi
  • Sistema di progressione RPG con livelli, XP e ricompense
  • Tastiera virtuale animata con feedback visivo in tempo reale
  • Coaching predittivo che analizza le tue performance e fornisce consigli mirati
  • Dashboard analitica per tracciare miglioramenti nel tempo

Tutto questo funziona completamente offline, senza dipendenze da servizi esterni.


✨ Caratteristiche principali

🎮 Modalità di gioco

Pratica Hub

  • 5 preset ottimizzati: Standard, Principiante, Velocità, Precisione, Programmatore
  • Filtri configurabili: punteggiatura, numeri, modalità zen
  • Tastiera virtuale opzionale con zone delle dita e heatmap degli errori
  • Coaching predittivo immediato dopo ogni sessione

Modalità Storia

  • 3 generi narrativi: Fantasy, Fantascienza, Avventura
  • 5 capitoli per genere completamente tradotti in italiano e inglese
  • Progressione integrata con il sistema XP principale
  • Riassunto della storia per riprendere da dove hai lasciato

Dashboard Analytics

  • Grafici interattivi per WPM e precisione
  • Statistiche dettagliate: migliori performance, medie, tendenze
  • Storico sessioni con visualizzazione cronologica
  • Responsive design con Recharts

Multiplayer (In arrivo)

  • Anteprima delle funzionalità future: arena, gilde, classifiche

🏗️ Architettura tecnica

Stack tecnologico

Frontend:  React 19.1.1 + TypeScript 5.8.2
Build:     Vite 6.2
Styling:   Tailwind CSS (via CDN)
Charts:    Recharts
State:     Context API + Hooks personalizzati

Struttura del progetto

AlphaType/
├── src/
│   ├── App.tsx                    # Orchestratore principale: routing, XP, state globale
│   ├── components/
│   │   ├── GameUI.tsx             # Shell principale con navigazione e HUD
│   │   ├── TypingTest.tsx         # Motore di digitazione riutilizzabile
│   │   ├── StoryMode.tsx          # Gestione capitoli e narrativa
│   │   ├── VirtualKeyboard.tsx    # Tastiera animata con feedback
│   │   ├── PredictiveCoaching.tsx # AI coaching locale
│   │   ├── AnalyticsDashboard.tsx # Grafici e statistiche
│   │   ├── FilterToolbar.tsx      # Controlli filtri pratica
│   │   └── common/                # Componenti UI riutilizzabili
│   ├── hooks/
│   │   └── useTypingGame.ts       # Logica core digitazione
│   ├── services/
│   │   ├── contentEngine.ts       # Selezione intelligente dei testi
│   │   ├── textGenerator.ts      # Generazione procedurale
│   │   ├── geminiService.ts       # Integrazione Gemini (opzionale)
│   │   └── predictiveAI.ts        # Coaching AI (opzionale)
│   ├── data/
│   │   └── textLibrary.ts         # Biblioteca testi bilingue con metadata
│   ├── utils/
│   │   ├── filterEngine.ts        # Applicazione filtri post-selezione
│   │   └── logger.ts              # Sistema di logging con subscription
│   ├── contexts/
│   │   └── LanguageContext.tsx    # Gestione lingua con persistenza
│   └── i18n/
│       └── translations.ts        # Catalogo stringhe bilingue
└── index.html                     # Entry point con Tailwind CDN

🚀 Installazione e avvio

Prerequisiti

  • Node.js 18 o superiore
  • npm o package manager compatibile

Setup rapido

# 1. Clona il repository
git clone https://github.com/pinksy91/AlphaType.git

# 2. Entra nella cartella
cd AlphaType

# 3. Installa le dipendenze
npm install

# 4. Avvia il server di sviluppo
npm run dev

L'applicazione sarà disponibile su http://localhost:5173

Build di produzione

# Crea la build ottimizzata
npm run build

# Preview della build
npm run preview

🔧 Configurazione opzionale

Integrazione Google Gemini

Per abilitare la generazione di testi e coaching avanzato tramite AI:

  1. Copia .env.local in .env
  2. Aggiungi la tua API key:
    GEMINI_API_KEY=la_tua_chiave_api
  3. Il sistema mapperà automaticamente la chiave tramite vite.config.ts

Nota: L'app funziona completamente offline senza questa configurazione. Gemini è puramente opzionale per funzionalità avanzate.


💡 Caratteristiche avanzate

Sistema di contenuti

  • Biblioteca curata: oltre 50 testi bilingue con metadata dettagliati
  • Scoring intelligente: algoritmo di selezione basato su difficoltà, categoria, lunghezza
  • Rotazione anti-ripetizione: evita testi recenti per varietà
  • Generazione procedurale: frasi infinite da word banks stratificati per difficoltà
  • Filtri post-processo: punteggiatura, numeri e zen mode applicati dinamicamente

Feedback in tempo reale

  • Heatmap errori per tasto: identifica quali tasti causano più problemi
  • Zone delle dita colorate: guida visiva per la posizione corretta delle mani
  • Highlight dinamico: evidenzia la lettera corrente e mostra errori istantaneamente
  • Statistiche live: WPM, precisione e tempo rimanente sempre visibili

Sistema di progressione

  • Curva esponenziale: XP richiesti = XP_PER_WORD × 1.2^(livello - 1)
  • Ricompense basate su performance: più precisione = più XP
  • Persistenza cross-session: livello e XP salvati durante la sessione
  • Barra progresso visiva: mostra avanzamento verso il prossimo livello

Localizzazione completa

  • Cambio lingua istantaneo: tutto l'UI si aggiorna senza ricaricare
  • Persistenza in localStorage: la lingua preferita viene ricordata
  • Attributo <html lang>: aggiornato automaticamente per accessibilità
  • Layout tastiera adattivo: passa tra layout italiano e US

🎨 Design e UX

Principi di design

  • Dark mode nativo: interfaccia ottimizzata per sessioni lunghe
  • Animazioni fluide: transizioni CSS e feedback visivo immediato
  • Responsive layout: si adatta da mobile a desktop
  • Accessibilità: contrasti WCAG-compliant e navigazione da tastiera

Componenti riutilizzabili

Tutti i componenti comuni (Card, Button, Loader) sono centralizzati in components/common/ con stili Tailwind consistenti per facilitare manutenzione ed estensioni future.


📊 Come funziona

Flusso di una sessione di pratica

  1. Selezione contenuto: contentEngine.ts analizza la biblioteca e seleziona il testo ottimale
  2. Applicazione filtri: filterEngine.ts modifica il testo secondo i toggle attivi
  3. Digitazione: useTypingGame.ts cattura keystrokes, calcola metriche, gestisce timer
  4. Feedback visivo: VirtualKeyboard.tsx anima i tasti e mostra heatmap
  5. Risultati: calcolo WPM, precisione, errori comuni
  6. Coaching: PredictiveCoaching.tsx genera consigli localizzati
  7. XP e livello: App.tsx aggiorna progressione e salva dati analytics

Algoritmo di selezione testi

score = (categoryMatch × 0.4) + 
        (difficultyMatch × 0.3) + 
        (lengthPreference × 0.2) + 
        (recencyPenalty × 0.1)

Il sistema evita testi usati di recente e favorisce quelli che matchano meglio i filtri attivi.


🛠️ Note per sviluppatori

Debug e logging

  • Clicca il pulsante log flottante per vedere lo stream di eventi in tempo reale
  • Tutti gli eventi passano attraverso utils/logger.ts
  • LogViewer.tsx offre filtri e ricerca nell'event stream

Gestione dello stato

  • State locale: pratica corrente, filtri, testo selezionato (App.tsx)
  • Context globale: lingua, theme, preferenze (LanguageContext.tsx)
  • Hook custom: logica di digitazione isolata (useTypingGame.ts)
  • Persistenza: localStorage per lingua, sessioni in memoria

Focus management

La tastiera virtuale mantiene il focus sull'input invisibile per evitare blur accidentali. Il componente TypingTest gestisce automaticamente focus/blur durante mount/unmount.

Performance

  • Debouncing: gestione keystrokes ottimizzata per evitare race conditions
  • Memoization: componenti pesanti wrappati in React.memo
  • Lazy loading: vista multiplayer caricata on-demand
  • CDN Tailwind: zero build time per styling

🗺️ Roadmap

Fase 1: Contenuti e AI (Q2 2025)

  • Connettere servizi Gemini per generazione testi cloud
  • Abilitare coaching AI avanzato con suggerimenti personalizzati
  • Espandere biblioteca testi con 100+ nuovi contenuti
  • Aggiungere categorie specializzate (medico, legale, tecnico)

Fase 2: Persistenza e progressione (Q3 2025)

  • Database locale (IndexedDB) per storico completo
  • Sistema di achievement e badge
  • Grafici avanzati con breakdown per categoria
  • Export dati in CSV/JSON

Fase 3: Multiplayer (Q4 2025)

  • Gare in tempo reale con WebSocket
  • Sistema di ranking e leaderboard
  • Gilde e sfide di gruppo
  • Modalità torneo

Fase 4: Espansione (2026)

  • Supporto per altre lingue (spagnolo, francese, tedesco)
  • App mobile nativa (React Native)
  • Modalità allenatore vocale
  • Integrazione con piattaforme educative

🧪 Testing

# Esegui test (quando implementati)
npm run test

# Test con coverage
npm run test:coverage

# Test E2E
npm run test:e2e

Nota: La suite di test è pianificata per coprire useTypingGame, content engines e filter logic.


🤝 Contribuire

AlphaType è attualmente un progetto solo, ma suggerimenti e feedback sono benvenuti!

Per segnalare bug o proporre funzionalità, apri una issue su GitHub.


👨‍💻 Autore

Pinksy91
Ogni singola riga di codice in questo repository è stata scritta dalla stessa persona.


📄 Licenza

Le informazioni sulla licenza non sono ancora state pubblicate. Fino all'aggiunta di un file LICENSE, tutti i diritti sono riservati all'autore.


🙏 Riconoscimenti

  • React Team per React 19 e il nuovo ecosistema
  • Vercel per Vite e il tooling moderno
  • Tailwind Labs per il framework CSS
  • Recharts per i componenti grafici
  • Google per l'API Gemini (integrazione opzionale)

Fatto con ❤️ e TypeScript

Inizia a digitare più velocemente oggi stesso! 🚀

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors