Giter VIP home page Giter VIP logo

book-app's Introduction

Book Tracker

A personal application that combines my love for books with my passion for Rust programming.

Feature Overview

  • Integrate Goodreads web scraper to query for books online and gain metadata like number of pages, author(s), book series, ...
  • Create SQL database to keep track of reading progress
  • Create GUI application to
    • Add new books
    • Update progress
    • View data about reading progress

Screenshots

Sample search results from the query "the hobbit". Search results

book-app's People

Contributors

lucaaantonelli avatar

Watchers

 avatar  avatar

book-app's Issues

Clicking out of search box starts query

Because the editable text box for the query reacts to both a button press and losing focus, the query is executed even when the user clicks outside of the box, which usually means they want to cancel writing, not start the query.

Add tabs for different panels

Extend the top context menu with some more buttons and add individual panels for each button. Essentially, this should work similar to the way the egui demo shows the different paragraphs like demos, HTTP requests, the fractal clock etc.

Possible panels include

  • Search for books on Goodreads
  • Show table of books on database
  • Show graphical representation of reading over time (plots etc.)
  • Possibly a file picker to load books from a file (Excel, Goodreads export)

Make books in Excel list skippable

Instead of having to iterate over the whole list from the top every time, instead provide an option to skip a book. Saves a lot of time waiting on the web scraper to return the book metadata

Add functionality to actually load Excel

While it is now possible to select files via egui_file_dialog, this currently just prints the path. A function should be added to take the selected path, possibly verify that the path points to an Excel file, and then iterate through it and use the Goodreads API to search for every entry.

Add logic for database

This is a larger issue that contains multiple smaller aspects:

  • Add new book from Goodreads table to the database
  • Modify date fields of a book (date bought, started, finished)
  • Modify names and authors of books, might be necessary in case of ill-formed names
  • Load data into app for visualization
  • [ ]

Adjust table layout

Currently, whenever the results of a Goodreads query are available, the table has a fixed size and is only adjusted if the user does so manually. The table should be either dynamically adjusted based on the cell contents (e.g. set the column width to the width of the longest element in said column), or it should be set to a fixed, sensible default.

In addition, cover images are currently displayed in the default size, which is much too small.

Make repository public

Change database connection settings, then adjust values in .env file and make the repository public. Changing the parameters of the database guarantees that previous commits with potential secrets can no longer be exploited to access the database.

Make initial GUI to simplify filling from Excel

Start with a simple window with a text box, maybe even remove the Excel integration for now. See if there is a way of creating multiple text cells that can be edited by the user and simultaneously by the program. That way, the workflow could be as follows:

  1. User enters some query
  2. API looks up results on Goodreads
  3. User selects one of said results
  4. Selection is displayed in some sort of table
  5. User can edit all fields if necessary, then confirms
  6. Program writes to database

Would automatically close #2

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.