Social cataloging platform application running in CLI, implemented using Java 19, with similar functionality to Goodreads: a place for people to review books and connect with other readers and authors.
Creating a list of 10 actions possible in the system and at least 8 kinds of objects. The application features:
- Simple classes featuring private/protected fields with accessor methods (getters/setters);
- Collections capable of managing the aforementioned object, with at least one such collection being sorted;
- Use of inheritance for creating additional classes and for use inside the Collections
- Service classes to expose the system's functionality
- Service calls from the Menu classes, representing the application's interface for the user.
- AbstractEntity
- Shelf
- User
- Author - derived from User
- Librarian - derived from User
- Reader - derived from User
- Book
- Connection
- Message
- PersonalShelf - derived from Shelf
- SharedShelf - derived from Shelf
- Review
- ReadingChallenge
- Message
- BookGenre
- ShelfType
- UserType
You can log in or register as a new user in the command-line interface. Afterwards, you'll be prompted by an interactive menu with the options at your disposal.
As a reader, you can:
- Connect with others users: readers or authors;
- Add or remove books from one of your shelves;
- Shelves are either personal or shared, between you and multiple other readers (there's no limit on how many users can share a shelf, there's always room for more!);
- Set reading challenges;
- Check top books, ranked by own rating.
As an author, you can:
- Use the platform to promote your books;
- Completely remove your book from the platform;
- Check your current followers;
- Check your average rating, determined as the mean of the ratings that your books have gotten.
As a librarian, you can:
- Use the platform to recommend books;
- Check your current followers;
- Add posts on your personal book club, to share your book knowledge with the readers.
The application now features:
-
A template for the menus, using the template method pattern;
-
A database connection, using JDBC;
-
CRUD operations on the database, using the repository pattern;
-
Singleton generics for these operations;
-
A listener functionality, to store the actions performed in a log file;
-
A logger functionality, that notifies the user that their actions have been logged;
To do! Add screenshots.