A library app where you can add in your favourite books as recommendations for others.
Make sure you have Git and Node (v18) installed.
-
Clone this repo and cd into the directory
-
Run
npm installto install all the dependencies -
Run
npm run seedto create the database. Runnpm run seed-winif using Windows. -
Run
npm run devto start the server. Runnpm run dev-winif using Windows.
This uses the nodemon library to auto-restart the server when you save changes.
🚧
- As a friendly user I want to post a book recommendation for anyone to see
- As a curious user I want to see other people's book recommendations
Stretch goal:
- As an impatient user, I want to be able to search for books by name so I don't have to scroll through an entire library of book.
Schema Code
BEGIN;
CREATE TABLE IF NOT EXISTS genres (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS books (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
author_id INTEGER REFERENCES authors(id),
year INTEGER,
genres_id INTEGER REFERENCES genres(id)
);
CREATE TABLE IF NOT EXISTS authors (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL
);
CREATE INDEX IF NOT EXISTS book_names ON books(name);
COMMITgenres DB:
| id | name |
|---|---|
| 1 | Fantasy |
| 2 | Horror |
| 3 | Science Fiction |
| 4 | Drama |
| 5 | Politics |
books DB:
| id | name | author_id | year | genres_id |
|---|---|---|---|---|
| 1 | The Lord of the Rings | 1 | 1955 | 1 |
| 2 | The Hobbit | 1 | 1937 | 1 |
| 3 | It | 2 | 1986 | 2 |
| 4 | The Stand | 2 | 1978 | 2 |
| 5 | 2001: A Space Oddysey | 3 | 1968 | 3 |
| 6 | Rendezvous With Rama | 3 | 1973 | 3 |
| 7 | 1984 | 4 | 1948 | 4 |
| 8 | Homage to Catalonia | 4 | 1938 | 5 |
authors DB:
| id | name |
|---|---|
| 1 | J.R.R. Tolkien |
| 2 | Stephen King |
| 3 | Arthur C. Clarke |
| 4 | George Orwell |
| 5 | Unknown |
sqlite_sequence DB:
| name | seq |
|---|---|
| authors | 5 |
| genres | 5 |
| books | 8 |
- A form for users to submit data
- A page showing all the data
- Semantic form elements with correctly associated labels
- A SQLite database
- A schema describing your database in your README
- Tests for server routes and database access
- Not process user input as SQL commands
- Hidden environment variables (i.e. not on GitHub)
- A way to view filtered/sorted data, instead of just all of it GitHub Actions CI setup to run your tests when you push