Skip to content

Commit

Permalink
Merge branch 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
Crossoufire committed Sep 16, 2024
2 parents e4449a0 + 9bbc610 commit e89befb
Show file tree
Hide file tree
Showing 350 changed files with 14,808 additions and 25,246 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -121,3 +121,6 @@ backend/api/static/covers/books_covers/*
/frontend/package-lock.json

# -------------------------------------------------------------------------------------
backend/.flaskenv
frontend/src/routeTree.gen.*
backend/poetry.lock
95 changes: 85 additions & 10 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,76 @@
## CHANGELOG v2.0.0
---

### Under the Hood

- Very large amount of backend code refactoring and database schemas refactoring (> 15 db migrations!)
- Add `Vaccum` and `Analyze` commands in the flask CLI to optimize the SQLite database
- Add new flask CLI command to remove non-activated user > 7 days
- Add marshmallow schemas for input validation in the backend
- Add `tanstack query` (useQuery + mutations) for every API call in the frontend
- Add local cache mutations using `tanstack query` for faster loading
- Better error handling in the backend and the frontend
- Better mails sending based on error type
- Now `poetry` is used to manage the backend dependencies
- Add `Tanstack Table` for the table view in `/list` and the `/history` page
- Update all dependencies (backend and frontend)

### Features

- Possibility to delete media updates (in `/history`, `/details`, and `/profile`)
- Media List CSV Export (in `/settings`)
- Add played game platform (in `/details`) and stats (in `/stats`)
- Advanced Media List Filtering (in `/list`)
- Toggle Table/Grid View (in `/list`)
- When refreshing the details of a media (`managers` only), all the details are updated
- Add a 'tab reminder' for the `/coming-next` page and the `/trends` page
- Add a new `Features` page (in `/features`)

### UI Modifications

- Add Table View to the Media List (in `/list`)
- Removed frames around profile pictures (in `/profile` and `/hall-of-fame`)
- Removed the icons for the media levels (in `/profile` and `/hall-of-fame`)
- Redesigned the error page/component
- Changed the emails templates (account activation, password reset)
- Add `GitHub Changelog` in the footer
- Level is shown in the `/list` page

### Fixes

- Fix padding on stats cards in `/stats` in ipad landscape mode
- Removed `comments` as a sorting option in `/list` (added it in the advanced filter)
- Fix scrollbar in the filters side sheet in `/list`
- Fix sorting Plan to X by release dates in `/coming-next`
- Fix potential bug in oAuth2 authentication (username could be not unique)

## CHANGELOG v1.4.1
---

### Under the Hood

- Improved UI performance and backend of `/list`
- Updated the `package.json` dependencies

### Features

- Added the option for the users to compare their stats with another user in `/stats` (alpha)

### UI Modifications

- Removed the misc sidebar and added cards carousel to the main stats in `/stats`
- Changed TMDB to IGDB for games in `/details`
- Changed Top Watched to Top Read for Books and Top Played for Games in `/stats`
-

### Fixes
- Fixed error in user last updates in `/profile`

- Fixed error in user last updates in `/profile`

## CHANGELOG v1.4.0
---

### Under the Hood

- Created different user routes settings in backend
- Misc refactoring backend
- Cleaned frontend components
Expand All @@ -27,11 +79,13 @@
- Replaced Recharts with Nivo (reduce bundle size)

### Features

- Added a dedicated stats page for each user in `/stats/<media_type>/<username>`
- Added a present in list media checkmark for creator/actor/network etc... on `/details`
- Added a 20 min long-polling for the notifications system

### UI Modifications

- Re-created the `/settings` UI
- Re-created the `/list` interface completely
- Re-created the media cards in `/coming_next` and `/details/jobs` with the same style as `/list`
Expand All @@ -40,6 +94,7 @@
- Removed ":" for the follow cards in `/details`

### Fixes

- Fix subtle errors for 401 Unauthorized errors
- Fix can add two times a label for the same media in `/details`
- Fix comments on `/lists`: subtle bad behaviors + no saving
Expand All @@ -50,64 +105,75 @@

## CHANGELOG v1.3.1
---

### Fixes

- Fix the refresh date inconsistency in `/details` by creating a proper `last_api_update` for Series, Anime, Movies, and Games models
- Fix the issue with Right Full Outer Join for users using the feeling ratings in `/profile`
- Fix the UI of media items in `/coming_next`
- Fix the requirement to activate books list in `/settings` to enable the game search functionality


## CHANGELOG v1.3.0
---

### Under the Hood

- Small backend refactoring
- Created reusable components for clarity

### Features

- Added a sorting per mediaType in `/HoF`
- Added the next airing information in TV `/details`
- Added a `Finale` badge in TV notifications for season conclusion
- Added a refresh date in the refresh icon on `/details` (only for `managers`)

### UI Modifications

- Added new logo for MyLists
- Refined the 3 dots UI in each media item within `/lists`
- Changed editable text for comments in `lists`

### Fixes

- Fix ErrorPage was always 404
- Fix the display of `All(x)` for the total numbers of follows in `/profile`
- Fix too long username in updates in `/profile`
- Fix small issues in mobile view:
- Tabs were too large in `/coming_next`
- Tabs were not centered in `/trends`
- `Plan to Watch` text was too long in `/profile`
- Impossible to scroll the notifications in the Sheet navbar
- Tabs were too large in `/coming_next`
- Tabs were not centered in `/trends`
- `Plan to Watch` text was too long in `/profile`
- Impossible to scroll the notifications in the Sheet navbar

## CHANGELOG v1.2.0
---

### Under the Hood

- Added Tailwind CSS
- Replaced Bootstrap by Shadcn-UI
- Moved from Create React App_old (CRA) to Vite with react plugin

### Features

- Implemented OAuth2 authentication: GitHub and Google
- Added `React-Helmet` to manage metadata in the header
- Removed the changelog in the website (not a fan)

### UI Modifications

- Redefined the table layout in `profile/history` for simplicity and reduced dependencies
- Transformed horizontal navbar sheet in mobile view to vertical one covering the entire screen
- Modified `/details` with new tabs for `history` and `follows`
- Adjusted precision of the airing dates in TV and Anime in `/details`
- Sorted labels alphabetically in `/list` and in `/profile`
- Renamed "score" and "feeling" names to "rating" for clarity and simplicity


## CHANGELOG v1.1.0
---

### Under the Hood

- Typos
- Small fixes and ESLint
- Replaced private and public route component with Higher Order Function (HOF)
Expand All @@ -116,22 +182,26 @@
- Changed some functions to variable holding functions

### Code Refactoring (backend)

- Split blueprints for visibility and readability (split `media` and created: `lists` and `details`)

### UI Modification
- Corrected `profile` and `notification` dropdown overflow

- Corrected `profile` and `notification` dropdown overflow

### New Features

- Added a `label system` for each type of media: you can now add labels to every media to group them together as you which
- Added very simple `Admin` user management
- User can now delete their own account (finally!)
- Added db migration using `flask-migrate` (finally!)


&nbsp;
## CHANGELOG v1.0.1
---

### Under the Hood

- Overhauled (a bit) the code for the stats graphs in `/list/stats`.
- Standardized `comment` in `/list` and `/details`.
- Transitioned from an `onClick` to a `Link` for `/trends` and `/search`.
Expand All @@ -142,6 +212,7 @@
- Code refactoring to enhance overall code quality.

### UI Modification Desktop

- Adjusted text and graph colors of the media stats in `/list/stats`
- Adjusted graph label in `/global_stats` navbar.
- Enabled middle mouse button to open media in new tab for `/search` and `/trends`.
Expand All @@ -150,19 +221,23 @@
- Added a `confirmationHook` to prompt confirmation before deleting a media in `/list` and `/details`.

### UI Modification Mobile

- Navigation hamburger now retract upon loading a Link.

### Code Refactoring (backend)

- Refactored the stats code of the `/medialist` route.
- Refactored the `/profile` route and associated functions for the new tabbed media display.
- Removed the custom SSL SMTP Handler, allowing for TLS only.
- Code refactoring to enhance overall code quality.

### Bug Fixes

- Fixed an issue with user `/search` in navbar: inability to access the other pages.
- Fixed wrong Notifications media name for games.

### Other

- Merged the `/add_media_to_db` route with the `/details` route for the use of Link instead of onClick in the frontend.
- Implemented a personalized error message using Flask's abort for the `TMDB API`.
- Introduced a `classes` folder for better code organization.
Expand Down
47 changes: 25 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
# MyLists

[MyLists](https://mylists.info) is your go-to platform for organizing your favorite series, anime, movies, games, and books.
[MyLists](https://mylists.info) is your go-to platform for organizing your favorite series, anime, movies, games, and books.
With a clean and user-friendly interface, it regroups the functionalities of multiple sites into one.
MyLists integrates features such as total viewing time, comments, favorites, and more.

Live version here: [https://mylists.info](https://mylists.info)

contact: <contact.us.at.mylists@gmail.com>
contact: <contact.us.at.mylists@gmail.com>


# Key Features

* Build your lists for all your series, anime, movies, games and books.
* Build your lists for all your series, anime, movies, games and books.
* Level up your Profile and lists with the leveling systems, and climb up the Hall of Fame!
* Get detailed statistics about your entertainment habits (time spent, number of episodes watched, preferred genres, rating distribution, etc...).
* Stay informed about upcoming episodes in your series/anime, along with new movies.
Expand All @@ -20,6 +20,7 @@ contact: <contact.us.at.mylists@gmail.com>
* Notifications system.
* And more to come!


# Support Me

If you like this work, you can buy me a coffee! &nbsp;
Expand All @@ -33,30 +34,29 @@ If you like this work, you can buy me a coffee! &nbsp;

## Prerequisites

* Python 3.9+
* WSL2 recommended for Windows to use cron jobs
* Python 3.10+
* Poetry (https://python-poetry.org/)
* (optional) WSL2 recommended for Windows to use cron jobs

## Steps
1. Install python and create a virtual env
```
pip install virtual-env
python -m venv venv-mylists
```

2. Clone this repo and install the requirements
1. Clone this repo and install the requirements using Poetry

```
git clone https://www.github.com/Crossoufire/MyLists.git
cd MyLists/backend
pip install -r requirements.txt
poetry install
```

3. Set up the `.flaskenv` file

```
FLASK_APP=server.py
FLASK_DEBUG=<0|1>
FLASK_ENV=< development | production >
```

4. Create a `.env` file
4. Create a `.env` file. See the `config.py` file for more details.

```
SECRET_KEY=<change-me>
Expand All @@ -79,34 +79,37 @@ SECRET_IGDB=<igdb-secret>
IGDB_API_KEY=<igdb-api-key>
```

5. Run the command `python server.py` inside the `MyLists/backend` folder.
The backend will be served by default at [http://localhost:5000](http://localhost:5000).
5. Run the command `poetry run python server.py` inside the `MyLists/backend` folder.
The backend will be served by default at `localhost:5000`.

---


# Frontend Installation (Node - React)

## Prerequisites
- WSL2 recommended for Windows
- Node.js > 19
- npm > 9

- npm > 9.0
- Node.js > 19.0
- (optional) WSL2 recommended for Windows

## Steps
1. Clone this repo and install the requirements

1. Clone this repo and install the requirements using npm

```
git clone https://www.github.com/Crossoufire/MyLists.git
cd MyLists/frontend
npm install
```

2. Create the `.env.development` file for development (`.env.production` for production)

```
VITE_BASE_API_URL=http://localhost:5000
VITE_REGISTER_CALLBACK=http://localhost:3000/register_token
VITE_RESET_PASSWORD_CALLBACK=http://localhost:3000/reset_password
VITE_OAUTH2_CALLBACK=http://localhost:3000/oauth2/{provider}/callback
```
3. Run the command`npm run dev` inside the `MyLists/frontend` folder. The frontend will be served by default at http://localhost:3000.

3. Run the command `npm run dev` inside the `MyLists/frontend` folder. The frontend will be served by default at `localhost:3000`.

2 changes: 1 addition & 1 deletion backend/.flaskenv
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
FLASK_APP=server.py
FLASK_DEBUG=1
FLASK_ENV=development
Loading

0 comments on commit e89befb

Please sign in to comment.