diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..817b821 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,35 @@ +# Contributing to Readr + +This is a guide on setting up and contributing to the project. + +## Getting started + +Install [Node.js](https://nodejs.org/en/download) and verify you have `npm` installed as well. + +Install [pnpm](https://pnpm.io/) if you haven't already. + +The easiest way to install pnpm is to use npm: + +```sh +npx get-pnpm +``` + +To learn about other ways to install pnpm, see the [pnpm installation instructions](https://pnpm.io/installation). + +Next, install dependencies: + +```sh +pnpm i # or: pnpm install +``` + +Run the application: + +```sh +pnpm dev # or: pnpm run dev +``` + +In order to prepare a production-ready version of the app, run: + +```sh +pnpm build # or: pnpm run build +``` diff --git a/README.md b/README.md index ac6da4b..161a9e1 100644 --- a/README.md +++ b/README.md @@ -1,40 +1,21 @@ # IT2810 Gruppe 37: Readr (Prosjekt 2) -Repository for team IT2810-H26-T37 in IT2810-H26. - -Visit our project here: [Readr](http://it2810-37.idi.ntnu.no/project2/) - -## Getting started - -Install [Node.js](https://nodejs.org/en/download) and verify you have `npm` installed as well. - -Install [pnpm](https://pnpm.io/) if you haven't already. - -The easiest way to install pnpm is to use npm: - -```sh -npx get-pnpm -``` +## Specification for first delivery -To learn about other ways to install pnpm, see the [pnpm installation instructions](https://pnpm.io/installation). +The specification for the first delivery is in [specifications.md](docs/specifications.md). -Next, install dependencies: +--- -```sh -pnpm i # or: pnpm install -``` +Repository for team IT2810-H26-T37 in IT2810-H26. -Run the application: +Visit our project here: [Readr](http://it2810-37.idi.ntnu.no/project2/) -```sh -pnpm dev # or: pnpm run dev -``` +> [!NOTE] +> The project is not deployed yet. -In order to prepare a production-ready version of the app, run: +## Contributing and getting started -```sh -pnpm build # or: pnpm run build -``` +In order to get started with the project, check the [Contributing guidelines](./CONTRIBUTING.md). ## Testing @@ -142,7 +123,7 @@ Furthermore, it ensures that we write clean and maintainable code that follows a ## Project choices and reasoning -TBA +This section will be expanded upon after the project has been developed more and choices have been made on the way. ## Use of AI in this project diff --git a/docs/images/book-grid.png b/docs/images/book-grid.png new file mode 100644 index 0000000..759d77e Binary files /dev/null and b/docs/images/book-grid.png differ diff --git a/docs/images/sketches.png b/docs/images/sketches.png new file mode 100644 index 0000000..470ffe7 Binary files /dev/null and b/docs/images/sketches.png differ diff --git a/docs/specifications.md b/docs/specifications.md new file mode 100644 index 0000000..60d3e01 --- /dev/null +++ b/docs/specifications.md @@ -0,0 +1,34 @@ +# Specification + +## Data + +- **Source:** Books from an open-source books dataset, possibly one from [Kaggle](https://kaggle.com). + We will import a selection of books into our own database, so that search, + filtering and sorting happens on our server. Cover images are still loaded + from the internet, because storing them would quickly fill the 10 GB of + storage on our VM. We only store each book's cover link or ID. +- **Fields per book:** title, authors, first publish year, subjects, language, + cover ID, average rating, description and possibly more if the dataset includes it. + +## Design + +![Search page](./images/book-grid.png) +![Sketches of homepage and login](./images/sketches.png) + +- The search page with the grid works well, so we only plan to polish it. +- The book details page will be redesigned. Reviews will be shown and written + there. +- We will add a separate page that lists the user's favorite books. + +## User interaction + +- **Search** on title and author. The search is case-insensitive and debounced, + so we don't send a request on every keystroke. +- **Filter** on author, subject, place, person, publisher, language. +- **Sort** by rating. +- **Pagination** through the results, a **details page** for each book, and + previous/next buttons to browse between books. +- **User-generated data**, stored in our database: + - **Favorites**, shown on their own page. + - **Reviews** with a star rating and an optional text. +- **Login:** if time allows, we will add Google login.