logo

Task Manager Fullstack

Un task manager costruito con tecnologie all'avanguardia per una fluida esperienza utente 🚀

ViteJSExpressJSSQLiteTanstack Query & Router
post_image
12/10/2024
0
Codice Sorgente
Live Demo

⚠️ Nota che il Backend è hostato su render.com. Questo vuol dire che potrebbero servire alcuni secondi prima di tornare online per limitazione del tier gratuito!

La Storia

Il percorso di ogni sviluppatore include la creazione di un task manager - è quasi un rito di passaggio. Ma invece di creare un'altra semplice lista di cose da fare, ho visto l'opportunità di esplorare le più recenti tecnologie risolvendo un problema comune. L'obiettivo? Creare un task manager che non sia solo funzionale, ma che serva anche come campo di prova per le moderne tecnologie web e le migliori pratiche.

Cosa Lo Rende Speciale

Immagina un task manager reattivo quanto i tuoi pensieri. Aggiungi un'attività? È già lì. Aggiorni il suo stato? L'interfaccia si aggiorna senza interruzioni. Elimini qualcosa? Sparisce senza ricaricare la pagina. Tutta questa magia avviene grazie alla potenza della sincronizzazione in tempo reale di TanStack Query, facendo sembrare l'app più un'applicazione nativa che una pagina web. ✨

L'Arte Tecnica

Funzionalità Principali

Il Segreto del Successo

Magia Frontend:

Potenza Backend:

Sfide e Soluzioni

Il Puzzle della Gestione dello Stato 🧩

L'Architettura TypeScript 🎯

Approfondimento Tecnico

Architettura Frontend

Esempio di task mutation usando TanStack Query

Code
Copiato!
const addTask = useMutation({
  mutationFn: (newTask: Task) => {
    return axios.post('/api/tasks', newTask)
  },
  onSuccess: () => {
    queryClient.invalidateQueries({ queryKey: ['tasks'] })
  }
})

Struttura Backend

Task route handler con un corretto error handling

Code
Copiato!
router.post('/tasks', async (req: Request, res: Response) => {
  try {
    const task = await db.create(req.body)
    res.status(201).json(task)
  } catch (error) {
    handleError(error, res)
  }
})

Dietro le Quinte

Questo progetto è stato un esercizio di bilanciamento tra le moderne pratiche di sviluppo e la funzionalità pratica. Ogni decisione tecnica, dalla scelta di Vite per il sistema di build all'implementazione di TanStack Query per la gestione dello stato, è stata presa considerando sia l'esperienza dello sviluppatore che le prestazioni per l'utente finale.

Prossimi Passi