All work

(05/05)Web app, designed and coded

Turns a TV-series binge into a plan: tell it how many days and hours you have, and it tells you when you will finish.

A.Y.
2025
Context
Informatica ed elementi di programmazione II (Computer Science and Programming II)
Methods
Concept definition, page architecture, debounced live search, reactive planning
Tools
Vue 3, Vuetify, Firebase, TMDB API
Grade
27/30

In short

Challenge
A TV-series marathon has no plan: nobody knows how long it takes, when it ends, or whether it collides with exams or sleep.
Solution
A web app that turns your free time into a plan: days per week and hours per day in, an end date out.
Delivered
Six pages in Vue 3 and Vuetify, live search over The Movie Database, accounts and watchlists in Firestore.

01 · The problem

A binge with no plan

For people who love TV series, a marathon is chaos: how long will it take, when will it end, and will it collide with exams or sleep?

Marathoner turns it into a planned experience, based on the free time you have.

02 · The brief

One exam, three constraints

What the course asked for

A website with several pages, an external API and a database holding the user’s data. Marathoner is my answer to each of the three.

  1. 01 Several pagesSix pages, one job each

    From the login to the planner, and an ironic page of ready-made excuses.

  2. 02 An external APIThe Movie Database

    Series, posters, episodes and running times.

  3. 03 A databaseFirestore

    Accounts and watchlists stay between visits.

03 · The choices

From a key pressed to a saved plan

  1. 01You type

    Search starts from the field on the home page

  2. 02A 300 ms wait

    The debounce avoids a request on every key

  3. 03The Movie Database

    Series, posters, episodes and runtimes from the API

  4. 04Only the latest answer

    Responses that arrive out of order are dropped

  5. 05The planner works it out

    Days, hours, end date and episodes per session

  6. 06Firestore saves

    Accounts and watchlists stay between visits

What happens between a key pressed and a watchlist saved.

04 · The project

Every page has one job

01/04 Search

Search that answers while you type

The home page is a large search field over The Movie Database: suggestions appear after a 300 ms debounce, with protection against out-of-order responses, above trending and top-rated series.

  1. Live search
  2. Trending now

02/04 Planner

Two sliders, an end date

Pick days per week and hours per day: thanks to Vue’s reactivity the planner instantly recalculates viewing days, weeks, the finish date and episodes per session.

  1. Days per week · hours per day
  2. Finish date

03/04 Alerts

Exams first, then sleep

Two built-in alerts: an exam warning that tells you how many episodes a day you need to finish in time, and a sleep check that reminds you to stop at a decent hour.

  1. Deadline alert
  2. Sleep check

04/04 Excuses

A tone of voice, too

The excuses page has no maths at all: ready-made excuses to cancel plans, with a fake “credibility” meter. It exists to make visitors smile and gives the product a personality.

05 · The outcome

A working web app

What I delivered

Built with Vue 3, Vue Router and Vuetify’s Material components, Firebase Firestore for accounts and watchlists, and the TMDB API for posters, episodes and running times.

What I learned

Wiring the TMDB API, Firestore and Vue’s reactivity showed me how data, waiting time and state shape an interface: a debounced search or a response that arrives out of order is a user-experience problem before it is a technical one.
Next project 01Every Cigarette Leaves a MarkPackaging redesign · physical prototype · 2026

(03) Contact

And you, what do you need?

UX/UI internships and a master’s

I am looking for internships and collaborations as a UX/UI designer, and a master’s programme starting in autumn 2027. Get in touch.