Giter Site home page Giter Site logo

tolikpylypchuk / cineaste Goto Github PK

View Code? Open in Web Editor NEW
20.0 20.0 3.0 21.49 MB

An app which keeps track of the movies and TV series you have watched or would like to watch.

Home Page: https://cineaste.tolik.io

License: MIT License

HTML 11.84% C# 85.55% CSS 2.61%
avalonia c-sharp dapper reactiveui sqlite

cineaste's People

Contributors

andertius avatar dependabot[bot] avatar tolikpylypchuk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

cineaste's Issues

Implement common message boxes

Use message boxes provided by material design instead of those provided by Windows. Implement a simple message box with a single 'OK' button and a confirmation dialog with 'Yes' and 'No' buttons.

Improve the recent files list

Add the following to the recent files list:

  • Add files to the list when the app is closed

  • Remove the item from the list if the user tries to open a file and it doesn't exist anymore

Add support for localization

Add support for localizing the UI. Currently, only Ukrainian will be used as the UI language, but that should be easily changed if needed.

Enhance the season watching status and released status

Currently seasons can be either watched or not watched with no indication whether I'm watching the season at the moment. Change the boolean field to an enum, which has the following values: watched, watching and not watched.

Same goes with the release status of the season. Change the status from a boolean field to and enum with the following values: not started, airing, finished.

Validate the schema of the files

Currently the only implemented validation of the files that are being opened is checking if the files are SQLite databases. The schema of those files should also be checked.

Implement showing the list of movies and series

The main point of this app is to actually show a list for movies, series and movie series. When a file is opened, the list should be loaded and shown.

The list contains movies and series that the user has watched already, or is going to watch. There may be multiple parts in a franchise (sequels/prequels/etc.), that's why movie series exist - they group movies and series of the same franchise together. A movie series can be a part of a larger movie series - the levels of nesting are unlimited.

There are 3 types of list items:

  • Movie
  • Series
  • Movie series (if it's ShowTitles property is set to true)

A list item should contain a sequence number (if a movie/series is part of a movie series), a title, an original title, and release year (or years for series). Since every list item may have multiple titles, only the first title should be shown in the list (this may be reconsidered in the future).

The sorting of the list items is quite complex (this is a high-level overview, and not a exhaustive list):

  • If a movie or series doesn't belong to a movie series, then compare by their title.
  • If a movie or series belongs to a movie series, then compare by the title of the movie series. If a movie series doesn't have a title, take the title of its first entry.
  • If movies or series belong to the same movie series, then compare by their sequence number.
  • If movies or series belong to different movie series, which are part of a larger movie series, then compare by the sequence number of the movie series.

Implement the season form

Implement showing a season form when a season is selected from series form.

The form should include:

  • Title
  • Posters (if the poster URLs of the periods are not empty)
  • The following fields:
    • Titles - translated (up to 10) and original (up to 10)
    • Watch status
    • Release status
    • Periods - with each period having its own fields:
      • Start month
      • Start year
      • End month
      • End year
      • Number of episodes
      • Checkbox to signify whether it's a single-day release
      • Poster URL (optional)
    • Buttons to add a period

There should be buttons to navigate back to the series form and to the next/previous season/special episode at the top of the form.

Saving the season doesn't actually write it into the database - only saving its series does.

Saving and cancelling changes should be available only when the changes are present. Every field should be validated. The poster should be fetched from the internet and cached by Akavache.

Add the ability to open and create files

Implement the following:

  • Open a file through the home page

  • Open the file externally, including when the app is already running

  • Create a file through the home page

  • Close a file and add it to the 'Recently Closed Files' list

Data Files

This epic contains issues related to working with files which contain the movie lists.

Home Page

This epic contains issues related to the app's home page.

Enhance the translation of text

Implement the translation of text using a markup extension. This will let buttons have uppercase text without having it like that in the resources. Also, it will be easier to add dynamic localiation if needed later.

Implement the miniseries form

Implement showing a miniseries form when a miniseries is selected from the list. A miniseries is a series with only one season (which in turn was released during only one period), no special episodes, and a IsMiniseries property set to true. As such, miniseries are much simpler than normal series and don't require additional forms to be edited.

Also, the ability of the normal series form to turn into a miniseries form when the button to convert to miniseries is clicked should be implemented.

The form should include:

  • Title
  • Poster (if the poster URL is not empty)
  • IMDb link (if it's not empty)
  • The following checkboxes:
    • Is watched
    • Is anthology
    • Is released
  • The following fields:
    • Titles - translated (up to 10) and original (up to 10)
    • Status - not started, running, finished or cancelled
    • Kind
    • Start month
    • Start year
    • End month
    • End year
    • Number of episodes
    • Checkbox signifying whether it's a single-day release
    • IMDb link (optional)
    • Poster URL (optional)

In addition, a button to convert to a normal series should be at the bottom - with the series already having one season with a default name.

Saving and cancelling changes should be available only when the changes are present. Every field should be validated. The poster should be fetched from the internet and cached by Akavache.

Data Export and Import

This epic contains issues related to exporting and importing information about movies and series.

The Forms

This epic contains issues related to the forms for editing movies, series, and franchises.

Save the UI state

Save the state of the main window when closing the app and restore it when opening the app.

Implement the series form

Implement showing a series form when a series is selected from the list.

The form should include:

  • Title
  • Poster, title card or logo (if the poster URL is not empty)
  • IMDb link (if it's not empty)
  • The following checkboxes:
    • Is watched
    • Is anthology
  • The following fields:
    • Titles - translated (up to 10) and original (up to 10)
    • Status - not started, running, finished or cancelled
    • Kind
    • The list of seasons and special episodes
    • Buttons to add a season or special episode
    • IMDb link (optional)
    • Poster URL (optional) - may actually contain the URL of the logo or title card, not just the poster

The series should contain at least one season or special episode. When a season or special episode is selected, their respective form is shown. The seasons and special episodes should have the ability to be reordered.

In addition, a button for converting the series to miniseries (if it contains 1 or 0 seasons) should be at the bottom.

Saving and cancelling changes should be available only when the changes are present. Every field should be validated. The poster should be fetched from the internet and cached by Akavache.

Simplify file creation

Remove the intermediate dialog. Derive the name of the list from the file name. Users may change the list name to whatever they want later through the settings UI.

Implement the app menu

Implement the menu at the top of the app. The menu should contain some frequently-used commands.

The menu items should be the following (may be changed and/or extended in the future):

  • File
    • New
    • Open
    • Open Recent
    • Save
    • Save As
    • Settings
    • Close
    • Exit
  • Edit
    • Preferences
  • Help
    • About

Statistics

This issue contains issues related to the app's statistics on the watched movies and series.

Create the basic infrastructure around the home page

  • Create views and view models for the home page and possibly stubs for other pages.

  • Investigate whether ReactiveUI routing would be appropriate for navigation between file views and the home page.

  • Add code in the main parts of the app to show the home page (App, MainViewModel etc.).

General Issues

This epic contains general issues which don't belong to any specific epic.

Create the home page

The home page should be able to:

  • Show a list of recently opened files and have the ability to open these files.

  • Open any other existing file.

  • Create a new file.

Implement the special episode form

Implement showing a special episode form when a special episode is selected from a season form. Implement showing an empty form when a new special episode is created.

The form should include:

  • Title
  • Poster (if the poster URL is not empty)
  • The following checkboxes:
    • Is watched
    • Is released
  • The following fields:
    • Titles - translated (up to 10) and original (up to 10)
    • Month
    • Year
    • Poster URL (optional)

There should be buttons to navigate back to the series form and to the next/previous season/special episode at the top of the form.

Saving the special episode doesn't actually write it into the database - only saving its series does.

Saving and cancelling changes should be available only when the changes are present. Every field should be validated. The poster should be fetched from the internet and cached by Akavache.

Add tags

Searching movies and series for recommendations will be much easier with tags.

Implement the movie series form

Implement showing a movie series form when a movie series is selected in the list. Also, show it when an 'up' button is clicked on a movie or series that is a part of a movie series.

The form should include:

  • Title (or the title of the first entry, if the movie series itself doesn't have one)
  • Poster or logo (if the poster URL is not empty)
  • The following checkboxes:
    • Has it's own titles
    • Show in the list
    • Is loosely connected
  • The following fields:
    • Titles - translated (up to 10) and original (up to 10), if the 'has it's own titles' check-box is checked
    • Poster URL (optional) - at the bottom of the form
  • A list of entries. Clicking on an entry shows its form.
  • The following buttons:
    • Add new movie
    • Add new series

Saving or cancelling changes must be available only when the changes are presetnt. Every field must be validated. The poster should be fetched from the internet and cached by Akavache.

Implement the preferences page

Preferences should include the following functionality:

  • Default settings for new files - will be basically same as the file settings UI

  • Advanced options: logging

Implement the file settings UI

The file settings UI should include the following:

  • Kinds, with the default being 'live-action', 'animated' and 'documentary'
  • Colors for movies and series that are not yet watched and released
  • Default names for a new season

Add per-file settings

Add settings to individual files:

  • The name of the list.

  • Colors for unwatched and not yet released items.

Add other sorting options

Currently the app only supports sorting by title while considering the movie series. Other sorting options should be available:

  • By original title with movie series

  • By title, ignoring the movie series

  • By original title, ignoring the movie series

  • By year

Implement filtering the list

There is currently no way to filter the list or to search for a specific entry. Searching and filtering should be implemented by:

  • Title or original title (taking all titles into account)

  • Year (equals, before, after or in range)

  • Kind

Also, fuzzy searching would be nice.

Implement the panel for adding new items

Implement buttons to add a new movie and a new series, which should be shown on the right side of the app when there are no forms opened. Clicking a button should open an empty form.

  • Add new movie

  • Add new series

Implement the movie form

Implement showing a movie form when a movie is selected in the list.

The form should include:

  • Title
  • Poster (if the poster URL is not empty)
  • IMDb link (if it's not empty)
  • The following checkboxes:
    • Is watched
    • Is released
  • The following fields:
    • Titles - translated (up to 10) and original (up to 10)
    • Release year
    • Kind
    • IMDb link (optional)
    • Poster URL (optional)

Saving or cancelling changes must be available only when the changes are presetnt. Every field must be validated. The poster should be fetched from the internet and cached by Akavache.

The List

This epic contains issues related to the actual list of movies and series.

Add the preferences store

Most likely, the preferences will be stored in a user account folder using Akavache.

For now these will include:

  • The UI state (window location and state).

  • The list of recently opened files and whether to store the list in the first place.

  • Logging configuration.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.