Kevin cb90281e5e Feat: Activity page enhancements (#106)
* Add activity page components and Tautulli stats integration

- Add StatsOverview component for watch statistics display
- Add WatchHistory component for recent watch activity
- Add useTautulliStats composable for Tautulli API integration
- Components display total plays, watch time, movies/episodes watched
- Support for fetching home stats and last watched content

* Enhance Graph component with improved styling and options

- Add wrapper div for better layout control
- Update color scheme with modern palette (Indigo, Amber, Emerald)
- Add Filler plugin for filled area charts
- Improve bar chart styling with rounded corners
- Add proper lifecycle cleanup with onBeforeUnmount
- Enhance tooltip formatting for time and number values
- Add deep watch for reactive data updates
- Better TypeScript type safety with Chart.js types

* Refactor ActivityPage with enhanced stats and visualizations

- Integrate StatsOverview component for at-a-glance metrics
- Add WatchHistory component for recent watch activity
- Add hourly viewing patterns chart
- Modernize UI with card-based layout
- Improve controls styling with better labels and input handling
- Remove authentication dependency (now handled by route guards)
- Use useTautulliStats composable for data fetching
- Add comprehensive watch statistics (total plays, hours, by media type)
- Support for both plays and duration view modes

* Improve Plex authentication check with cookie fallback

- Add usePlexAuth composable import to routes
- Enhance hasPlexAccount() to check cookies when Vuex store is empty
- Fixes authentication check after page refreshes
- Ensures activity page remains accessible with valid Plex auth
2026-03-08 21:38:22 +01:00
2022-08-15 20:17:37 +02:00
2019-10-23 00:43:17 +02:00
2026-02-24 00:22:31 +01:00
2026-02-24 00:22:51 +01:00
2026-02-24 18:43:26 +01:00
2017-03-21 17:12:39 +02:00
2026-02-24 00:22:51 +01:00

Seasoned Request

Seasoned request is frontend vue application for searching, requesting and viewing account watch activity.

Config setup

# make copy of example environment file
cp .env.example .env
# .env sane default values
SEASONED_API=
ELASTIC=
ELASTIC_INDEX=shows,movies
SEASONED_DOMAIN=
  • Leave SEASONED_API empty to request /api from same origin and proxy passed by nginx, set if hosting seasonedShows backend api locally.
  • Elastic is optional and can be used for a instant search feature for all movies and shows registered in tmdb, leave empty to disable.
# .env example values
SEASONED_API=http://localhost:31459
ELASTIC=http://localhost:9200
ELASTIC_INDEX=shows,movies
SEASONED_DOMAIN=request.movie

Build Steps

# install dependencies
yarn

# build vue project using webpack
yarn build

# test or host built files using docker, might require sudo:
docker build -t seasoned .
docker run -d -p 5000:5000 --name seasoned-request --env-file .env seasoned

Development Steps

# serve project with hot reloading at localhost:8080
yarn dev

To proxy requests to /api either update SEASONED_API in .env or run set environment variable, e.g.:

# export and run
export SEASONED_API=http://localhost:31459
yarn dev

# or run with environment variable inline
SEASONED_API=http://localhost:31459 yarn dev

Documentation

All api functions are documented in /docs and found here.
html version also available

License

MIT

Description
No description provided
Readme MIT 10 MiB
Languages
Vue 81.5%
TypeScript 14.2%
SCSS 2.9%
JavaScript 1.1%
HTML 0.2%
Other 0.1%