summaryrefslogtreecommitdiff
path: root/README.md
blob: 8fbd5c83380538c6ffd939cb9af740520f319413 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# Sci-Fi Books Showcase

A static HTML page showcasing a science fiction book collection. Works fully offline with all assets stored locally.

**Live demo:** https://f3s.buetow.org/scifi

## Features

- Responsive book grid with cover images
- Filter by author, format (Paperback/eBook/Audiobook), or search
- Click any book to view details and plot summary
- Fully offline - no external dependencies after build
- W3C validated HTML

## Quick Start

```bash
# Build the site (embeds summaries into books.json and creates dist/)
just build

# Deploy to server
just dist

# Local development server
just open
```

## Project Structure

```
├── index.html              # Main page
├── css/styles.css          # Styling
├── js/app.js               # Client-side logic (filtering, modals)
├── data/books.json         # Book metadata with embedded summaries
├── summaries/{id}.md       # Book summaries as markdown (source files)
├── images/covers/{id}.jpg  # Cover images
├── build.js                # Build script
├── dist/                   # Generated distribution directory
└── Justfile                # Task runner commands
```

## Adding a Book

1. Add entry to `data/books.json`:
   ```json
   {
     "id": 55,
     "title": "Book Title",
     "author": "Author Name",
     "year": 2024,
     "format": "Paperback",
     "isbn": "9781234567890",
     "language": "en",
     "coverLocal": "images/covers/55.jpg"
   }
   ```

2. Add cover image as `images/covers/55.jpg`

3. Create summary file `summaries/55.md`:
   ```markdown
   # Book Title

   Plot summary goes here...
   ```

4. Run `just build` to rebuild

## Editing Summaries

Summaries are stored as individual markdown files in `summaries/`. Edit them directly, then run `just build` to embed them into `books.json`.

## License

Data sourced from [foo.zone](https://foo.zone/about/novels.html).