Skip to content

yocopk/trauma-score

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

15 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽฏ TraumaScore

Un'app web interattiva per calcolare il proprio "trauma score" attraverso un questionario autoironico basato su esperienze di vita. Progettata con un approccio mobile-first e un'interfaccia moderna.

๐Ÿ“ฑ Panoramica

TraumaScore รจ un'applicazione single-page che guida l'utente attraverso diverse categorie di esperienze potenzialmente traumatiche, permettendo di selezionare quelle vissute e calcolando un punteggio finale con commenti ironici personalizzati.

โœจ Caratteristiche Principali

  • ๐Ÿ“ฑ Mobile First: Ottimizzata per dispositivi mobili con design responsive
  • ๐ŸŽจ UI Moderna: Interfaccia pulita realizzata con TailwindCSS
  • ๐ŸŒ Multilingue: Supporto per italiano e inglese con i18next
  • ๐Ÿ“Š Punteggio Dinamico: Calcolo in tempo reale del trauma score
  • ๐Ÿ’พ Persistenza: Salvataggio automatico delle selezioni in localStorage
  • ๐ŸŽญ Commenti Ironici: Feedback personalizzato basato sul punteggio ottenuto
  • ๐Ÿ”„ Cambio Lingua: Selettore lingua in tempo reale

๐Ÿ› ๏ธ Tecnologie

  • React 18 + Vite - Framework e build tool
  • TypeScript - Type safety
  • TailwindCSS - Styling e design system
  • react-i18next - Internazionalizzazione
  • Firebase - Database e hosting (opzionale)
  • LocalStorage - Persistenza dati lato client

๐Ÿš€ Installazione e Avvio

Prerequisiti

  • Node.js (versione 16 o superiore)
  • npm o yarn

Setup del Progetto

# Clona il repository
git clone <url-repository>
cd trauma-score

# Installa le dipendenze
npm install

# Avvia il server di sviluppo
npm run dev

# Build per produzione
npm run build

๐ŸŽฎ Come Funziona

  1. Benvenuto: L'utente vede una schermata di benvenuto con il titolo "TraumaScore" e un pulsante "Inizia"
  2. Selezione Lingua: Possibilitร  di scegliere tra italiano e inglese
  3. Categorie Progressive: Navigazione attraverso 7 categorie di traumi:
    • ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ Famiglia & Infanzia
    • ๐Ÿ’” Amore & Relazioni
    • ๐Ÿง  Mente & Emozioni
    • ๐Ÿฅ Corpo & Salute
    • โšฐ๏ธ Lutti & Perdita
    • ๐Ÿ’ผ Lavoro & Soldi
    • ๐ŸŽฏ Bonus Trauma
  4. Selezione Interattiva: Checkbox per ogni esperienza con punteggio visibile
  5. Risultato Finale: Punteggio totale con commento ironico personalizzato
  6. Reset e Ricomincia: Possibilitร  di rifare il test

๐Ÿ“Š Sistema di Punteggio

Il punteggio viene calcolato sommando i punti di ogni esperienza selezionata:

  • Traumi lievi: 4-7 punti
  • Traumi moderati: 8-12 punti
  • Traumi gravi: 15-25 punti
  • Punteggio massimo teorico: 1146 punti

Categorie di Risultato

  • 0-50: "Vita abbastanza serena" ๐Ÿ˜Œ
  • 51-150: "Qualche botta, ma si sopravvive" ๐Ÿ˜…
  • 151-300: "La vita ti ha testato parecchio" ๐Ÿ˜ฐ
  • 300+: "Meriti una medaglia al valore" ๐Ÿ…

๐Ÿ“‹ Struttura del Progetto

trauma-score/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ components/          # Componenti React riutilizzabili
โ”‚   โ”‚   โ”œโ”€โ”€ Button.tsx
โ”‚   โ”‚   โ””โ”€โ”€ LanguageSelector.tsx
โ”‚   โ”œโ”€โ”€ data/               # Dati statici
โ”‚   โ”‚   โ””โ”€โ”€ traumaData.ts   # Database dei traumi e categorie
โ”‚   โ”œโ”€โ”€ firebase/           # Configurazione Firebase
โ”‚   โ”‚   โ”œโ”€โ”€ config.ts
โ”‚   โ”‚   โ””โ”€โ”€ database.ts
โ”‚   โ”œโ”€โ”€ locales/            # File di traduzione
โ”‚   โ”‚   โ”œโ”€โ”€ en.json
โ”‚   โ”‚   โ””โ”€โ”€ it.json
โ”‚   โ”œโ”€โ”€ types/              # Definizioni TypeScript
โ”‚   โ”‚   โ””โ”€โ”€ quiz.ts
โ”‚   โ”œโ”€โ”€ utils/              # Utilitร  e helper
โ”‚   โ”‚   โ”œโ”€โ”€ messages.ts
โ”‚   โ”‚   โ”œโ”€โ”€ translations.ts
โ”‚   โ”‚   โ””โ”€โ”€ util.ts
โ”‚   โ”œโ”€โ”€ App.tsx             # Componente principale
โ”‚   โ””โ”€โ”€ main.tsx            # Entry point
โ”œโ”€โ”€ public/                 # Asset statici
โ””โ”€โ”€ README.md

๐ŸŽฏ Funzionalitร  Avanzate

  • Salvataggio Automatico: Le selezioni vengono salvate automaticamente nel localStorage
  • Responsive Design: Perfettamente utilizzabile su desktop, tablet e mobile
  • Accessibilitร : Progettato seguendo le best practice per l'accessibilitร  web
  • Performance: Ottimizzato per caricamenti rapidi e fluiditร  d'uso

๐Ÿ”ง Personalizzazione

Aggiungere Nuovi Traumi

I traumi sono definiti in src/data/traumaData.ts. Per aggiungerne di nuovi:

{
  id: "nuovo-trauma",
  text: "Descrizione del trauma",
  points: 10,
}

Modificare i Commenti Finali

I messaggi personalizzati sono configurabili in src/utils/messages.ts.

๐ŸŒ Internazionalizzazione (i18n)

L'app supporta la traduzione in piรน lingue utilizzando react-i18next.

Lingue Supportate

  • ๐Ÿ‡ฎ๐Ÿ‡น Italiano (lingua predefinita)
  • ๐Ÿ‡บ๐Ÿ‡ธ Inglese

Struttura delle Traduzioni

I file di traduzione si trovano in src/locales/:

src/locales/
โ”œโ”€โ”€ it.json    # Traduzioni italiane
โ””โ”€โ”€ en.json    # Traduzioni inglesi

Aggiungere Nuove Lingue

  1. Crea un nuovo file JSON in src/locales/ (es: fr.json)
  2. Copia la struttura da it.json e traduci i testi
  3. Registra la nuova lingua in src/i18n/index.ts:
import frTranslations from "../locales/fr.json";

const resources = {
  it: { translation: itTranslations },
  en: { translation: enTranslations },
  fr: { translation: frTranslations }, // Nuova lingua
};
  1. Aggiungi l'opzione nel componente LanguageSelector.tsx

Utilizzare le Traduzioni

import { useTranslation } from "react-i18next";

const { t } = useTranslation();
const welcomeTitle = t("welcome.title");

Hooks Personalizzati

  • useTraumaData(): Restituisce i dati dei traumi tradotti
  • useTraumaMessages(): Gestisce i messaggi di punteggio e partecipanti tradotti

๐Ÿค Contribuire

  1. Fork del progetto
  2. Crea un branch per la tua feature (git checkout -b feature/AmazingFeature)
  3. Commit delle modifiche (git commit -m 'Add some AmazingFeature')
  4. Push al branch (git push origin feature/AmazingFeature)
  5. Apri una Pull Request

๐Ÿ“„ Licenza

Questo progetto รจ distribuito sotto licenza MIT. Vedi LICENSE per maggiori informazioni.

โš ๏ธ Disclaimer

Questa applicazione ha scopo puramente di intrattenimento e autoriflessione ironica. Non sostituisce in alcun modo un consulto professionale psicologico o medico. Se stai vivendo difficoltร  emotive serie, ti invitiamo a rivolgerti a un professionista qualificato.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published