Categories
Hardcover

Hardcover Report for October 2024

Every October, we have a tradition. We find all the spooky, thriller, horror books and movies we’ve missed the past year and push them to the top of our lists. That includes a few favorites we rewatch (my wife is starting her Hocus Pocus rewatch this week. 😂).

This got me thinking more about tradition. Whether it’s a national public holiday or an event you entirely made up (ex, Festivus), something magical happens when a group of people decide to embrace a shared vision.

I’ve been thinking about trying to start more traditions in my own life, such as “Watch an award-winning old movie day,” “Go for a long hike and listen to audiobooks day,” or even “Make a new recipe I’ve only ordered out day.”

When I think about collective agreements, there’s a book that always comes to mind: Sapiens: A Brief History of Humankind. Through a lens of history and science, it describes how shared visions and agreed-upon understandings of the world have shaped the society we have today. Everything from money and religion to culture and values are all examples of collective agreements.

In many ways, Hardcover is a shared vision. We’re building a social network for readers with a big assumption: we find amazing and life-changing books through other readers’ opinions, activities, and recommendations. That’s at the heart of Hardcover. ♥️

This has been a hectic month for me. We did many fun things, including attending FanX and Salt Lake City’s Annual Comic Convention. I, of course, had to check out the Dragonsteel booth for Brandon Sanderson’s latest wares – including his newly illustrated children’s book, The Most Boring Book Ever. It’s a super short read and more in the juvenile fiction genre than the young adult genre Sanderson is known for.

My wife and I also started testing the idea of buying a house. Whether it makes financial sense, we can find a house we like, and if we end up moving, it is still up in the air – but it’s exciting! The prices of houses, however, are not exciting. 🤮

Many people know my financial situation thanks to years of writing a blog about investing, minimalism, and mindfulness. As it stands now, we still have enough funds to sustain our lifestyle for quite a while (15-25 years), but after that, we’d need to go back to real work – not an appealing prospect for a 57-67 year-old).

Instead, we’re thinking about housing alongside going back to work, the future of Hardcover, and what kind of life we want to live (spoilers: lots of reading, coding, time in nature, and time with friends). That more likely means going back to work in some form in about five years. In a perfect world, Hardcover will reach some level of cash flow, and I can live off that. Either way, if it comes to that, I’d opt for a job that offers flexibility (part-time or consulting) to continue working on Hardcover.

We’ll see what the next few years hold! I’m starting to realize I’d rather be 60 years old with a paid-off house than 60 in an apartment that could raise my rates. If money was no option, I’d probably want to live in an apartment forever 😂.

What’s New On Hardcover?

September has been a surprisingly quiet month. We planned to focus on bugs, maintenance, and performance, and that consumed the bulk of my time. These parts of an app aren’t as exciting, but when they’re not working right, people notice.

Bugs, Performance & Maintenance

Ask any software developer about rewriting a codebase or changing technical stacks for an existing project, and you’ll likely get a somewhat timid and scared response. It’s always more work and takes longer than expected.

Yet, that’s what I’ve decided to do for Hardcover’s Next.js front-end. 😅 Fortunately, we’re not planning to rewrite the entire front-end. It’ll continue to use React.js and have all the same functionality it currently does. But instead of being served from Next.js it’ll be served from Ruby on Rails and Inertia.js (at least that’s the plan! If you’re using this stack, I’d love to hear from you).

Why the switch? I shared some reasons in our team channel, but here’s the tl;dr (which is still long 😂).

  • SLOW development loading time in Next.js
  • Slow paradigm for how data is fetched (Next.js Redis Graphql Rails Postgres) vs (Rails Redis Postgres)
  • Magical and inconsistent caching on Next.js
  • For the new stats page, we’ll need to work with a lot of data, which will require tests, pre-processing, and caching.
  • I look forward to writing tests in Ruby versus dreading testing in Javascript.
  • No more GraphQL on initial page requests. It’ll all use Redis caching and ActiveRecord to fetch all initial data.
  • Using Vite for development is SOOO much faster with hot module reloading.
  • Several existing bugs that need architectural overhauls – which I’d rather do in Ruby than TypeScript.

There are a few downsides to this:

  • No more nested layouts. Layouts are at the page level.
  • No more React server components with partial rendering at the page level. Inertia.js v2 has some proposed updates that allow for setting variables in a proc, then lazy-loading those on the front-end within a suspense block.
  • Debugging hydration errors will be just as annoying.

Next.js has served us well over the last few years, and we’re thankful for what we’ve been able to build with it. In performance tests so far, the Rails version of the app is worlds faster, and I’m excited by the possibilities this will offer us.

Dashboard & New Stats

Ste’s been making progress on designing and prototyping the new dashboard alongside new stats. The more we thought about it and the more people we talked to, the more we realized that we should build this in a module way that allows for (most) stats to be shown on the new dashboard.

I love the idea that people can add widgets based on what they want to see about their reading, drag them around, and even change their size to create the perfect view of their reading.

This will most likely be the first big project we develop with the Rails backend, which works well because it will require a lot of data.

🎙️ Hardcover Live

Earlier this year, we launched the new Hardcover Live, our weekly live show where we build Hardcover in public.

In September, we recorded and released three more episodes, which can be watched on YouTube or downloaded through your podcast player of choice.

Did you know we’re working on stats? 😂 We aim to update the stats page and create a system that allows those stats to be pinned to your Dashboard (which will come after).

Tune in each Wednesday at noon PST to watch us build Hardcover Live. We don’t yet have any guests scheduled for September. Are you an author or a book influencer interested in being on the show? Let me know!

👩‍💻 API Documentation

We’ve seen an increasing number of people using the Hardcover API to access their libraries and build awesome stuff. We want to simplify this process while protecting the main site from the API. We don’t want someone hitting the API to slow down the main site.

We’re not ready to release this documentation yet, but @RevelryPlay on Discord has started Operation: API Documentation, and it’s looking great so far!

You’ll even be able to add your API key and see the data returned!

We’re on the path to getting there, combining the Rails migration, API documentation, rate-limiting the API, and more. In the coming weeks, we’ll likely add GraphQL depth limits and make more changes to prevent LLMs from scraping our API.

🔜 What’s Next on Hardcover?

October’s Focus is on the Rails rewrite, general bugs, preparing the dashboard & Stats pages to begin development work, and preparing the API for version 1.0.

Behind the Scenes at Hardcover

This month, we climbed from 163 to 169 supporters and hit 16.8k members! 🥳

This month, we’ve had a few bugs that prevented signups on iOS and from the app, and these were fixed within a day or two.

If you’re enjoying Hardcover, consider sending your referral link to a friend! If two friends join, you’ll get a free month as a Supporter.

Featured Prompt for October 2024

With spooky season here, we’re picking a spooky prompt this month! This month’s Prompt comes from @Williagea:

What is the scariest horror book you have ever read?

I love horror books but am not scared the easiest! What are some books that had you locking your doors and checking under the bed?

Whether you’re looking for a scary book or you’re excited to share your favorites, check out this month’s prompt. 🎃

Last month’s prompt was: What books did you learn most from? After 44 answers, the top book is All the Bright Places By Jennifer Niven, which also shows up on the What are your favorite books of all time Prompt.

Most Read Books for September 2024

This month’s most popular books have returned to books that have been generally popular over the last few years.

  1. Iron Flame by Rebecca Yarros
  2. 1984 by George Orwell
  3. Project Hail Mary by Andy Weir
  4. A Court of Mist and Fury by Sarah J. Maas
  5. The Well of Ascension by Brandon Sanderson

At #6 you have a more recent book – Some Desperate Glory by Emily Tesh. It’s a fast-paced science fiction adventure that looks like fun.

Most Saved Books to be Released in October 2024

  1. The Fury of the Gods by John Gwynne (fantasy, Bloodsworn Saga #3, (65 saves)
  2. Don’t Let the Forest In by CG Drews (dark fantasy, 40 saves)
  3. Heir By Sabaa Tahir (fantasy/romance, 36 saves)
  4. Blood of the Old Kings By Sung-Il Kim (fantasy, translated from Korean, 24 saves)
  5. Make the Season Bright By Ashley Herring Blake (romance, 20 saves)

The skew toward fantasy and romance on Hardcover continues! Each of these looks exciting. I’m interested to check out Blood of the Old Kings. This description reminds me of The Will of the Many (one of my favorites from last year):

In an Empire run on necromancy, dead sorcerers are the lifeblood. Their corpses are wrapped in chains and drained of magic to feed the unquenchable hunger for imperial conquest.
– Blood of the Old Kings description

Join us on Discord

The Hardcover Community isn’t just on the website – we’re also on Discord! If you’re not an expert in Discord, don’t worry – neither are we.

Join the over 1,000 others to chat about books, hear about product updates, and be part of the community.

Join the Hardcover Discord

Want to Support Hardcover?

As a fledgling startup, we can use all the help we can get, whether that’s becoming a Supporter, sharing Hardcover with a friend, or just following along.

We appreciate you reading this and hope you have an amazing month. Talk to you soon. ♥️

Categories
Uncategorized

Hardcover Report for September 2024

Hi book friends!

Does it feel like summer is flying by for anyone else? As we enter September, students are returning to school, and people are returning from vacations and getting back to work. I’m curious to see how this impacts the Trending Books. Will they change in tone? Will new books take over the top spots? Time will tell.

This past month flew by for me. Often, I’m working on ambitious new product features and trying to release them before writing this report. This month was different. We’ve focused on bugs, reliability, costs, and sustainability.

These aren’t the most exciting topics. 😂 I won’t get as into the weeds as usual about them this month.

On a personal level, it was a stressful month. I’m more experienced in product development than in DevOps and infrastructure, which has meant a lot of learning by doing.

I’ve struggled with prioritizing tasks coming in from many different channels lately. That includes Hardcover tasks (email, Discord, GitHub, DMs, social media) and all my non-Hardcover tasks.

After experimentation, I’ve returned to using Todoist to organize my tasks for a given week. I used to do a “weekly planning” session for myself every Sunday for years. Over a half hour or so, I’d organize my calendar, block off time to work, pick out tasks I wanted to accomplish, and space them out during the week in a possible way.

Part of this also involves staying off Discord more often when I’m not actively working on Hardcover.

So far, this has worked out! I’ve felt accomplished after completing the tasks I set out while not feeling overwhelmed (as much) by everything I’m not doing.

What’s New On Hardcover?

Not very much. 😂 After a very busy July, August was a month of bug fixes and reliability rather than new features.

Over the month, we made 170 commits to the codebase and closed 23 GitHub issues. We have another 110 outstanding issues.

This section is going to be a little bit techy this month. If you’re not interested in a look behind the scenes, please skip to the next section.

Switching to Signed Image URLs

A few weeks ago, someone repeatedly downloaded every cover image on Hardcover. This resulted in 10k requests/second for 8 hours at 600 mb/s, which resulted in a $300 bill. Fortunately, we were able to put together a quick solution using signed URLs (URLs that only work for a specific duration).

You can read the full breakdown of what happened if you’re curious.

Migrated from Vercel to Google Cloud Run

Our hosting costs for Vercel have climbed quite a bit over the last few months despite our traffic being about the same during this timeframe.

One problem is that Vercel’s billing calculation is very different from how we would calculate billing if we just rented server space and hosted from there.

With this in mind, we migrated the main website to Google Cloud Run this month. Despite my efforts and mistakes at every step, it’s running well there. 😅

Side note: I hope to migrate our entire infrastructure to Kubernetes eventually. If you have experience in this and are curious to help, I could use your help!

🔴 Hardcover Live

Earlier this year, we launched the new Hardcover Live, our weekly live show where we build Hardcover in public.

In August, we recorded and released three more episodes, which can be watched on YouTube or downloaded through your podcast player of choice.

Did you know we’re working on stats? 😂 We’re aiming to update the stats page and create a system that allows those stats to be pinned to your Dashboard (which will come after).

Tune in each Wednesday at noon PST to watch us build Hardcover Live. We don’t yet have any guests scheduled for September. Are you an author or a book influencer interested in being on the show? Let me know!

🔜 What’s Next on Hardcover?

September’s focus is on two things: Stats and bugs.

📈 Shareable Stats

I’m very excited about the new stats we’re building. We’re starting this from an exciting standpoint: what questions do you have about your book data?

We’d love to get your feedback on what you want from stats! There are two ways you can help out.

👉 Fill out this 5-minute survey
👉 Sign up for a 30-minute interview with Ste to chat about stats

Either of these will help us prioritize what most people are looking for. Whenever we build something based on feedback, it always ends up 10x better than we could do on our own, and I can’t wait to see what this feedback leads to. 🧭

🐞 Bugs, Server Updates, and Server Costs

We need the codebase to be healthier before taking on new product features. This month, we’ll focus on paying down a lot of technical debt while also preparing to open source Hardcover.

One thing we’ll need to focus on (and I really don’t want to) is protecting the site from bots and scrapers. We have a lot of data and an easy-to-use API, which is very attractive to people building things with AI right now. We want to support people creating fun things with the API, but we need to draw a clear line around data usage and abuse. We have some work to do to ensure what we provide matches our values.

We’re working on some documentation around this, as well as clearer API limits and rules.

The Rest of 2024?

We spent some time as a team figuring this out. We all tend to be rather ambitious, but I’d rather shoot for something exciting, and then if it works out, great!

  • Crossword Puzzles!
  • Open source Hardcover codebase
  • New Stats
  • End of Month and End of Year Wrapped
  • 2024 Year in Books
  • List filtering and bulk edit mode
  • New Stats

This isn’t the complete list or the order. I’ll be ecstatic if we complete everything on this list by the end of the year. 🥳

Behind the Scenes at Hardcover

This month, we climbed from 156 to 163 supporters and hit 15k members! 🥳

Unfortunately, when we migrated servers, we had a bug that prevented people from upgrading to supporters for a few days. 🤦 My bad on that one.

If you’re enjoying Hardcover, consider sending your referral link to a friend! You’ll get a free month as a Supporter if two friends join.

Featured Prompt for September 2024

As students return to school, we thought it’d be fun to pick a Prompt focused on learning. What we learn from books isn’t limited to facts and figures, but in how we see the world differently after.

That’s the focus of this months Prompt:

What books did you learn most from?

Whether it’s a course textbook or a fictional romance, we remember books that impact us deeply. Which books do you remember being forever changed by due to learning something new – either about yourself, the world or a new skill?

Add your own answers or upvote some of the existing ones. I’m excited to see what books you’ll learned the most from. 🙌

Last month’s Prompt was, “What books brought you out of a reading slump?” The top votes so far are for Mistborn, Legends & Lattes, and The Martian—all entertaining and fun books that I rated 5 ⭐.

Most Read Books for August 2024

Three of this month’s trending books are 2023 releases. The other two, The Three Body Problem and Dune, were adapted into movies and series this year.

  1. Tress of the Emerald Sea by Brandon Sanderson
  2. Yellowface By R.F. Kuang
  3. Fourth Wing by Rebecca Yarros
  4. The Three-Body Problem by Cixin Liu
  5. Dune by Frank Herbert

You have to go all the way down to #13, The Mercy of the Gods by James S. A. Corey (The Expanse), to find the first book released in 2024. Summer seems to be the time for readers to catch up on the popular books they missed the previous year.

The top 3 books of this month were the top 3 most read new books of 2024! This mirrors what happened with Tomorrow, and Tomorrow and Tomorrow as well as Project Hail Mary both picked up even more momentum after being featured in year-end reviews.

Most Saved Books to be Released in September 2024

  1. A Dark and Drowning Tide by Allison Saft (72 saves)
  2. Graveyard Shift by M.L. Rio (27 saves)
  3. Celestial Monsters by Aiden Thomas (25 saves)
  4. We Solve Murders by Richard Osman (23 saves)
  5. Immortal Dark by Tigest Girma (22 saves)

A Dark and Drowning Tide tops the list with 72 saves. Bridging multiple genres, it looks like it has something for everyone: a murder mystery set in dark academic fantasy with a rival trope and kingdom-level problems. Look for it on September 17th.

Join us on Discord

The Hardcover Community isn’t just on the website – we’re also on Discord! If you’re not an expert in Discord, don’t worry – neither are we.

Join the over 1,000 others to chat about books, hear about product updates, and be part of the community.

Join the Hardcover Discord

Want to Support Hardcover?

As a fledgling startup, we can use all the help we can get, whether that’s becoming a Supporter, sharing Hardcover with a friend, or just following along.

We appreciate you reading this and hope you have an amazing month. Talk to you soon. ♥️

Categories
Canonical

How We Survived 10k Requests a Second: Switching to Signed Asset URLs in an Emergency

Yesterday I woke up to a ping on my Apple Watch of unusual spending on my Hardcover debit card. It’s not unusual to get a ping about an expense, but this was a new one. Google Cloud had charged me a round $100 – an unusual amount to spend.

The previous day I was experimenting with Google Cloud Run, trying to migrate our Next.js staging environment from Vercel to there to save some money. I assumed I misconfigured that service and turned it off and went about my day.

A few hours later I got another expense alert: this time for $200 (!). Now I was worried. It didn’t help that I was working from a coffee shop, it was about to rain and my laptop battery was almost dead. 😅

After speed walking the trip home while listening to Bride (I’m making my way through the Trending Books), I got to work tracking down what was happening.

What’s the Issue?

My first stop was to Google Cloud Billing. That should narrow the issue down. The new expense was there – I wasn’t crazy. It seemed to level off, which was a good sign.

This confirmed there was something costly happening, but what?

I clicked over to the breakdown by service and it was clear: Cloud Storage expenses were up 2,098% 😅

Whelp, I wondered if this day would come. Let me back up and mention what services we’re using real quick.

What Google Cloud Services Does Hardcover Use?

Not much. In fact only 3. The rest of our services are hosted elsewhere.

Google Cloud Storage – We store all cover images, author avatars, user avatars, and various static images in Google Cloud Storage. I’ve previously used S3 for this, but we’re anti-amazon.

Google Cloud Run – We have exactly one process in Cloud Run, our Image Resize Service (Imaginary) I wrote about last year. It cut our $1,000 bill down to $50/month or less with no loss in functionality. If you’re using Imgix or Cloudinary, it’s kind of amazing.

Google CDN – The Image Resize Service doesn’t do any caching, so we throw a CDN in front of it that aggressively caches images.

Cloud Run and the Google CDN have worked absolutely perfectly. I haven’t even touched them in 11 months. Not once. I hadn’t touched Google Cloud Storage either, but that was the problem. 😅

When I initially setup Google Cloud Storage, I made the bucket (the storage container per-environment) public with optional private files. This allowed user avatars, cover images and other images we show on the site to be publicly accessed, but save user uploaded CSVs privately in the same place.

For their part, Google adds a lot of alert messages when a bucket has public access. It’s almost like they know something I don’t. Turns out the Internet is a Dark Forest (I just re-read The Three Body Problem after the Netflix series and will use any chance I can to drop it into conversation 😂).

My decision to keep our Google Cloud Storage public was the culprit.

So, What Actually Happened?

We’re still working that out and looking for ways to improve, but here’s the theory.

Someone has been hitting our API pretty hard recently. They likely downloaded a large amount of data from it – including every edition with URLs for covers.

Those cover images are direct URLs to Google Cloud Storage. For example:

Example URL

https://storage.googleapis.com/hardcover/external_data/ 36306160/04fdf2f73287526f8326413f4d3d7ec77999b832.jpegCode language: JavaScript (javascript)

These are the images that were public.

Downloading a few images from here wouldn’t have shown up on my radar. In this case, someone decided to download up to 10k images/second… for close to 7 hours.

This is equivalent to about 650 mb/second for that time period. That’s about 16 TB of data. We don’t even have that much in our bucket! They must’ve downloaded many things multiple times.

For most people in our Discord they’re using our API to create fun things based on their history. It turns out we need more protections in place to stop bulk access.

An Easy Solution With Issues

The solution for this isn’t technically difficult, but it’s a pain: make this bucket private. Doing that immediately would cause the site to no longer show images, and would prevent anyone using the API from getting images. We needed a plan to make it private and generate signed URLs for all images that expire after a set period of time.

Signed URLs are a variant of the original URL with additional parameters. I think of it like sending an address (the URL) and a password (the additional parameters that change).

You can generate a signed URL using the would allow access for a specific file and a duration. That URL will look something like this:

Example URL

https://storage.googleapis.com/hardcover/external_data/36306160/04fdf2f73287526f8326413f4d3d7ec77999b832.jpeg?GoogleAccessId=hardcover-production%40hardcover-313100.iam.gserviceaccount.com&Expires=1723846732&Signature=gQ81vjCntrus3j5xbr2r7XEQ30DCTye4ikwdrAQvhwlGGeUJuJ760n9f2o%2B70zjM91%2Bng3C4pWgZzp2DFWdXH2%2BAZMFv1pYMzk%2F20x66NKnZ2dX%2BbQuVu6BgDsIw%2BvmLzEnsMbN6RGm0Dlq0V8e8JoEWrohR5UkN1n5YscnOBywZgsSxIQ8KrL079GeCvWvdE%2B%2BAldLuHT0JhFyo76hJE%2Ba7tCUBuL8drPQSKaHguLrbMjrtuW8%2FfuKRSOnY8wMgI%2FQcFVZPDuA5uVXchi67zVu26RFraBO93MxfhwuIpFHVft6ViRxLF0irLp%2FGDTzDPwpR5vBSLlMPk58ByxxTeg%3D%3DCode language: JavaScript (javascript)

This URL contains a few specific parameters that Google Cloud Storage can use to authenticate this URL including GoogleAccessId, Expires and the Signature. Unless all 3 of these are correct you’ll get an Access Denied error from Google Cloud Storage.

On the walk home from the coffee shop I started brainstorming how to add these to Hardcover. If you’re ever wondering if a walk will help you think: the answer is most likely yes. 😂

Failed Solution #1: Change the URLs in our Database

I know what I didn’t want to do: rewrite all images in our database. Even if we make them private, those image URLs are correct. Also, since signed URLs expire after a set period of time, if we went this route, we’d need to regenerate 5 million signed URLs over that time period.

This did get me thinking about how long we should allow URLs to be used for. I landed on one day. We can’t regenerate 5 million signed URLs everyday – nor do we need to. This option was out.

Failed Solution #2: Update the API to return Signed URLs

Our API (Hasura) connects straight to our database. If someone requests 100 books with covers, what they’re getting back is straight from our database. Ruby and Rails aren’t involved.

In other words, we have no way to override the static value from that column in the database. Nor should we. That endpoint to get data about editions and books should be allowed to be accessed at a much higher rate. If we were to generate signed URLs at that step it would slow down the entire system which relies on book data.

Having our API return signed URLs in bulk was out.

Failed Solution #3: Generate Signed URLs in Next.js

Next.js is responsible for presenting all information to visitors of this site. It seemed like this might be a valid solution. Before we show a URL for any image we could generate a signed URL, cache it in Redis for 24 hours then use that.

There are two major problems with this. First off, generating the signed URL would need to happen on the server. Unfortunately, we use cover images that have been downloaded client side. It’d be unrealistic to fetch information about a book on the Next.js client side, send it to the server to get the URL, then use that. Not impossible, but not great.

The other problem was bigger: API users wouldn’t have access to this! We’d effectively taken away the ability to download images.

Actual Solution: Just use Ruby on Rails

I’m a huge fan of Ruby on Rails. I’ve been using it since before version 1.0 back in 2005. All of Hardcover’s backend business logic is in Rails.

Back when I worked at Code School, we served a lot of videos. At one point our video host went down and we scurried to get a backup solution in place. We landed on using an intermediary service that would redirect to the actual host. I thought this would work for Hardcover too.

Updating the Website to Support Signed URLs

Here’s how that works in practice.

Rather including the image from Google Cloud Storage directly, we’d change this to proxy through our Ruby on Rails site. For example:

Example URL

https://projector.hardcover.app/signed/images/crop?url=https://storage.googleapis.com/hardcover/…jpeg&width=100&height=100Code language: JavaScript (javascript)

That URL is doing a lot. Let’s break it down.

First, it’s hitting an endpoint in Rails, in this case it’s a route in our Ruby on Rails application.

rails/config/routes.rb

namespace :signed_assets, path: :signed do
  resource :images do
    get :crop
    get :enlarge
  end
endCode language: Ruby (ruby)

This tells Rails to create a two new routes at /signed/images/crop and /signed/images/enlarge. These will go to the controller which needs two methods for enlarge and crop.

Those actions need to do a two things: generate a signed URL for the passed in URL and redirect to that URL.

It should also cache this generated URL. We don’t need to regenerate it every time someone looks at cover. I decided to cache these for 1 day.

rails/controllers/signed_assets/images_controller.rb

module SignedAssets
  class ImagesController < ApplicationController

    # GET /signed/images/enlarge
    def enlarge
      redirect_to_signed_url("enlarge")
    end

    # GET /signed/images/crop
    def crop
      redirect_to_signed_url("crop")
    end

    private

    def signed_params
      @enlarge_params ||= params.permit(:url, :width, :height, :type)
    end

    def url
      @url ||= Rails.cache.fetch("/signed/images/signed/#{signed_params[:url]}", expires_in: 24.hours) do
        ExternalStorage::Google::Cloud.sign(signed_params[:url])
      end
    end

    def redirect_to_signed_url action
      if url.nil?
        head :unprocessable_entity
      else
        redirect_to "https://cdn.hardcover.app/#{action}?url=#{CGI.escape(url)}&width=#{signed_params[:width]}&height=#{signed_params[:height]}&type=#{signed_params[:type]}"
      end
    end
  end
endCode language: Ruby (ruby)

This is a mostly standard Ruby on Rails Controller. The public actions are URL endpoints we set in the routes file. The private methods help with code reuse and organization.

The bulk of the work happens in the url method.

First, we check if the given URL is in the cache (we’re using Redis). If something with those contents exist in Redis, we return it any never run the contents of the block that comes after.

If a signed URL isn’t in the cache, we call ExternalStorage::Google::Cloud.sign to generate a signed URL.

I’m not going to get into generating a signed URL. We’re using the google-cloud-storage Ruby gem which handles everything, including the line that actually hits the Google API:

ExternalStorage::Google::Cloud.sign

signed_url = file.signed_url method: "GET", expires: 3600*25 # expires dailyCode language: Ruby (ruby)

These URL endpoints need to be FAST. Loading a page with 100 covers means this endpoint will be hit 100 times. My first iteration didn’t have caching, which led to a 250 ms wait PER IMAGE. With caching it’s 250 ms for the first request, then less than 1 ms after that.

Update: After this post was published, thanks to comments from Hacker News, I realized there are quicker ways to generate this URL without hitting the Google API.

The generated URL will be the same, which also means that the image will be cached on the CDN. If a user refreshes a page, they’ll still hit Rails to generate URLs for all images, but they’ll use the images cached by their browser. (side note: I’d like to improve this even more. Any recommendations?)

Updating the API to Support Signed URLs

Things are working for our website visitors, but we need to do one more step for API users: create a new endpoint for generating signed URLs.

Hardcover has an API that registered users can use for accessing their book and reading data. If you’re building something with it, you’ll have our existing Google Cloud Storage URLs already.

I ended up creating a single new endpoint, image_url_signed. It takes in a URL (which could be a cover, avatar or anything) and we return a signed URL.

Behind the scenes this Hasura API endpoint will hit another Rails controller with a single endpoint for generating a signed URL. It’s pretty much the same as the other controller.

rails/app/controllers/hasura/signed_assets_controller.rb

module Hasura
  class SignedAssetsController < Hasura::BaseController
    skip_before_action :set_paper_trail_whodunnit

    # Returns a signed asset URL for the given url
    # GET /hasura/signed_assets
    def index
      url = Rails.cache.fetch("/signed/images/signed/#{input_url}", expires_in: 24.hours) do
        ExternalStorage::Google::Cloud.sign(input_url)
      end
      render json: {
        url: url
      } 
    rescue ExternalStorage::Google::Cloud::AccessDenied
      head :forbidden
    end

    private

    def input_url
      @input_url ||= params.require(:url)
    end
  end
end
Code language: Ruby (ruby)

It even uses the same cache as for website users! 🙌

Last Step: Throttling API Use

With this setup everything works, but we haven’t fully fixed the problem. Someone could still hit our new API endpoints repeatedly and bypass our newfound security.

Hasura has an option that could help here: API Rate limits.

Unfortunately, this is a Hasura Enterprise feature, and we’re mere peasants on the free version. It can even rate limit by user id from a JWT – which is exactly how we determine the owner of a request.

I’m considering moving back to enterprise once we can afford it, but that’s out for now.

Fortunately this endpoint is in Rails. We can lock it down on that side instead. After a little Googling, I found the beautiful rack-attack gem that does exactly what I was looking for.

If you’re not from the Ruby world, you might not have heard of Rack. Think of Rack is the base layer that most Ruby web frameworks are built on (Ruby on Rails, Sinatra, Hanami and others). It handles the low level request/response cycle.

The rack-attack gem builds on that with features for IP allowing, blocking and throttling.

In our case we wanted to throttle the API endpoint with at 60 requests a minute, but the website endpoint at 500 a minute – equal to browsing at a steady pace.

This ended up being so much easier than I thought. It only needs a new initializer.

rails/config/initializers/rack-attack.rb

class Rack::Attack
  Rack::Attack.cache.store = ActiveSupport::Cache::RedisCacheStore.new(url: ENV["REDIS_URL"]) 

  throttle("hasura/signed_assets", limit: 60, period: 1.minute) do |req|
    req.params["user_id"] if req.path == "/hasura/signed_assets"
  end

  throttle("/signed/images/enlarge", limit: 500, period: 1.minute) do |req|
    req.ip if req.path == "/signed/images/enlarge" || req.path == "/signed/images/crop"
  end
endCode language: Ruby (ruby)

This also uses Redis and will generate a key for each endpoint using the value returned from the block.

This allows us to throttle the API endpoint to 60 requests/minute based on user_id, while the public endpoint used by the website has a limit of 500 requests/minute based on IP address.

What’s great about this setup is that this run before Rails has even handled the request – that’s the beauty of middleware. This will return a 429 Too Many Requests header after they’ve reached their limit.

Limiting the API More?

One of the reasons I started Hardcover in the first place was because Goodreads discontinued their API. I’ve never run a public API before, but want to make sure we’re being good stewards of book data by the community as well as everyones personal book data.

I have a few other takeaways from this experience that we’ll put into place in the near future: mostly for rate limiting, reporting, limiting API access to areas that you don’t need access to and expanding on our API terms of service.

What will always be true is that you’ll be able to get any data about books, editions, authors, series, publishers, characters, your library and whatever people that follow you have decided to share. 📚

Categories
Canonical Featured

Hardcover Report for August 2024

Hi book friends!

Summer is half over (for us in the northern hemisphere), and I hope you’ve been able to enjoy your preferred way of enjoying the season with a good book. I’ve noticed that the Trending Books on Hardcover over summer tend to change to familiar and popular favorites—as opposed to exploratory reads. Maybe more people like to go into their summer reads knowing what they’re in for.

This last month has been one of the busiest for us. We’ll break down what we’ve been up to next, but it was one of those months where everything seems to come together – new features, fun conversations, and even a few things built just for fun.

Whatever you do to enjoy your summer, I hope you’re finding some time to have a little peace and enjoy a book in your favorite spot.

I’ve been spending most of the days inside lately as the temperature has climbed as high as 105 degrees Fahrenheit (40 degrees Celsius). Occasionally, I’ll head up the mountains for a jog and run through a lovely park here in SLC (Memory Grove). Even when the temperatures are high, I’ll pass by couples sitting in the shade reading and enjoying some time outside.

On the personal side, I spend more time indoors this month than usual due to the excessive heat. On release day, we saw Deadpool & Wolverine and had a blast seeing Jewel and Melissa Etheridge in concert surrounded by mountains. This month, we’re seeing Pink Martini at the same venue, one of our favorites. The Olympics have been on non-stop while working this past week, too – Snoop is my favorite announcer. 😂

We’re not traveling in August, so it should be more of the same – enjoying summer and having fun. ☀️🥳

What’s New On Hardcover?

July was a productive month. Sometimes, when we don’t release anything in a month, I feel like I’m doing something wrong. The real reason is that projects take time—often multiple months. Many of the releases in July are the result of months of prototyping on Hardcover Live and iterating until we’re happy with the result.

📘 Ability to Set Edition For Books in Your Library

This was the most requested feature on Hardcover, and we’re excited to release it! You probably know by now that we have a concept of “Books” with multiple “Editions” in different formats and languages.

Regardless of which edition you read, we’d always show the same cover and title in your library (Want to Read/Read/etc.).

Now, you can change which edition of the book appears there. Click the book button to do this, and you will instantly see the new title and cover.

📈 New Book Progress Tracking

When we initially built progress tracking, it was associated with the book in your library. We didn’t know which edition you were reading, so we couldn’t track what percentage of the book you finished (unless you added it for us).

We’ve switched to tracking progress on the individual read-through, which is now associated with an edition.

That means that every time you read a book, to track progress, you need to know its edition, reading format (physical, audio, ebook), and length (pages or in seconds).

This has a downside: your edition might not be in our database. We’ve tried to make it super easy to add a new edition and specify the format and length from the Currently Reading Page.

🖊️ Reading Journals

I’ve been wanting this for soooo long. You now have a Reading Journal for every book on Hardcover that tracks your interactions with that book. The Reading Journal also allows you to create notes and save quotes with an optional page number and tags.

Similar to changing the edition for a book in your library and for progress tracking, you can set the edition for quotes and notes.

Here’s what will automatically be saved to your journal:

  • Whenever you change the status of a book (Want to Read, Currently Reading, Read, etc).
  • Updating Progress
  • Adding a book to a list
  • Adding a book to a prompt
  • Who referred you to save a book
  • When you refer another person to read a book

This is just the first iteration. I’m sure it will look even better once Ste jumps in (fresh from his move from London to Paris!). 😂 And once more people start saving quotes and notes, there’s much more we want to do!

🔴 Hardcover Live

Earlier this year, we launched the new Hardcover Live, our weekly live show where we build Hardcover in public.

In July, we recorded and released four more episodes, which can be watched on YouTube or downloaded through your podcast player of choice.

Tune in each Wednesday at noon PST to watch us build Hardcover Live! We don’t yet have any guests scheduled for August.

If you’re an author or influencer interested in being on, please email me so we can talk. 😉

👥 Labs: Reader Similarity

During the Hardcover Live with Hailey, one feature she mentioned wanting was the ability to see differences between you and another reader. Something that makes it clear which books you both love and which ones you disagree on.

I shipped an MVP of this the next day, and Ste’s already started brainstorming ways to improve this page. 😂

Want to see which books you have in common with some people on Hardcover? Give it a try! Here are a few usernames to compare yourself with:

@adam, @ste, and @BookAnonJeff (the Hardcover team) @haileyhughes (BookTuber), @rosshardy and @ljmartin (Hardy’s Books), @veronica and @acedtect (The Sword and Laser Podcast).

As mentioned, this is a labs project. It’s not polished and will only be accessible from the Labs menu on the desktop until we get to a point where we feel it’s solid.

🏷️ Updated Genre, Mood, and Tag Pages

This is a minor update, but we updated these pages to use the new Letterbooks way of showing a list of books. This allows you to change sorting and view options for any of these. Want to sort a genre by your rating? Or maybe sort by Match Percentage to see our best recommendation for you in a specific genre?

🔜 What’s Next on Hardcover?

Whew, that’s a lot! August will have far fewer updates 😂 Here’s what’s in progress.

🎲 Book Crossword Puzzles

This one is just so fun. 😂 Luca on the team has been working hard, creating an entire system to generate these. We’re still polishing these up, but they’re getting close.

We’ll be creating these manually. The process is surprisingly simple: craft short crossword-style questions, collect the answers, and feed them into a website that generates a grid. Transfer that grid into a Google Sheet. We can export it from there and import it into Hardcover!

Okay, that sounds like a lot of steps. The hardest part is being familiar with the book enough to create the questions and answers. We’re looking for a few people to create crossword puzzles for some of the most popular books on Hardcover. You’ll get credit as the creator of the Puzzle and see a leaderboard showing who’s completed it (and how fast).

If this sounds fun, reply to this email and let me know! All you need to do is write around 25 short questions with answers. We’re only looking for one Crossword Puzzle per book, so this is a chance to create the official Hardcover Puzzle for your favorite book. Here’s a work in progress of what these will look like with some questions I wrote. (from weeks ago).

🐞 Bugs, Server Updates, and Server Costs

After moving very fast the last few months, we’ve neglected a lot of bugs in favor of new features. You’ve likely seen the dreaded Server Error, or needed to restart the mobile app to use it. This month our main focus is on paying down that technical debt, making the site faster, and lowering the cost to host it.

It’s not as glamorous as new features but this is essential for longevity.

🆓 Open Source Hardcover

One of our goals this year is to open-source the codebase for Hardcover. I confess: I underestimated how much work would be involved in this. 😅

We need to do several things to reach this point—some in code, others in legal work. We’re still working towards these and want to get there this year.

The Rest of 2024?

The Hardcover team had a great strategy meeting last month, during which we brainstormed what to work on. Our biggest focus for the rest of the year will be creating an amazing Supporter tier.

To put you at ease, we won’t do this by just moving features from the free tier. Instead, we’ll add new features for power readers: advanced stats, bulk edit mode, supporter-only ordering, and filters (e.g., sort by Match Percentage). Our hope, as always, is to create a business that lets us work on this full-time because we love it – while building for readers first and avoiding enshitification.

Behind the Scenes at Hardcover

This month, we climbed from 136 to 156 supporters, our second-largest monthly growth ever. We also hit 14,000 members! 🥳

With 200 supporters we estimate we’ll be able to cover server costs. That’s our goal for this year, which seems well within reach (even without going viral again 😂).

If you’re enjoying Hardcover, consider sending your referral link to a friend! If two friends join, you’ll get a free month as a Supporter.

Featured Prompt for August 2024

August’s Prompt comes from Ross Hardy from the Hardy’s Books YouTube Channel (Ross created July’s prompt!)

What books brought you out of a reading slump?

We’ve all been there—it’s easy to get distracted and go for a while without reading anything. But what books brought you out of that place?

What books come to mind for you? Let us know by upvoting a book or adding your own!

Last month’s prompt was In honour of Furiosa: A Mad Max Saga, what are the best dieselpunk and/or post-apocalyptic books? The Road, Station Eleven, and The Stand are the top.

Most Read Books for July 2024

Last month’s most-read books span genres and 14 years. With only one book released in 2024, readers have turned to some older favorites.

  1. Cursed Bunny By Bora Chung
  2. Yellowface By R.F. Kuang
  3. The Way of Kings By Brandon Sanderson
  4. Funny Story By Emily Henry
  5. Annihilation By Jeff VanderMeer

Funny Story is the only 2024 release on the list. Cursed Bunny jumped to the top of the list as this month’s Sword and Laser Podcast Bookclub choice. August’s S&L book club pick is The Spear Cuts Through Water, which you can expect to see on this list next month.

Most Saved Books to be Released in August 2024

  1. A Sorceress Comes to Call by T. Kingfisher (59 saves)
  2. Lady Macbeth by Ava Reid (55 saves)
  3. The Pairing by Casey McQuiston (38 saves)
  4. Wisteria by Adalyn Grace (29 saves)
  5. Apprentice to the Villain Book 2 by Hannah Nicole Maehrer (28 saves)

Nettle & Bone and A Wizard’s Guide to Defensive Baking author T. Kingfisher leads this month’s most anticipated books with a dark reimagining of the Brothers Grimm’s “The Goose Girl”.

Join us on Discord

The Hardcover Community isn’t just on the website – we’re also on Discord! If you’re not an expert in Discord, don’t worry – neither are we.

Join the over 1,000 others to chat about books, hear about product updates, and be part of the community.

Join the Hardcover Discord

Want to Support Hardcover?

As a fledgling startup, we can use all the help we can get, whether that’s becoming a Supporter, sharing Hardcover with a friend, or just following along.

We appreciate you reading this and hope you have an amazing month. Talk to you soon. ♥️

Categories
Canonical Featured Hardcover

Hardcover Report for July 2024

After a very busy May, June has felt like a (mostly relaxing) return to the usual. While we didn’t experience another “viral” moment this month as Hardcover did in May, we saw a steady flow of new readers and many people joining to play with the Hardcover API.

If you haven’t heard about the API, we’ve designed Hardcover from the very start to use the same API (programming interface) on the website that developers can use to build on top of Hardcover. You can read details and get your API token from your Settings > API page.

You might wonder why this is important if you’re not a developer. Well, let me share a quick story about Twitter.

In the early days of Twitter, the only way to post was on the website. Eventually, they invented OAuth (thanks to Leah Culver, Blaine Cook, and Chris Messina), and then suddenly, people could build on top of the Twitter API.

This caused a Cambrian explosion of apps using the Twitter API. Developers could use it to post, create Twitter clients, and build tools to manage Twitter accounts.

Side note: Back in ’09, I worked on an app at a startup called Sponsored Tweets, where advertisers could pay celebrities to write a Tweet with a link. It was amazing that some celebrities (in the days before “influencers”) were making $20k for 140 characters. 🤯

We think we can create something similar in the Book space. Developers building book-related apps and websites need good book data, but they also need a central place to store all of a reader’s book knowledge—their “library in the cloud.” That’s our goal.

We’re excited to make Hardcover for the community. Between providing a public API (which you can use today) and later open-sourcing the entire codebase (more on that later), we’re doing what we can to make it a community project, not a company.

I took a week off in June to show my family around Salt Lake City – which went well! No one had ever been to Utah before, and I think everyone left with some good memories.

Aside from that, we mostly tried to stay away from the 100-degree heat 😅. My wife, a friend of ours, and I checked out the new H-Mart, a massive Korean grocery store in town that impressed us all. It had a bunch of Korean foods we loved that weren’t available anywhere else (Sundae sausage being a favorite).

I’ve been chipping away at various Hardcover bugs and features. Lately, I’ve been slightly obsessed with Chappell Roan (check out her NPR Tiny Desk Concert, Pink Pony Club or HOT TO GO! if you haven’t). Listening to good music while coding for hours is one of my favorite things. 🧘

What’s Next on Hardcover?

After many data improvements in May, most of this month’s work took place on the design and planning side. Taking a week off can do that. 😅

New Currently Reading Book Page

One of the app’s most buggy parts has been progress tracking. Previously, we allowed readers to track a book’s progress without knowing the exact edition. That was easier, but it meant that we never knew exactly how long the book was!

In the latest update, which we’re releasing this week, we’ve completely restructured this process to require an edition with a length—either in page count or audio duration.

It isn’t very pleasant when you want to track progress on a book, but we don’t have the edition you’re looking for. 😭 Our approach to fixing this is to make it super simple to add a missing edition. You can do so from this page in a modal without leaving the Currently Reading Page. All you need to do is let us know the number of pages or length.

This is 90% done, but I didn’t make it for this newsletter’s release. 😭 You can also update progress from the Book Button, which will need a few updates before this goes out. I might try to sneak one other feature into this release too, but that’s still hush-hush. 🤫

🔴 Hardcover Live

Earlier this year, we launched the new Hardcover Live, our weekly live show where we build Hardcover in public.

In June, we recorded and released two more episodes, which can be watched on YouTube or downloaded through your podcast player of choice.

Tune in each Wednesday at noon PST to watch us build Hardcover Live! This month, we’re also planning to have an author and an influencer on the show! We’ll send out an email once we have the details set.

What’s Next on Hardcover?

Many things we wanted done in June were pushed back to July. 😅

This month, I realized that if we want to make major progress on these, I’ll need to delegate more work to the rest of the Hardcover team. We’ve started doing that, alternating who answers emails and responds on Discord to give me more time to focus on some of these projects.

👩‍💻 Open Sourcing the Codebase

We have a few more tasks needed to make the codebase public before we flip the switch! I’m excited that we’re close, but the last five are a little tricky:

  1. Make sure we’re 100% in compliance with all external data providers. This is tricky since we save so much book data from many sources, each with its own retention rules.
  2. Decide on a software license. We’re working with a lawyer on this one to get it right.
  3. Create a Hardcover Importer. We have an exporter, but we need a way for people who work on the app locally to get their data from Hardcover to their local computers.
  4. Rotate all API tokens and confirm the app works with minimum external dependencies.
  5. Dockerize WordPress.

I optimistically wanted to do this by the end of July, but now I think it might be pushed back a further.

🖼️ Set Edition & Cover for Book In Your Library (Development)

This is the #1 most requested feature on Hardcover today, and we’re working on a solution! This will allow you to set which cover and edition title you see in your library and your lists.

We plan to use some of the same functionality to set editions we use to update progress for this.

📚 List Filtering (Development)

The first phase of LetterBooks allows for ordering and view options for lists of books. It’s a huge improvement, but more than that, it’s a complete rewrite of the code used to display a list of books.

This feature isn’t ready just yet, but we’re getting there! It’ll show up on the left side on large screens or in a drawer on mobile.

We’re planning on creating filters for the following:

  • Author
  • Author gender (multiple select: any/male/female/other)
  • Author BIPOC (multiple select: Yes/no)
  • Language
  • Owned?
  • Page count (within a range)
  • Publish year (within a range)
  • Readers Count (within a range)
  • Tags (Genre, content warnings, moods)
  • Your tags (Genre, content warnings, moods, tags)
  • Your status (none, want to read, read, etc)
  • Compilation (yes/no/both)
  • Book title (text)
  • Match Percentage (within a range) – Supporters only

Is there another field you think would be great to filter by? Let us know! Once we get Filtering to a good place, we’ll start on Bulk Edit Mode.

📊 Dashboard & Stats (Design)

Stats are one of the oldest features on Hardcover from December ’22. We’ve been redesigning this page on Hardcover Live lately.

We’ve been brainstorming what stats will include, which already looks like existing. Is there a dream stat or graph of your book data you’d love to see? Let us know!

🎲 Book Crossword Puzzles

These are super close! As someone who plays Wordle and Connections every day, I can’t wait to play a Crossword puzzle for a book after I finish it.

Not all books will have a Crossword puzzle, but we plan to work with the community to create some for the most popular ones.

Behind the Scenes at Hardcover

After growing by more than 50% in a month in May, we’ve had much more modest growth in June of 25 to 40 new members a day (welcome!).

I expected our supporters’ numbers to dip significantly this month – as often happens, there is a large inflow of new members. Our supporter’s number ended up staying mostly stable (technically down one).

👉 Check out our income and expenses page to see how much we’ve earned and spent every month since Hardcover started.

Bookfluencer Focus

This month’s Bookfluencer Focus is on Ella Lippelman, @elephantt00, on TikTok, and @ella on Hardcover, who posted a great video talking about Things about my book tracking app that just make sense.

Hardcover is still super new, with very few mentions on social media. We truly appreciate any mentions or comments you make about Hardcover.

Have you posted about Hardcover somewhere? Let us know, and maybe we’ll feature you next month!

Featured Prompt for July 2024

July’s Prompt comes from Ross Hardy from the Hardy’s Books YouTube Channel.

In honour of Furiosa: A Mad Max Saga, what are the best dieselpunk and/or post-apocalyptic books?

We’ve been truly blessed to have such a strong prequel to one of the greatest post-apocalyptic action films of all time, Mad Max: Fury Road. With that in mind, what are some books that evoke similar vibes in their worldbuilding as the petrol-stained Australian wasteland of Mad Max?

Mad Max DNA:

– Post-apocalyptic, underpopulated world
– Scavenger industry, resource scarcity
– Ostentatious displays of personality—camp humour
– Warring factions
– Heart—rare but impactful displays of humanity in the midst of a depraved society

What books come to mind for you? Let us know by upvoting a book or adding your own!

June’s Prompt

Last month’s feature prompt was What are the must-read LGBTQ fantasy books? Right now, Gideon the Ninth is in the top spot. A genre-bending science fiction, fantasy, and horror-ish series that is also #4 in What are your favorite dark fantasy books?

Most Read Books for June 2024

We saw some shakeups this month!

  1. All Systems Red by Martha Wells (#1 of 7 in The Murderbot Diaries)
  2. Yellowface by R.F Kuang
  3. This is How You Lose the Time War by Amal El-Mohtar and Max Gladstone
  4. Mistborn: The Final Empire by Brandon Sanderson
  5. Bookshops & Bonedust by Travis Baldree

We have two books from 2023 (Yellowface and Bookshops), joined with books released years ago. I suspect people enjoy their summer reading and choosing books they’ve heard lots of good feedback on.

The Murderbot series is being adapted into a series coming to Apple TV+ starring Alexander Skarsgård. Filming started in March 2024, but the series will probably be released in 2025.

Most Saved Books To Be Released in July 2024

The most anticipated books for July focus on two genres: suspense and romance. OK, I just copied this line from last month, but it’s true this month, too! 😂

  1. The Grandest Game by Jennifer Lynn Barnes (#5 in The Inheritance Games) (49 saves)
  2. I Was A Teenage Slasher by Stephen Graham Jones (44 saves)
  3. Reckless by Lauren Roberts (#2 in The Powerless Trilogy) (42 saves)
  4. The Spellshop by Sarah Beth Durst (32 saves)
  5. Masquerade by O.O. Sangoyomi (30 saves)

Jennifer Lynn Barnes has released a new book in The Inheritance Games series each year since 2020 – building up a loyal audience since The Inheritance Games #1. The Hardcover reviews describe it as YA Knives Out – which sounds like a ton of fun (the first one is on my want-to-read list! I’ll catch up someday 😂).

Masquerade is based on the myth of Persephone but set in 15th-century West Africa. It follows Òdòdó as conflict and adventure whisk her away from home, and she must work within politics, religion, and society to survive and thrive. (I’m trying not to give spoilers here. With a 93% match percentage for me, I’m excited to read this one.)

Join us on Discord

The Hardcover Community isn’t just on the website – we’re also on Discord! If you’re not an expert in Discord, don’t worry – neither are we.

Join the over 1,000 others to chat about books, hear about product updates, and be part of the community.

Join the Hardcover Discord

Want to Support Hardcover?

As a fledgling startup, we can use all the help we can get, whether that’s becoming a Supporter, sharing Hardcover with a friend, or just following along.

We appreciate you reading this and hope you have an amazing month. Talk to you soon. ♥️

Categories
Canonical Featured Hardcover

Hardcover Report for June 2024

Hi book friends!

What a month! In May, the algorithm gods shined on us, leading to the largest growth since we launched. It was enough to break all of our graphs. 😂

To put things in perspective, here are some exciting numbers:

We jumped from 7,897 members to 12,159! That’s 4,262 new members, or 53% growth. 📈

Many of you upgraded from free members to supporters. That increased our supporters from 99 to 137! That’s 38% growth in a month (!).

The main reason for this explosion of growth was a combination of two things: Hardy’s Books YouTube video The Best Goodreads Competitor (That You Probably Haven’t Heard Of) and YouTube’s discovery algorithm deciding to notice us.

After 3 years of building, it feels exciting to be blessed by the algorithm gods for once. 😂

(I’ll take any chance to mention Onyx the Fortuitous, who has a movie out that debuted at Sundance this year!)

I’ve worked at companies and on sites that have seen millions of users, but Hardcover is now, without a doubt, the most successful project that I’ve personally built – and the most fun!

I have big dreams for Hardcover, but at it’s core I want to do everything possible to set it up as a community project (more on that down below in What’s Next). It wouldn’t be what it is without you sharing your reviews and ratings, discovering new books from other readers, or chatting on Discord. ✨

This month, I finished my re-read of the Three Body Problem Trilogy. After watching the Netflix series, I was reminded of what an incredible story it is. I enjoyed it even more this time around. If you’re a science fiction fan, I’d encourage you to check out both – and even to start with the series first, which does a fantastic job of setting up the world.

Oh, and if you’re new to Hardcover, you might be wondering what’s up with this email/post. We recap everything from the previous month each month, share popular books, and announce what we’re working on next. It’s an optional way to stay updated with everything happening in one place. Speaking of which…

What’s New on Hardcover

After releasing Letterbooks last month, this month has been quieter. We fixed some bugs after the last release – which is expected. We did manage to release a few new things in May:

Automatic & Improved Book Data

We need a bunch of data about books. It’s hard to comprehend just how many books and editions are required for a book-tracking website. To make this work, we need to pull in data from several sources and distill it down to what you see.

There’s been a lot of room for improvement in the way we’ve done this! When you add a new book by ISBN 10 or ISBN 13, we’ll now grab data from multiple sources about those books.

This happened before, but not to the extent it does now. It’ll even grab high-quality covers!

This update also starts tracking publishers for editions and gives publishers their own pages on Hardcover.

We also added book category to all books (book, short story, novella, poems, graphic novel, web novel, etc). This field isn’t used just yet, but the plan is to allow filtering of lists and filtered goals using it. This will help with readers who set goals like “Read 100 books,” which exclude graphic novels and non-books (or vice versa).

We’re slowly running an update for all books across the site to improve their data. This process will take most of June. But after that, you’ll see far fewer books without covers or with empty data.

👉 Read more about how we’re Automating Book Data

🔴 Hardcover Live

Earlier this year, we launched the new Hardcover Live, our weekly live show where we build Hardcover in public.

In May, we recorded and released 3 more episodes, which can be watched on YouTube or downloaded through your podcast player of choice.

We’re taking the next two weeks off from Live to focus on implementing several of our designs.

What’s Next on Hardcover?

Here’s a look at what’s coming up in June.

🖼️ Set Edition & Cover for Book In Your Library

This is the #1 most requested feature on Hardcover today, and we’re working on a solution! This will allow you to set which cover and edition title you see in your library and your lists.

This will be huge for non-English readers who want to see the book in their language. It’ll also be helpful for readers who want to see the cover they’re most familiar with in their library.

📚 Bulk Edit Mode & List Filtering

The first phase of LetterBooks allows for ordering and view options for lists of books. It’s a huge improvement, but more than that, it’s a complete rewrite of the code used to display a list of books.

We’ve planned out the next steps for lists: bulk edit mode, filtering, and adding Letterbooks everywhere else across Hardcover!

We’re currently planning to make Bulk Editing a Supporter-only feature.

🆓 Open Sourcing Hardcover

I’m way too excited about this. We’re making progress and are down to three remaining tasks before we can flip the switch: deciding on a license, rotating developer keys that snuck into the repo, and creating a custom importer for people to bring their data with them. I hope to progress on this in June, and if things go well, open source the entire codebase in July.

📊 Dashboard & Advanced Stats

We’re continuing to work on this while trying to create a reusable setup that allows stats to be shown on a dashboard alongside other highlights you’ll want to see. We still have to do a lot here, but we’re making progress!

🎲 Book Crossword Puzzles

This one is entirely for fun. 😂 Luca on the development team has been working on a new labs project that will allow us to create crossword puzzles based on books (and other categories later). The hope is to have a page that lists all crossword puzzles (like with Bookles) and shows up on a book page if it has one. I’m excited that people will have one more way to enjoy their time on Hardcover. 😊

🔍 New Reader Research

Even though we have many new members, we know most of them won’t stick around. People are curious to try something new and shiny but often stick with what’s familiar. This month, we will start researching why people joined and didn’t stick around. We’ll be reaching out to some members this month in hopes of better understanding what they wanted that we were missing.

Behind the Scenes at Hardcover

I shared some of our numbers up top, but I wanted to save one big one for this section:

Our revenue exceeded server costs this month!

It was positive even if it was only $36 (-$1,160 in expenses, +$1,197 in income). In other words, we were profitable (excluding paying ourselves). It’s a big milestone for us, and we took some time to celebrate it. 🥳

We saw 38 new members upgrade to supporters, putting us over the 100 barrier for the first time. 🙌

About half of our members subscribe yearly, which means our monthly MRR is much less than our revenue—about $405/month. Our goal this year has been stability, and I think we’re in good shape.

👉 Check out our income and expenses page to see exactly how much we’ve earned and spent every month since Hardcover started.

Bookfluencer Focus

This month, we’re starting a new section focusing on bookfluencers across the web. A few years ago, it might’ve been surprising to see trending books on TikTok hit the NY Times bestseller list—but not anymore. Trends can start from single posts (This is How We Lose the Time War) or passionate readers just wanting to share their experiences with the world.

▶️ Hailey Hughes (@haileyhughes on Hardcover) posted an in-depth video exploring goodreads alternatives | storygraph, fable, bookmory, hardcover, bookly + more. In this video, she tries out and demos several different platforms. Watching this as the creator of one of these platforms, I was on pins and needles, wondering if she’d like Hardcover. It turns out she did, and she even ended the video by saying she was excited to use it more! 🙌 I’ve since reached out to Hailey and talked about some future ideas. Definitely check out her channel.

▶️ Ashley (@ash.loves.to.read on Hardcover) posted a video to her BookTube Hardcover and Why I Like It More Than Goodreads!, which explores the features on Hardcover she’s tried with her take on them. Thanks so much, Ashley!

▶️ Ross (@rosshardy on Hardcover) from Hardy’s Books posted a video titled The BEST Goodreads Competitor (That You Probably Haven’t Heard Of). Thanks to a catchy title, good editing, and an overall entertaining video, it spread to a wider audience than their channel. I love that he highlights both the good and the parts we could improve on. You can check out our fun interview with Ross and Laura (@ljmartin on Hardcover), which we recorded live.

Have you created any content that mentions Hardcover? Or want to work with us? Reply to this email and let me know. 🙌

Featured Prompt for June 2024

June is Pride Month, and we want to celebrate and commemorate lesbian, gay, bisexual, and transgender authors and characters throughout literature.

That’s the focus of this month’s Featured Prompt:

What are the must-read LGBTQ fantasy books?

Few genres have embraced sexuality like Fantasy. Whether it’s friends to lovers, forbidden relationships, or happily ever after – LGBTQ+ storylines can explore cultures and societies in a way that cisgender relationships can’t. What books standout to you with gay, bi, trans or queer characters?

What books come to mind for you? Let us know in this month’s prompt.

May’s Prompt

Last month’s featured prompt was What’s your favorite sci-fi or fantasy with a strong sense of place? The top results so far are The Lord of the Rings, Dune, The Way of Kings, and The Fifth Season – all incredible Fantasy epics.

I remember reading The Lord of the Rings in 7th grade and scouring the map to discover everything I could about the world, from Mordor to the Gray Havens and from the Iron Hills to the Bay of Belfalas. I see why it’s the top-voted book!

Featured List for June 2024

Lists are a core part of Hardcover, but one that we’re still trying to figure out to elevate. One way we want to do this is by showcasing some of the amazing lists created by the community each month.

For Pride Month, we wanted to feature the Queer Science Fiction and Fantasy Books For Pride list by science fiction and fantasy (SFF) author Sienna Eggler (ey/em). Here’s how ey describe this list.

In this list, I tried to focus on queer books that don’t get as much buzz on other lists. Most are indie titles, others are traditionally published or from smaller presses.

Sienna Eggler

Check it out if you’re looking for a lesser-known SFF this month.

Have you created a list you think is worth sharing? Share it in the #lists channel on Discord, and maybe we’ll feature it next month.

Most Read Books for May 2024

We saw some shakeups this month! Here are the books with the most readers on Hardcover in the last month.

  1. Funny Story by Emily Henry
  2. Emily Wilde’s Encyclopaedia of Faeries by Heather Fawcett (#1 of 2 in Emily Wilde)
  3. Dune by Frank Herbert (#1 of 8 in Dune)
  4. All Systems Red by Martha Wells (#1 of 7 in The Murderbot Diaries)
  5. Fourth Wing by Rebecca Yarros (#1 of 5 in The Empyrean)

Emily Wilde’s Encyclopedia was this month’s Sword & Laser Podcast book club book, which shares a huge overlap of readers with Hardcover. Dune has been on the rise thanks to the incredible Dune 2 movie. All Systems Red is preparing to film its TV series for Apple TV+ and casting new people every day. Fourth Wing was the most popular book of 2023 and continues to make waves (🐉🌶️).

If you’ve looked at Emily Henry’s body of work, you’ll see hit after hit: Happy Place, Book Lovers, People We Meet on Vacation, Beach Read, and more. Her cozy romance books are perfect for summer reading (or anytime).

Most Saved Books To Be Released in June 2024

The most anticipated books for June focus on two genres: suspense and romance:

  1. Middle of the Night by Riley Sager (74 saves)
  2. The Midnight Feast by Lucy Foley (69 saves)
  3. Not in Love by Ali Hazelwood (67 saves)
  4. Horror Movie by Paul Tremblay (50 saves)
  5. The Rom-Commers by Katherine Center (44 saves)

You might recognize a few of these authors. Each one of them has had hits in the past and developed loyal reader bases. Riley Sager’s The Only One Left and Ali Hazelwood’s Love, Theoretically both appeared on Hardcover’s 2023 Year in Books.

Each of these books is by an established author who is already popular on Hardcover. I’d love to find a way to showcase books by lesser-known authors and even authors releasing their first book. If you have any ideas on how we could do that, I’d love to hear them! (Reply to this email with your ideas.)

Join us on Discord

The Hardcover Community isn’t just on the website – we’re also on Discord! If you’re not an expert in Discord, don’t worry – neither are we.

Join the over 500 others to chat about books, hear about product updates, and be part of the community.

Join the Hardcover Discord

Want to Support Hardcover?

As a fledgling startup, we can use all the help we can get, whether that’s becoming a Supporter, sharing Hardcover with a friend, or just following along.

We appreciate you reading this and hope you have an amazing month. Talk to you soon. ♥️

Categories
Canonical Featured

Automating Book Data! Librarian & Data Update Q2 2024

This isn’t the most exciting name for a release, but I’m unusually excited about this update!

First a bit of background.

When you add a new book to Hardcover through ISBN or other external identifiers, we try to lookup as much data as we can grab about that book from a number of APIs. If we’re able to, we update that book and populate all that data immediately.

But that wasn’t working great. We’d only get data from a single source then call it a day. Librarians would need to link that book to other external data sources before we’d pull data from them.

One major part todays update skips this entirely. If you add a new book by ISBN or external identifier, or add a new edition to an existing book by ISBN/identifier, we’ll now go out and lookup that edition on MULTIPLE sources and update both the edition and book with that data.

Another part of this update is a change and who can add and edit book data. Rather than try to communicate all of that through text, check out the table below. The biggest change is that free readers can add new manual books to Hardcover, but cannot add new manual editions. All new editions by free readers must be associated with an external identifier. Everyone can still add new books however.

FeatureGuestsFree ReadersSupporters & LibrariansAdmins
New Book by Identifier
New Manual Book
New Edition by Identifier
New Manual Edition
Edit Empty fields for books & editions
Edit Filled fields for books & editions
Connect Editions w/External Mappings
Change metadata (slug, user added, etc)
Merge Books, Editions, Authors, etc✉️✅ / ✉️
Toggle book state

The ✉️ indicates that a report will be sent to an admin to review and approve or reject that change. Librarians can make changes with an impact below a certain point. Changes that have a large impact are sent to an admin for approval. All merges by free readers are sent for approval.

Changelog

The result of this is a MUCh more accurate snapshot of what the book and edition are. 🙌

This is just one change for this release, but likely the biggest one for Librarians. Here’s the full log of everything that we’ve changed in this release.

New Features

  • Adding a new book by ISBN will automatically add external mappings and load data from multiple sources!
  • Ability to add a new edition by isbn or external mapping and have it load data from multiple sources + the identifier source.
  • External mappings that are associated with a different ISBN will be automatically split out into the right edition (or create an edition if needed).
  • New external data provider added for AbeBooks for loading book covers.
  • Ability to merge editions! This will not allow editions with conflicting identifiers to be merged (ex: two books with different set ISBN-10 can’t be merged).
  • New/Edit Edition Form option to set Publisher for a book.
  • Publishers will now show up in search.
  • Publisher page listing their 100 most popular books (we’ll update this page with pagination, ordering and filtering options soon).
  • The publisher of an edition is linked on the book editions and individual edition pages.
  • New/Edit Book Form option for Book Category (Book, Novella, Poems, Graphic Novel, etc).

Bug Fixes

  • Fix for updating an edition or book not actually updating the book or edition.
  • Fix for submitting an new import without selecting a file.
  • Fix for when an external source sets a book to be zero pages, causing us to not show page count for a book.
  • Fix for CSV importer if you left it blank and clicked submit.

What’s Next?

This release was a bunch of cleanup for how we load data from external sources. For the next month or two we’ll be using this system to load data for all books slowly while fixing bugs. After that, there are a few things we’ll want to do next around data:

Manage Character and Publisher Pages – Characters and Publishers are both relatively new to Hardcover. There’s still much more we need to do to bring them fully into the site.

Librarian Data Queues – It’s tough for librarians (and admins) to know which books are missing data right now. We’re planning to add some functionality to the upcoming Dashboard that would allow Librarians to see which books and editions are in the most need of help – both from books in their library and Hardcover as a whole.

If you’d like to become a librarian, check out our new frequently asked questions section for information on how to join the Shush (our made up collective noun for librarians 🤫).

Categories
Canonical

Hardcover Report for May 2024

Hi book friends!

It’s official, Hardcover is 3 years old! On April 23, 2021, when Twitter was still a happy place, I posted a random thought:

I’m considering making a Goodreads competitor (or more aptly a Letterboxd for books) out of spite for Amazon.

A “Spite Site” if you will.

— Adam Fortuna (@adamfortuna) April 23, 2021

I was motivated by a combination of factors happening all at once:

Using Letterboxd to track movies I watched, and realizing how much better it was than Goodreads.

Consuming the Goodreads API to show what I was reading on my personal blog, only for Amazon to announce the API would be deactivated.

Attempting to divest myself from big tech in all areas (notably Facebook due Cambridge Analytica’s election interference and Amazon due to, well, that’s an entire post 😅).

Watching the Spite Store episode of Curb Your Enthusiasm where Larry David opens a coffee shop right next door to the shop he was banned from.

Within a week of that Tweet, I posted on Reddit looking for cofounders, had an initial video call with a bunch of strangers and we were off to the races!

Within two weeks we’d decided on a name, registered the domain and started interviewing users to figure out what we should build.

Side note: Major thanks to everyone who’s ever responded to survey, given feedback on Discord or joined a call to share your thoughts. You’re the reason why Hardcover has evolved to where we are to. Some members have been around since the beginning; like @Lieje who was one of the first people we interviewed before Hardcover even had a name!

Speaking of names, here are a few of the names we brainstormed. I shudder to think where we’d be if we’d chosen some of these. 😂

Just look at these amazing names we almost picked. 😂

The first year for a new startup is rough. It’s easy to dream and plan an ambitious project, but turning a vision into a product takes a lot of work and money.

So far we’ve spent 6,646 hours working on Hardcover (3.2 years of 40-hour weeks) and spent $38,066. Some days that seems like a lot, but others it seems like nothing for building a competitor to a multi-million dollar business with major market share.

Working on this project has been a dream come true. Each month as I talk to new readers and see the site improve based on those discussions I’m more excited to dream about where it will go next! 🚀

Usually I do some kind of personal update in this first part of the email. For April, my wife and I spent half the month on vacation in South Korea enjoying the cherry blossoms and eating everything we could. I’m working on a photo-heavy blog post for my personal blog about the trip that I’ll share when it’s done.

What’s New on Hardcover

Our focus this month has continued to be on list improvements and onboarding new members.

📚 LetterBooks Lists!

We’ve completely reimagined what a “list” of books on Hardcover can do – starting with your library and lists. The name LetterBooks is taken from Letterboxd lists, which were a major inspiration to us.

If you’re the kind of reader who likes to discover new books from lists this update is for you!

Letterbooks can help you find and refine what you want to read so you spend less time searching and more time reading. Here are a few examples:

Sort any library (yours or another readers) by exactly what you’re looking for. My favorite is sorting by Match Percentage to see what books Hardcover thinks you’ll love most. We also added a Shuffle sort, which Jeff has long wanted. 😂

Your library contains books in each status. We’ve also added an “All” page that shows all books.

We’ve redesigned Shelf View and Table View to be more usable. This meant restricting covers in this view to all be the same size – which results in a beautiful tiled look. Try this out on your own profile (I’ve sorted by Popularity).

Table View with ability to add custom columns

We’ve updated each book to show up with context awareness. For example, your “Read” books will show your rating and your “Currently Reading” books will have an easy way to update your progress.

You can update progress with the slider, or manually by clicking on the page number.

We’ve rolled out LetterBooks for your Library and Your Lists to start. We plan to add them everywhere

There are entirely too many features to fully dig into them in this post. I’ve put together a full list of what we’ve done so far in phase 1 of Letterbooks, and what phases 2 & 3 will look like.

Introducing Letterbooks: Advanced Lists for Power Readers →

🧭 New Navigation

Ste had a great idea for how navigation could work that’s easier to use, faster and, well, pretty cool!

We’ve moved everything into three categories – Discover, Browse, and You. There’s a nifty transition between them, and and a secret “Lab Experiments” section that we can use to experiment with new ideas before they become core features on the site.

❤️ List Bookmarks are Now Likes

We changed the terminology around “Bookmarked Lists” and switched them to “Likes”. You’ll be able to see all of your liked lists from your profile, so nothing has changed there.

We did this because we want people to be liberal with their support for others on the platform. The concept of liking something is more familiar from other social platforms too.

🌐 API Migration

Thanks to contributions from Luca, a new developer on the team, we were able to move our API from Hasura Cloud to Heroku.

I absolutely love Hasura. It’s the most developer friendly way to create an API that I’ve ever experienced. Unfortunately, their cloud hosting costs don’t quite make sense for our project.

Fortunately Hasura is open source, and we can deploy it on our own – which we’ve done. This means that rather than paying $99 + $2/GB for bandwidth, we’ll pay $100 for the hosting regardless of bandwidth. This should allow more people to use our API without us worrying about bandwidth costs.

🔴 Hardcover Live

Earlier this year we launched the new Hardcover Live, our weekly live show where we build Hardcover in public.

In April we recorded and released 2 more episodes, which can be watched on YouTube, or downloaded through your podcast player of choice.

We’re taking this week off from Live in order to roll out some of the features mentioned above (and write and send this post 😅).

What’s Next on Hardcover?

While there’s a bunch we want to do, we’re focusing on some core improvements right now.

📚 LetterBook Phase 2 & 3

The first phase of LetterBooks is what you see today and described above. It’s a huge improvement, but more than that it’s a complete rewrite of the code used for how we show a list of books.

Phase 2: Filtering (which will be a huge feature), custom header images, reasons for why a book was added and bulk edit mode.

Phase 3: Adding LetterBooks to all lists!

When I say “list” what I really mean is any collection of books. That could be showing books an author has written, books in a series, books in a goal, books in a prompt, books similar to another book, trending books – you get the idea. Anywhere there’s an array of books we’ll turn it into a LetterBooks list.

You can read more about future plans for LetterBooks in our blog post announcement.

📊 Dashboard

If you’ve tuned into our Live’s recently, you’ll know we’re working towards a new “home” page for readers to use. The dashboard will be customizable, where you can add widgets based on what you want to see when you login.

We ran a poll earlier this year to figure out what people wanted to be able to perform from here. The idea is to have a pulse on your reading, stats, friends, authors and everything in one place.

🆓 Open Sourcing Hardcover

We’ve set a goal for the team to open source the code for Hardcover this year. We think the dashboard will be a great place for contributions – where developers can create their own dashboard widgets and have them added to an official widget library.

There’s a bunch we want (and need) to do before getting there. Some things are obvious like removing commits with API keys (oops 😅). Other are more elaborate, like figuring out how to bootstrap data for people locally.

Why open source? There are a bunch of reasons, but I’ll name my top two.

First, it shows that we’re not using underhanded techniques or secretly or selling data. It allows our code to be audited and reviewed – which also helps us find bugs and flaws.

But the reason I’m most excited about is allowing more people to contribute. I often receive emails from developers wanting to help out on Hardcover. It’s tough to vet devs and figure out who’s going to follow through, who has the time, skillset, and availability to spend the effort needed to get up to speed and make a difference. Open sourcing will allow anyone to try to make a difference.

Behind the Scenes at Hardcover

We’ve welcomed a bunch more readers this month, bringing our total up to 7,966 readers! Most people that join end up completing onboarding and giving us a try, however about half disappear after the first month.

We’re just starting to research why that is. What is it that brought these readers in? Why didn’t they stick around?

We’ll be reaching out to some of them in the coming weeks to chat and better understand these questions and more. If you’re reading this and you joined Hardcover but haven’t stuck around (but somehow made it this far 😂), please reply to this email and let me know! Why’d you initially join? Why didn’t you end up using Hardcover?

Our supporters ticked up another 6 from 93 to 99 last month. Who’s going to be #100?!

Featured Prompt for May 2024

We often read for characters, stories and conflict, but another factor can make or break a good world – the sense of place.

That’s the focus of this months Featured Prompt from @DrTalos.

What’s your favorite scifi or fantasy with a strong sense of place?

I’m interested in new genre books where the setting is almost like a character. I’m especially interested in books that also have a strong plot. For me, the prime example is “Finch” by Jeff vandermeer. Maybe “City of Miracles” by Robert Jackson Bennett. What are books like this for you?

April’s Prompt

Last months featured prompt was What’s your favorite cozy fantasy? Legends & Lattes leads the pack, with many more I’m excited to read on the list.

Most Read Books for April 2024

Our top 5 for this month are exactly the same as last month down to the order. 😅 This leads me to think that Hardcover readers enjoy being a part of what’s collectively popular. I know I do. I’ve been working through the Trending list, which now accounts for 9 out of 10 of my Libby reservations. 😂

  1. Iron Widow By Xiran Jay Zhao
  2. Fourth Wing By Rebecca Yarros
  3. Bookshops & Bonedust By Travis Baldree
  4. Iron Flame By Rebecca Yarros
  5. Dune By Frank Herbert

Most Saved Books To Be Released in May 2024

  1. The Last Murder at the End of the World by Stuart Turton (40 saves)
  2. The Ministry of Time by Kaliane Bradley (17 saves)
  3. The Honey Witch by Sydney J. Shields (15 saves)
  4. The Silverblood Promise by James Logan (11 saves)
  5. When Among Crows by Veronica Roth (10 saves)
  6. A Crane Among Wolves by June Hur (10 saves)

Stuart Turton is well known for The Seven Deaths of Evelyn Hardcastle, a science fiction thriller with too many twists to count. The Last Murder looks to take up that mantle.

The next book by Veronica Roth, famous for the Divergent series is surely one to watch.

Join us on Discord

The Hardcover Community isn’t just on the website – we’re also on Discord! If you’re not an expert in Discord, don’t worry – neither are we.

Join the over 500 of us to chat about books, hear about product updates, and be a part of the community.

Join the Hardcover Discord

Want to Support Hardcover?

Being a fledgling startup we can use all the help we can get! Whether that’s becoming a Supporter, sharing Hardcover with a friend, or just following along.

We appreciate you for reading and hope you have an amazing month. Talk to you soon. ♥️

Categories
Canonical

Introducing Letterbooks: Advanced Lists for Power Readers

We’ve completely reimagined what a “list” of books on Hardcover can do – starting with your library and lists. The name LetterBooks is taken from Letterboxd lists, which were a major inspiration to us.

If you’re the kind of reader who likes to discover new books from lists this update is for you!

For starters, we’ve made sorting and changing the view to find the data you need simple.

Your library contains books in each status. We’ve also added an “All” page that shows all books.

I love that it shows your icon here to make it clear which sorting options are specific to you. We also added a Shuffle sort, which Jeff has long wanted. 😂

We’ve redesigned Shelf View and Table View to be more usable. This meant restricting covers in this view to all be the same size – which results in a beautiful tiled look. Try this out on your own profile (I’ve sorted by Popularity).

We’ve updated each book to show up with context awareness. For example, your “Read” books will show your rating and your “Currently Reading” books will have an easy way to update your progress.

You can update progress with the slider, or manually by clicking on the page number.

Table View works similar to before, with the ability to add new columns. This view is wider to give you extra room for more data.

Table View

We’ve rolled out LetterBooks for your Library and Your Lists to start. We plan to add them everywhere

So what can you do with LetterBooks lists? Here are a few of my favorite ways to use them.

  • Sort your Want to Read List (or any list) by Match Percentage to see which books are the most recommended.
  • Check out someone else’s read list and sort by their rating.
  • See how many books you’ve read in a list quickly and clearly.

Every time you look at a list the URL will be updated. Meaning you can bookmark or share anything you see!

This is still the first phase of LetterBooks. Keep reading to see what we’re doing next.

📚 LetterBook Phase 2 & 3

The first phase of LetterBooks is what you see today and described above. It’s a huge improvement, but more than that it’s a complete rewrite of the code used for how we show a list of books.

Phase 2 of LetterBooks will involve a few more updates to your Library and List page to support filtering (which will be a huge feature), custom header images, reasons for why a book was added and bulk edit mode.

Once all of this is done we’ll start on Phase 3: adding LetterBooks functionality to all other lists on Hardcover!

When I say “list” what I really mean is any collection of books. That could be showing books an author has written, books in a series, books in a goal, books in a prompt, books similar to another book, trending books – you get the idea. Anywhere there’s an array of books we’ll turn it into a LetterBooks list.

Once this is done, you should have the same familiar sorting, filtering and view options everywhere across the site.

The Tech Behind LetterBooks

Forgive me while I geek out a little bit here. Building this has been a ton of fun, and I’d like to share some of the things I’ve learned while building this.

TBD

Categories
Hardcover

Hardcover Report for April 2024

Hi book friends!

My wife and I have a tradition every April. We peak out from our apartment that we’ve holed up in for the winter and finally start to spend more time outside. One of my favorite things to do is to head over to the Utah Capital building and wander through the cherry blossoms – and usually bring a book and a picnic to enjoy hanami.

However you enjoy your spring (or fall if you’re south of the equator), I hope you get a chance to find some nature, take a deep breath of fresh air and slow down some.

That’s advice I’m hoping to follow this month! We’re very excited to be traveling to Seoul, South Korea for two whole weeks (!). We initially planned this trip for March 2020, which obviously didn’t happen. 😅

We’ve never been to Korea before, but I’m excited to explore somewhere new and eat everything I can. We’ve scheduled a few things: historical sites, night market food tours, a visit to the DMZ and a folklore hike to hear more history. We’re staying in the Hongdae area, which is close to everything. If you have any recommendations for Seoul, please let me know!

Sakura blossoms in Ueno Park in Tokyo, one of my favorite photos I’ve ever taken.

What’s New on Hardcover

March flew by! We continued focusing on bugs, UI Fixes and time vampires and also some Librarian Tools and processes.

👬 New Hardcover Team Members

We onboarded two new team members: Cole and Luca who have already made notable contributions to the app and helped fix some annoying bugs.

✍️ Edit Authors & Series Pages

Librarians can now edit authors and series finally! This is exciting – as not authors and series can start seeing more love from the community – including custom avatars for authors.

We’re also tracking author gender and if they are BIPOC and LGBTQ+. In the future this will allow us to create stats and even set goals based on this. (ex: Read 50 books by women authors).

🔴 Hardcover Live

Earlier this year we launched the new Hardcover Live, our weekly live show where we build Hardcover in public.

In March we recorded and released 4 more episodes, which can be watched on YouTube, or downloaded through your podcast player of choice.

A big focus this month has been finalizing the designs for the new list page updates (more on that in What’s Next).

What’s Next on Hardcover?

April will be a bit more of a quiet month. I’ll be traveling the first half of the month and not bringing my laptop for once (!). Ste, Jeff, Cole & Luca will be holding down the fort in the meantime and working on a few exciting new updates that are already in the works.

Code Reorganization

“Wait, I thought you said exciting.” 😂

Ok, it’s not a flashy change, but we’re reorganizing a bunch of the Next.js app to adhere to a team standard which we’re basing on Atomic Design (with a few changes). Much of that will happen when we work on a feature and update it, rather than just updating to update.

We’ve started planning out a list of things we want to complete before making the app open source, and this is one of them. Having a clear coding standard and team practices in place will move us one step closer to accepting community contributions.

Your Dashboard

The top polled new item for us to work on from the State of Hardcover Survey was a dashboard. We’ve done some initial designs for this and have a plan in place for it.

The plan right now is to create a customizable dashboard where you can add and remove widgets – both ones we’ve created and ones that the community can create (eventually).

An early prototype of the dashboard.

Say you want to see what books you’re currently reading, your progress towards your goal, some upcoming book releases by authors you’ve read, what books your friends are reading and more. You could pick and choose those widgets and resize them however you want.

We’re also hoping to create some librarian-specific widgets for the dashboard that can help highlight missing book data – which will help all around.

Updated Navigation

Can you tell our navigation structure was created by a developer and not a designer. 😅 It works, but it’s not the best.

Ste’s taken on the task of updating our navigation, and is already almost done! It’ll be smoother than the current setup, while giving us an area to add “Lab Experiments” – projects we’re still working on but want to share.

New navigation prototype.

Letterbooks

Letterbooks are the new lists we’re planning to use across Hardcover to replace Airlists. Two years ago we released Airlists – which we built after a bunch of interviews with readers.

The hope was to build on them and add more functionality. But in reality the user experience of them has never felt right. It’s mostly worked, but it’s not smooth like butter – which is what we’re going for.

Letterbooks are inspired by Letterboxd’s lists. After two more years of using them we have a LOT more of an idea of how people are using them and the gaps in it today.

We say lists, but what we really mean is any list of books. That could be a list, your Want to Read list, the list of books published by an author, the list of books in a series, the list of books read towards a goal, trending books, book recommendations and more. Whenever you see a list of books, we want you to have the same options on how to sort, filter and view those books.

Here’s a sneak peak at some of the functionality we’re building into Letterbooks:

  • Quick access to sorting, with options for Match Percentage, Date read, rating, and various book data.
  • A bunch of filters, all hidden away in a drawer (on mobile) or in a sidebar (on desktop). This should make it easier for power users to filter for just what they want (ex: An unread Fantasy book, released since 2020 with a Match Score > 80 by a woman author).
  • Bulk edit mode will allow selecting multiple books at once and performing an action on them all. (ex: mark as read, set rating, update tags, etc).
  • These will all be fully shareable. If you want to filter and sort a page then share it, they’ll see the same books you see.
  • We’re keeping Card, Shelf and Table views and making them easier to use.

There are still a bunch of things to figure out for this, but it’s coming along nicely! Seeing this same setup used on your books by status already looks amazing with Shelf view.

We’ve made the decision to use normalized book cover sizes for Shelf view. This is a change from the current Shelf view which maintains the proportions of each cover. We felt like in this view it ended up being more important to have consistency. If you click over to the book you’ll see the cover in it’s original proportions.

Behind the Scenes at Hardcover

I’m writing this a few days before the end of the month, so I won’t be updating our numbers officially until I get back from vacation.

Our paid subscribers increased from 86 up to 93 this month – which is headed in the right direction! Thanks to everyone who helps us make Hardcover better – whether that’s by becoming a Supporter, a librarian, providing feedback or using the site.

Featured Prompt for April 2024

One genre I wasn’t even aware of until recently is cozy fantasy. Unlike other fantasy flavors, cozy fantasy leans into the smiles and enjoyment of the worlds they live. Think less Game of Thrones and more Shrek.

This months Feature Prompt comes from Jazzy:

What’s your favorite cozy fantasy?

Your favorite cozy fantasy, low stakes story that made you feel content or warm and fuzzy.

Whether you’re on the lookout good cozy fantasy read or want to share your own, check out this months prompt.

March’s Prompt

Last months features prompt was What are your favorite book recommendations for new readers?

The top book so far is Mistborn by Brandon Sanderson – the first book in The Mistborn Trilogy (and Saga) series. Harry Potter, Redwall and Ender’s Game have all received a number of votes as well.

What’s Popular on Hardcover?

Here’s a look at what was most read in the last month, and what readers are most looking forward to.

Most Read Books for March 2024

We recently added a Trending Last Month page to Hardcover which if you look at today should be about the same as this list. It’s a snapshot of what people marked as read the most in the last 30 days.

  1. Iron Widow By Xiran Jay Zhao
  2. Fourth Wing By Rebecca Yarros
  3. Bookshops & Bonedust By Travis Baldree
  4. Iron Flame By Rebecca Yarros
  5. Dune By Frank Herbert

Iron Widow was March’s Pick for the Sword and Laser Podcast – leading this 2021 release to jump to the top. It was helped along with some drama due to the Hugo Awards. S&L’s April pick is Cordelia’s Honor, the recommended first book to read in the Vorkosigan saga.

Fourth Wing & Iron Flame continued to stay in the top as more readers find it after it swept many best of 2023 lists (including ours).

I’m looking forward to listening to the audiobook of Bookshops & Bonedust. The author, Travis Baldree has 341 audiobook narrator credits (!), and the other book in the series (Legends & Lattes) was a great cozy fantasy read.

Most Saved Books To Be Released in April 2024

Last months most anticipated books were thrillers and mysteries. This month we go back to fantasy and romance – two of the most popular genres on Hardcover.

Leigh Bardugo follows up her popular series (Six of Crows, Shadow and Bone, Ninth House) with a new standalone work (or will it be a series?). With 52 readers waiting for it’s release, it’s clearly the most anticipated book of April on Hardcover.

A wonderful, transporting ride through a moment in history, where you can see the height of Spanish power but also sense the rot underneath. I really enjoyed it, it definitely made me think, and, of course, it’s deeply romantic.

―Review of “The Familiar” by Katherine Arden, author of The Warm Hands of Ghosts

Join us on Discord

The Hardcover Community isn’t just on the website – we’re also on Discord! If you’re not an expert in Discord, don’t worry – neither are we.

Join the over 500 of us to chat about books, hear about product updates, and be a part of the community.

Join the Hardcover Discord

Want to Support Hardcover?

Being a fledgling startup we can use all the help we can get! Whether that’s becoming a Supporter, sharing Hardcover with a friend, or just following along.

We appreciate you for reading and hope you have an amazing month. Talk to you soon. ♥️

Categories
Canonical

Hardcover Report for March 2024

Hi book friends!

It’s March already and it feels like this year is flying by. I grew up living in Florida, where seasons are more of an idea than a reality. Now that I’m living in a place with actual seasons (Salt Lake City, UT), I can’t wait for spring to be here!

There’s a lovely park near our apartment that’s perfect for reading. We can bring a book and a blanket, find a spot under a tree and enjoy the day while getting some sun. That (and hiking) are what I’m looking forward to this spring.

February was a busy month for me personally. Being a techno-optimist and an avid Apple user, I picked an Apple Vision Pro when it was released. While I don’t think most people will have a use for something like this today, it does have some strengths other devices don’t. I have enjoyed how much it can help me focus when I need to get something done – which for me has been watching videos learning iOS and Swift development (more on that later).

The rest of this month was filled with a combination of being sick and my wife being sick with Valentines Day and our 18-year anniversary somewhere between. ♥️

One of the fun things we did this month was to go to a Broadway Rave. Imagine a few hundred musical theater nerds – many dressed up – all singing and dancing to song after song from everything from Hamilton and Dear Evan Hanson, to Little Shop of Horrors and Hairspray. I’d highly recommend it if you’re into musical theater.

What’s New On Hardcover?

The focus this month has been bugs, UI Fixes and time vampires. We’ve been focusing on consistency, and having a great experience on Hardcover – while also working to fix things that divide our time.

It’s immensely satisfying to look back at the end of a day and see 6+ bugs fixed. Quite a few days this month have looked like this.

We’re getting closer to having all known bugs handled. We’re down to 25 open bugs, with only a one with high priority (the iOS app sometimes needing to be restarted).

☑️ The State of Hardcover Survey

Last month we sent out the 2024 State of Hardcover Survey. We do this each year to better understand the problems, wants and needs of everyone using Hardcover. This is just one input amongst many, but it’s a chance for everyone to have their voice heard.

We recently published a new blog post, 2024 State of Hardcover Survey Results, which goes over what we learned this year.

The results have been exciting to explore. You can read the blog for a full breakdown, but I’ll share a few highlights here:

  • Hardcover readers read more Ebooks than Physical or Audiobooks.
  • Bugs, UI issues and a desire for more community features were mentioned the most in the write-in section.
  • The top 5 new features that drew the most votes were:
    • 1. A dashboard that shows an overview (ex: Currently reading, your goals, current stats, friends activity)
    • 2. Find better book recommendations (ex: genre specific recommendations, similar to a book)
    • 3. Be notified of upcoming book releases (ex: Notifications for the books on your Want to Read list, or next in Series)
    • 4. Advanced stats and graphs (ex: author demographics, list stats, more graphs)
    • 5. Smart lists based on saved filters (ex: Status: Want to Read + Genre: Fantasy)

We’ve explored the Dashboard idea some, which you might’ve seen on Discord. If you’re interested in a Dashboard, I’d love to get your take on it what you’d most want. Please help us out with this 2-minute survey. It’s fast, I promise. 😂

👉 How would you use a Hardcover Dashboard? (2-minute survey) 👈

Once we have a bit more information about how people are thinking about this concept we’ll be more confident in creating a prototype. If you’d prefer to have a chat with us about Dashboards, please check out Ste’s Calendar and schedule some time to chat!

💬 Linked Discord Roles

We’re rolling out a new way of linking your Hardcover account to your Discord account. Previously, Ste or I would need to manually add the Supporter or Librarian roles on Discord for you to access those channels. Anything that requires us to do something for every member doesn’t scale well. 😅

Just today we rolled out a new way of adding these roles using Discord’s Linked Roles feature. It only takes a few seconds and after that your Discord account will be linked to Hardcover.

👉 How to Link Hardcover Roles With Discord

We have three roles that can be added in this way today: supporters, librarians and members.

Supporters are anyone who’s currently a supporter – whether paid, or earned through referrals.

Librarians are anyone who’s applied and been accepted into the Shush (our collective noun for a group of librarians) 🤫.

Members are anyone who has completed onboarding. This role is one anyone can add to get access to a verified members channel.

There’s still a lot we’d like to do on Discord, but none of us on the team are what we’d call experts. If you consider yourself a Discord Administrator, I’d be very interested in talking to you! If you’d be open to a chat, please let me know (adam at hardcover.app), or schedule a time to chat.

🔴 Hardcover Live

Earlier this year we launched the new Hardcover Live, our weekly live show where we build Hardcover in public.

In February we released 3 more episodes, which can be watched on YouTube, or downloaded through your podcast player of choice.

The reading journal idea is one we’ve been thinking a lot about and it’s still on our shortlist of larger-scale projects. However there are some easier wins we learned about from the survey that we’d like to work on first while we continue to design the Journal/Notes/Quotes concept.

If you’d like to tune in live, we record every Wednesday at 12pm PST on YouTube Live, Twitch and with chat on Riverside.

🧙 Characters on Hardcover

We’re still rolling this one out, but we’ve started including characters on the book page!

These will be an important part of discussions, reading journals and quotes, so having them available in our database will enable a bunch down the line.

If a book has characters, you’ll see them on the book page, the a book characters page, and the standalone page for each character.

We’re pulling these from OpenLibrary right now and will only be shown for books we’ve linked with them.

What’s Next on Hardcover?

There are three things I’m hoping to focus on for March.

Clear out Remaining Bugs & Time Vampires

Working through the top issues readers have and the top things that are taking away from our time to work on new things is the top priority.

Create new Librarian Tools

We mentioned this last month, but I’m still working through the “Librarian Tools” part of this list, and have a few parts left before moving on:

  • Better reporting for Librarian changes
  • Librarian tools for managing user-added books
  • Fiction vs Nonfiction indicators
  • Create new authors
  • Edit Author, Series Character pages

User Interface Improvements and List Updates

Ste has set out to do a bunch of user interface normalization and improvements, and I’m excited to completely revamp the way our lists work.

When I say lists, I mean any group of books on Hardcover. Trending books, books by an author, books in a series, books in a specific status for you (want to read, read), books in a prompt, books in a goal, and of course books in a list.

We’re working to normalize how these lists behave with consistent options. For example: being able to filter any list by a book genre, by your status for the books, or even sort a list by match percentage.

We learned a lot when building the lists we have today, but they’re not hitting the mark quite yet. My hope with this is to simplify them while focusing on the most widely used and wanted features.

We’re also kicking off a native iOS app! More on that later. 😉

Behind the Scenes at Hardcover

January was our highest revenue month yet! That’s the third month in a row I’ve said that. 🥳 Here’s how the numbers broke down this month.

  • February Revenue: $588
  • February Expenses: -$2,028
  • February Profit: -$1,440

Our subscribers increased from 72 to 86 this month – that’s one every other day! At that rate we’ll be profitable before summertime. Let’s see if that holds out. ☀️😎

We had a few yearly expenses come up this month including Termly and BugSnag, which we use for error tracking. Every time you see “Something went wrong” message, or see a red error toast message, BugSnag tracks it and sends me an email. It’s also been helpful in seeing improvements to the number of bugs as we’ve fixed some of the most common issues.

I’ve updated our Income & Expenses page with February’s numbers too. Even though we made less revenue this month, we have more members joining yearly – which is exciting. 🥳

Featured Prompt for March 2024

This months prompt is a fun one. If you’re using Hardcover, chances are you’re an early adopter of new technologies. You don’t find and use an indie project on accident.

With that in mind, we want to know what books you recommend to new readers? That’s the focus of this months prompt.

What are your favorite book recommendations for new readers?

New readers often struggle to find books that they connect with. It often takes exploring different genres and writing styles from a many points of views to understand your own tastes. If you’ve managed to find that sweet spot, what books would have helped you get there faster? What books do you wish you knew about when you started reading?

Prompt description

Whether you’re on the lookout good recommendations or want to share your own, check out this months prompt.

Februray’s Prompt

Last months features prompt was What are your favorite books by black authors?

The top book so far is The Fifth Season by N.K. Jemisin the first book in The Broken Earth series. Trevor Noah’s Born A Crime: Stories from a South African Childhood is in second place and is a hilarious read.

What’s Popular on Hardcover?

Here’s a look at what was most read in the last month, and what readers are most looking forward to.

Most Read Books for February 2024

Side note: I’ve previously used a rolling 3-month period for most read books. Since we’ve grown and more people have started using Hardcover we’re now able to track this over a single month!

So, here are the books that the most people marked as read with an end date in February 2024.

  1. The Shadow of the Gods (#1 in Bloodsworn Saga) by John Gwynne
  2. House of Flame and Shadow (#3 of 3 in Crescent City) by Sarah J. Maas
  3. Fourth Wing (#1 of 2 in The Empyrean) by Rebecca Yarros
  4. Bookshops & Bonedust (Legends & Lattes prequel) by Travis Baldree
  5. All Systems Red (#1 of 7 in The Murderbot Diaries) by Martha Wells

The Shadow of the Gods was the book of the month for the Sword and Laser Podcast for Februray, launching it to the top spot. If you’d like to give it a read, I’d encourage you to check out the last few episodes of S&L where they discuss it.

In March S&L are reading Iron Widow by Xiran Jay Zhao – who has an hilarious, informative and fun TikTok. Iron Widow has been on my list for years and I’m excited to finally read alongside them as well.

If you’ve been to a bookstore in the past month, you probably have seen a table full of House of Flame and Shadow (or three, as was the case at the B&N near me). After the massive success of A Court of Thorns and Roses, House of Flame and Shadow, was the most anticipated book of the year in the 2023 Year in Books. Many of you have jumped at the new release and have finished it in a hurry. (I’m on book 4 of ACOTAR, but I might check out this series soon).

Most Saved Books To Be Released in March 2024

  1. How to Solve Your Own Murder by Kristen Perrin
  2. The Poisons We Drink by Bethany Baptiste
  3. Murder Road by Simone St. James
  4. Baby X by Kira Peikoff
  5. The Great Divide by Cristina Henríquez

Murder, poison, murder… are you’ll all right?

But really, who can resist a good mystery? How to Solve Your Own Murder and Murder Road both seem like investigative, Agatha-Christie inspired tales, while The Poisons We Drink edges into Fantasy with in a world of humans and witchers.

Join us on Discord

The Hardcover Community isn’t just on the website – we’re also on Discord! If you’re not an expert in Discord, don’t worry – neither are we.

Join the over 500 of us to chat about books, hear about product updates, and be a part of the community.

Join the Hardcover Discord

Want to Support Hardcover?

Being a fledgling startup we can use all the help we can get! Whether that’s becoming a Supporter, sharing Hardcover with a friend, or just following along.

We appreciate you for reading and hope you have an amazing March. Talk to you soon. ♥️

Categories
Canonical Featured

2024 State of Hardcover Survey Results

One of my favorite parts of Hardcover is hearing feedback and formulating a plan from it. All feedback – no matter how difficult to hear – is helpful if it’s coming from a good place. Our 2024 State of Hardcover Survey recently wrapped up and we’ve spent the last week or two analyzing the results for themes.

I’m grateful for the 88 members (19 of which are supporters) who completed the survey! It’s thanks to feedback like this that we’re able to plan a course ahead that takes into account what people want.

I’m excited to share some of the results and some takeways on what we’re hoping to work on next!

Who Filled Out the Survey?

We had 88 responses (19 supporters, 69 free) complete the survey.

Of those the main reason why readers joined Hardcover was they were looking for an alternative to Goodreads (no surprise there), they’re looking for a way to track what they read and the user interface drew them in (🙌).

More than half the respondants (53) use Hardcover at least once a week. That fits what what we’ve heard from readers. Readers tend to visit us when the hear about a book, start a book, finish a book or make progress (although our feature set for the last one is somewhat limited).

When it comes time to upgrade to a Supporter, most readers do it not because of features we’ve built, but to help Hardcover become what it could be. This matches what I expected. We have somewhat minimal features in our Supporter Plan today. We’ve opted to give most features away for free – both because GR/SG do, and because, well, I want people to be happy. ♥️ In the future we might create more paid-specific features, but so far that hasn’t been our primary focus – which shows in the survey results.

The main reasons why people haven’t upgraded are there isn’t a compelling feature that’s drawing them to do so, they’re still too new to the site or they just don’t have the cash/capacity/budget for year another subscription.

Hardcover readers tend to read ebooks and physical books as their primary format more so than audiobooks. I was surprised to see audiobooks this far down.

Kindle remained the device of choice, with other e-readers far below.

When it comes to reading, most people spend a around an hour a day – give or take. I think next time I’ll switch this question to be day-based rather than week-based.

Reading Problems

One question we asked was “How often have you run into these reading-related problems and not had a solution you were happy with?

Looking back this wasn’t the best framing of this question. I think the results are still interesting!

If the results of this were “tracking what you” as a top result, that would mean we’d failed at our biggest focus. Luckily it wasn’t. 😅

The top two results were the only ones that had a positive weighted rating (which means that more people had the problem than not).

  • 1. Finding good personalized recommendations (42 points)
  • 2. Deciding on which next book to read (24 points)

The way people find recommendations is split across many factors. There’s no shortage of places to find books recommendations, but figuring out how those recommendations relate back to you specifically is tough! That’s one reason why the most important factor readers use when deciding what to read are friends suggestions, ratings and reviews.

This leads me to think how we can better leverage friends suggestions on Hardcover. 🤔

What Should We Work on Next?

This was the big question we wanted help with. We hear what people want from Hardcover across many different places – Discord, interviews, our public Feature Request board, and us working on it with our own goals (helping readers find life-changing books).

There were two questions from the survey that helped with this the most.

We listed 17 different features we were curious about and readers would choose their three top ones. The top 5 from that included the following:

  1. A dashboard that shows an overview (ex: Currently reading, your goals, current stats, friends activity)
  2. Find better book recommendations (ex: genre specific recommendations, similar to a book)
  3. Be notified of upcoming book releases (ex: Notifications for the books on your Want to Read list, or next in Series)
  4. Advanced stats and graphs (ex: author demographics, list stats, more graphs)
  5. Smart lists based on saved filters (ex: Status: Want to Read + Genre: Fantasy)

Here are the full results if you’re curious.

Ste suggested the Dashboard concept, and we’ve been talking about it some on Discord as an alternative to the Feed. Is there something you’d like to see on a Dashboard, let us know in this 3 question survey!

Book recommendations, release notifications, advanced stats and smart lists are all features it makes sense for us to do at some point. This helped us prioritize the order we work on these.

New features are one part of this. We also asked: If you could ask us create or change one thing about Hardcover, what would it be?

Since this question was free response, it’s less useful for figuring out next features, and more for understanding problems today.

  • 25% mentioned wanting user interface improvements
  • 13% mentioned bugs and issues
  • 10% mentioned wanting more community-focused featured

I heard you on these. Since the survey went out, we’ve focused on bugs. We’ve seen a large dropoff of bugs since then, but we still have a ways to go.

Ste is taking the lead some user interface updates and normalization. We want the entire site to have a consistent look and feel.

“Improving UI” is something that comes with time. Often we hear the same questions and feedback over and over – which shines a bright light on areas in need of attention. Some of these include the profile page, showing current progress, changing the start page (to a dashboard?), and using the book page style elsewhere (author page, lists, profile, etc).

So, What’s Next?

Right now we’re focused on fixing bugs, normalizing the user interface and improving librarian tools to make it easier to make changes and know what books are missing data. We didn’t specifically ask about librarian features in the survey, but creating those tools allows us to distribute work across a team of amazing librarians – rather than relying on Jeff and I to handle very data issue.

One thing that’s bug and ui related: creating a native iOS app! This isn’t a short term project, but something I’d love to do. I’ve been learning Swift development lately, and we’ve started work on this. This won’t be our top priority since we have an iOS app, but we want to make progress on it. This will let us completely reimagine the app to be much more Letterbox-like for the app, while the website can be it’s own thing.

We’re planning to create some kind of dashboard as an alternative to the feed. This will be a relatively small project, but I’m excited to create something that’s an alternative to the feed. Help us prioritize what to show on it!

Beyond that we want to focus much more on book discovery. We’re in a unique position where we can leverage your social graph and your reading history to suggest books, but also provide so many other ways to explore and stumble on new books.

I imagine the coziest bookstore I can imagine. You can’t go a few steps without seeing a card recommending a book on a shelf, seeing an inviting collection of covers, or being invited to check out a new story.

Creating that warm feeling, while helping you find life-changing books is our north star.

Categories
Uncategorized

Hardcover Report for February 2024

Hi book friends!

I hope your 2024 is off to a good start. Getting back into a routine after taking a break can be rough. Momentum builds more momentum, and January can feel like a snowball at the top of a mountain.

I tend to put more pressure on myself during the beginning of the year. I want to start the year off on the right track, and that means getting outside of my comfort zone, adjusting or creating new routines and trying to do better.

When I feel that way I often end up journaling to understand why. I’ll ask myself questions and just start writing. Every single time I’ve done this I’ve felt better.

However you checkin with yourself, I hope you’re having a great start to your year. 🤗

On the personal side, January was a busy one. I’m fortunate to live in Salt Lake City a few blocks away from a Sundance Film Festival venue. Each year my wife and I volunteer (and try to watch as many movies as possible).

The Q&A after Your Monster was great – with an all woman directing and producing team

My two favorite movies this year were It’s What’s Inside and Your Monster.

It’s What’s Inside is a sexy thriller about a group of friends who meetup years after college the night before one of them is set to be married. A friend they haven’t seen in years shows up with a mysterious suitcase. I’d encourage you not to read anything else about it. It was acquired by Netflix and should be available later this year.

Your Monster is the horror musical romantic comedy I didn’t know I needed. The Letterboxd description does a better job than I could: After her life falls apart, soft-spoken actress Laura Franco finds her voice again when she meets a terrifying, yet weirdly charming, monster living in her closet. I laughed more for this than anything else I’ve seen in a while. No word yet on distribution, but the producers want it to be shown in theaters. 🤞

What’s New On Hardcover?

Usually January feels like a month where I go all out after a new year – only to exhaust myself and find a more balanced schedule going forward. This year the combination of working throughout December and taking a week break to go to Sundance meant that January felt a lot more like a typical December for me.

In other words, I’m feeling refreshed and ready to tackle whatever’s next! 💪 Here’s a look at last month and next month.

☑️ The State of Hardcover Survey

At least once a year we conduct a survey of our readers to help us understand what’s working, what’s not and what we could be doing differently. We take in a bunch of feedback from the community already. Discord chats, interviews with readers, our public Feature Request board, usage data, bug data and more all help us decide where to focus our attention.

This years State of Hardcover survey will help us sort through all of this feedback and decide what to prioritize this year.

The survey should take about 10 minutes and only contains a few free response questions.

👉 Fill out the State of Hardcover 2024 Survey 👈

As a thank you for completing this survey, we’ll randomly select 10 people to send a Hardcover Bookmark and Sticker pack as a thank you. 🥳

Sticker and bookmark pack
We’re ordering ones with our new logo, but they’ll look something like this.

Last year our survey was sent out to 1,000 members and we received about 30 responses. This year we’re sending the survey out to 6,000 members (!) AND doing a giveaway. I’m entirely too excited to see the results.

We’ll publish the takeaways from the survey on our blog sometime in February, and also re-share the results in next months Hardcover Report.

📆 The 2023 Year in Books

In case you missed it, we released The Hardcover 2023 Year in Books at the end December. We think this is a great way to find books you might have missed last year. To see what was popular last year on Hardcover, check it out.

🔴 Hardcover Live

One thing we haven’t cracked yet is how to leverage social media to drive a lot of traffic. It’s made me respect successful social media strategists that much more. 😂

Rather than continuing to shout into the social media void (and stay off X altogether), we’ve shifted our efforts to Hardcover Live, our weekly live show where we build Hardcover in public.

In January we recorded five episodes, and even turned those recordings into a podcast! The podcast version contains the same content as the videos, so choose whatever format works for your schedule.

Each episode is available on YouTube, Apple Podcasts, Spotify Podcasts and more – just search for “Hardcover Live”.

If you’d like to tune in live, we record every Wednesday at 12pm PST on YouTube Live, Twitch and with chat on Riverside.

If you’re an author, a book influencer or are creating something cool in the book space and would be interested in being a guest, please reach out to me (adam at hardcover.app).

📆 Dates Read Improvement

Most readers on Hardcover track the dates they start and finish their books. We’ve improved this process with a date picker that’s accessible from the Book Button and from the Book Page.

Unlike date pickers on hotel websites, ours needs to allow for a start date, an end date or both. Perhaps you know when you finished a book but not when you started it. This date picker takes all of that into account and allows for setting either or both.

You can now set dates read from the Book Button, the Book Page and to the Book Review Page – all situations where you might want to set your dates read.

📚 Librarian Improvements

If you ever wonder why it’s so difficult to knock Goodreads off it’s pedestal, you might immediately go to the size of the network, or their overwhelming dominance in search results. Another major factor: book data. And for good book data you need a combination of great automated processes and a team of librarians.

This month we’ve done a few things that make being a Librarian easier – whether you’re officially one or you’re a casual Hardcover user and want to help out.

📘 We added the ability to create new books manually. Before we only supported adding books with an ISBNs or a Goodreads ID. Now you can add any book you want. Added books won’t show up in search until a Librarian approves them, but you can use them immediately.

➕ Similarly, we added the ability to add new editions to a book. This was a huge gap that made it difficult to get the exact edition you’ve read.

📢 Book reviews now have a sponsored field that indicates if the reader was compensated in some way. This could be an Advanced Review Copy (ARC) or a paid promotion.

🗃️ We’ve added the ASIN field to editions. This is helpful for importers as well, since sometimes we might only have the ASIN and want to match it with a book in our system.

🧙‍♀️ We’ve made it easier to apply as a librarian now with this nifty form Ste created. If you’re editing a book and you don’t have access, you’ll see a link to apply. We accept most applicants that have a bunch of books in their library and look like they have used Hardcover long enough to understand how it works.

🔐 If you mark a book, author or series as a duplicate, or change the book for an edition, we consider that a destructive action that requires additional access. Previously, only Jeff and I could approve those changes. This month we added a concept of an access level to all librarians. If the impact of your change (how big an effect the change will have) is less than your access level, we make your change immediately. This allows Librarians to have more control, while requiring less work from Jeff & I.

What’s Next on Hardcover?

This months focus has been on Librarian changes. There are still a few things on that list to tackle before jumping into anything else new.

Hardcover 2024 Roadmap

Last month we shared our 2024 Roadmap which shows the first few areas we’re working on: Librarian Tools, Lists and Mobile Improvements.

I’m still working through the “Librarian Tools” part of this list, and have a few parts left before moving on:

  • Better reporting for Librarian changes
  • Librarian tools for managing user-added books
  • Fiction vs Nonfiction indicators
  • Edit Author and Series pages
  • Ability to create and select characters in a book!

This last one is the most exciting to me. We’ve been chatting about in the #development channel on Discord to help make sure we’re solving this in a way that doesn’t leak spoilers. Similar to how we hide genres, moods or content warnings that can be spoilers, we plan to hide characters whose appearance could be a spoiler as well.

Why characters? Well, there’s a lot we want to do down the line that’ll require it. That includes quotes with attribution, a reading journal with entries that reference characters, being able to see a wikipedia-like article about each character, allowing readers to upload their own costumes or fan art of characters or even to have a discussion board for a character.

Which of these we work on is to be determined, but having these characters is the first step. Great characters make great books, and we want to make that a part of Hardcover.

Discord Roles Sync

Currently the only way to get Supporter or Librarian flair on Discord is to message me or post about it in a channel and wait for us to respond. We’re moving away from that to use Discords ability to get data from Hardcover and set those automatically. I’ve been playing around with this and it’s pretty slick. It could also pull in your stats to show in your Discord profile, for example: Books Read or Books read this year.

Bugs and other projects

We’ll also continue fixing bugs and work on other features. Everything else depends on the results of The State of Hardcover 2024 Survey.

Behind the Scenes at Hardcover

January was our highest revenue month yet! That’s the third month in a row I’ve said that. 🥳 Here’s how the numbers broke down this month.

  • January Revenue: $658
  • January Expenses: -$1,420
  • January Profit: -$762
We’re on our way to profitability! 😂

We had a few yearly expenses come in this month including Riverside, which we use for recording Hardcover Live and is an amazing service. If you’re running a podcast or recording video from multiple people and want something quick and easy I’d recommend them. (side note: this is an affiliate link, but a service we pay for).

Our biggest expenses this month were Heroku ($419, Rails, Redis, Database), Riverside ($288) and Hasura ($114, API). Loops also jumped from $50 to $100 as our email list grew from the 5k to the 10k tier.

I’ve updated our Income & Expenses page with January’s numbers. We have another $6.4k in the bank right now, which may be enough to reach profitability without me adding more of my own funds (which I’d do in a heartbeat).

We started to see our registrations per day start to tick upwards ever since our second Product Hunt launch on September 30th. In August we were seeing 5-10 new members a day. Now we’re up to 30 a day this year. It’s incredible how a few months can change things! Maybe in a year we’ll be welcoming hundreds of new readers every day?

I also added a new Press page for us to keep track of any and all mentions of Hardcover by blogs, press, podcasts and the media.

Featured Prompt for January 2024

February is Black History Month – an opportunity to observe and reflect on the black experience now and in the past. It’s a great chance to pick up a book by a black author. This months prompt already has a number of community favorites:

What are your favorite books by black authors?

The publishing industry has struggled to embrace new voices. Many amazing authors have managed to get their voices out–overcoming all obstacles. What books stand out to you as your favorites by black author?

Prompt description

Whether you’re on the lookout for a new book by a black author or want to share your own, check out this months prompt.

January’s Prompt

Last months features prompt was “Need some shorter page turners to finish out my 52 book goal!

The top book so far is All Systems Red by Martha Wells, the first book in The Murderbot Diaries series following a heartless killing machine who just wants to be left alone to watch TV Dramas (honestly, same). And speaking of The Murderbot Diaries series…

What’s Popular on Hardcover?

Here’s a look at what was most read in the last month, and what readers are more looking forward to.

Most Read Books for January 2024

  1. System Collapse (#7 of 7 in The Murderbot Diaries) by Martha Wells
  2. Fourth Wing (#1 of 2 in The Empyrean) by Rebecca Yarros
  3. Iron Flame (#2 of 2 in The Empyrean) by Rebecca Yarros
  4. Kings of the Wyld (#1 of 2 in The Band) by Nicholas Eames
  5. Bookshops & Bonedust (Legends & Lattes prequel) by Travis Baldree

System Collapse finally toppled Fourth Wing this month for our top spot. I, for one, can’t wait for the TV series staring and produced by Alexander Skarsgård (True Blood, Infinity Pool) on Apple TV Plus.

Kings of the Wyld came out of nowhere and showed up in our top 5. Although released in 2017, a bunch of people decided to read it this month. It was the December Book of the Month for the Sword and Laser Podcast, and they even mentioned Hardcover in episode #480 (and #481)! That brought a bunch of new readers over (thanks Tom and Veronica!). If you’re looking for a fun book related podcast, give them a listen!

Most Saved Books To Be Released in February 2024

  1. The Tainted Cup by Robert Jackson Bennett
  2. Bride by Ali Hazelwood
  3. The Book of Love by Kelly Link
  4. What Feasts at Night by T. Kingfisher
  5. Red Side Story by Jasper Fforde

The Tainted Cup has 41 readers interested – above Bride‘s 25 saves. Robert Jackson Bennett’s previous books include Foundryside and City of Stairs – the later is included in our Science Fiction & Fantasy Book Discovery Flowchart of the 2010s.

Ali Hazelwood continues to be a loved author on Hardcover after Love, Theoretically was featured in the 2023 Year in Books as the #1 most read book from June 2023.

Join us on Discord

The Hardcover Community isn’t just on the website – we’re also on Discord! If you’re not an expert in Discord, don’t worry – neither are we.

Join the over 500 of us to chat about books, hear about product updates, and be a part of the community.

Join the Hardcover Discord

Want to Support Hardcover?

Being a fledgling startup we can use all the help we can get! Whether that’s becoming a Supporter, sharing Hardcover with a friend, or just following along.

We appreciate you for reading and hope you have an amazing February. Talk to you soon. ♥️

Categories
Canonical Uncategorized

How we Increased Search Traffic by 20x in 4 Months with the Next.js App Router

Get ready for a highly technical blog post. 😂 If you’re not here for code, you might want to check out our Trending Books page, or The 2023 Year in Books.

This post will focus on the technical decisions we’ve made on Hardcover over the last year – which are starting to pay huge dividends! The traffic from Google speaks for itself.

Google Search Engine Traffic over the last 16 months

The blue line is clicks from search traffic, while the purple line is the number of times Hardcover was shown to user (with the left axis being clicks).

When we launched Hardcover in 2021, it was the first React.js (and Next.js) application I’d ever worked on. I’ve shipped a ton of code in jQuery, Backbone.js, Ember.js, Vue.js, and Angular.js but this was my first time working in React. I made all the typical mistakes that new React developers make many of which I’ll go over in this post.

At first these mistakes didn’t prevent Google from indexing and surfacing Hardcover in search results. However, the more we added, the slower the experience got. I wasn’t aware of dynamic component loading (using lazy or dynamic). That meant that when you loaded any page on Hardcover you’d get a TON of code that wasn’t needed to render the page you were seeing.

The result of all of this additional code was that our Google Pagespeed took a nosedive. Performance and Best Practices were in the red, with scores of around 40 (out of 100).

In August we launched a major revamp of the entire site. I became more than a little obsessed with performance. When we finally launched on August 15, 2023, our Google Pagespeed was nearly perfect!

Google Pagespeed… soooo close to perfect!

For the homepage, the download size was reduced from 500k to 80k. That’s a lot less JavaScript to download, but also a lot less to run.

This update focused not just on UX, but on making Hardcover fast. I’m aiming for 100% PageSpeed on Google, no layout shift, and an instant initial page load with as much cached on CDNs close to the user as possible.

Why is this Important?

Speed plays a huge role in how well any site can do. Besides being a better experience for users, Google and other search engines weigh speed very heavily when deciding to rank your site.

Earlier this year we saw a troubling trend: our search clicks dropped significantly. It turns out that our PageSpeed index had declined due to some technical changes I (unknowingly) made combined with some changes to Google’s ranking algorithm.

Hardcover SEO traffic
Hardcover SEO traffic

How much speed plays into search engine results is a complex topic. In the Reddit discussion of this post, speeding up the site likely wasn’t the only thing to improve our search traffic. We also restructured some pages with new data which could have increased content and structure. We’ve also continued to see more referring domains – which Google takes as a vote of confidence and helps out with search as well.

SEO is a complex topic that’s notoriously difficult to understand how any single cause translates into effect. It does seem like there’s a correlation between traffic and page size in both directions. In the months before the App Router update, I added more complexity and JavaScript to the site. In that time our search traffic went down – even as our referring domains went up. There are differing factors besides page speed here.

This correlation on the way down made me realize: maybe we need to pay more attention to our site speed. That started me on a quest: how fast can we get Hardcover to load?

Our Tech Stack: A Quick Overview

Before we get into the changes we’ve made for performance, you need a little context. Hardcover isn’t just a Next.js app. We’re a Next.js, Ruby on Rails, Hasura, Typesense, Sidekiq, Postgres, Loops, Google Cloud app. 😅

Our Next.js site is responsible for everything the user sees but almost none of the API. Basically it’s the view layer of this entire system.

OK, with that out of the way, here’s how we sped things up.

1. Render It All On the Server

When you request Hardcovers homepage (and increasingly more pages across the site) what you see is rendered entirely on the server by the Next.js 13 14 App Router.

That wasn’t always the case. Up until August of this year, we were using the Pages router – usually without any server props.

The initial idea was that the site would be 100% statically generated with all data coming from the API from the client. This would allow us to easily transition to mobile apps using React Native using this same setup.

Once we realized that Capacitor.js could wrap our website, that advantage became meaningless. We could just develop a website and wrap it with Capacitor. We released mobile apps on Android and iOS in March of 2023 and have focused on building a solid experience on both ever since.

Here’s what a typical page request looked like before our most recent update:

  1. User: Loads a page, say The Way of Kings.
  2. Hardcover: Sends the same HTML for the book page to the client.
  3. User: Requests their API token from the Hardcover API.
  4. User: Requests info about their current user (to show their avatar in navigation).
  5. User: Requests info about The Way of Kings.
  6. User: Requests info about their status for this book.

In this case the Next.js app isn’t doing much. The Book Page HTML/JS sent down to the user was the same for every page, then on the client side we’d make API requests to get the data to show. It worked, but it meant a bunch of API calls before the user could see anything.

If you load this page today when not logged in, you’ll see there are zero API requests. Everything you see is sent in the initial HTML by the server! Here’s the new flow for this.

  1. User: Loads a page, say The Way of Kings.
  2. Next.js: Processes this page in two parts
    • For the layout and wrapper of the page, Next.js determines if the user is logged in and shows a different header if they are.
      • The layout also includes the users API token (either a guest token, or tied to their user).
    • For this route, Next.js caches all network requests on this page for an hour, resulting in the same HTML for the book page to every request during that time.
  3. Users Browser: Browser reads the initial HTML (which may have their avatar if they’re logged in, otherwise a login link).
    • Guest: Nothing more to do! The initial HTML from the server has everything
    • Logged in: The returned HTML contains sections that only show up if logged in (your status for this book, friends activity, similar readers, match percentage, etc).

Since the book route is cached for an hour, it further speeds everything up. Currently this is cached using export const revalidate = 3600; for the route, however we’d like to fully cache the entire route.

Even though this page is generated on the server, it includes a number of client components using Islands Architecture (more on this later).

Now the end user needs 4 fewer API requests to render this page (!). It also means that Google and other search engines have 4 fewer points of failure.

What this helps with: Cumulative Layout Shift, Largest Contentful Paint, Avoid large layout shifts, Minimize main-thread work, Reduce JavaScript execution time, Avoid long main-thread tasks.

You might be asking: “But there’s dynamic data on this page! How can it be cached?” there’s a few solutions for that.

2. Fetch Server Side, Hydrate Client Side

If you’re logged into Hardcover, you’ll see your avatar in the top right of every page. Some of the navigation links are also dynamic based on your username (like /@adam, /@adam/books and /@adam/lists).

We could render this server side for logged in users and that would work. We could even do a full page reload ( window.location = window.location.href ) when people change their avatar or their username.

We initially were doing that, but there was a problem with Capacitor. If you set the window.location from Capacitor it wouldn’t reload the page, it would exit the app and open the current page in a web browser. That solution was out.

So how do we start the page with these links but also allow them to be changed and load them without a full page reload?

The solution came in the form of a new feature from the Apollo Client library, the library we use to fetch data, called useFragment. Solving this took me WEEKS of trial and error, but I’m happy with the solution.

Our solution starts in our layout file. Here’s what that template looks like. Notice the <CurrentUserLoader /> which is doing a lot of work.

app/layout.tsx

<html>
  <body>
    <Providers>
      <CurrentUserLoader />

      <Nav />
      {children}
      <Footer />

      <SharedPlaceholders />
      <BackgroundManager />
    </Providers>
  </body>
</html>Code language: HTML, XML (xml)

components/background/CurrentUserLoader.tsx

import { Suspense } from "react";
import { loadCurrentSession } from "queries/users/loadCurrentSession";
import CurrentUserClientLoader from "./CurrentUserClientLoader";

// Loads everything about the logged in user on the client side
export default async function CurrentUserLoader() {
  const { session, user } = await loadCurrentSession();

  return (
    <Suspense>
      <CurrentUserClientLoader session={session} user={user} />
    </Suspense>
  );
}
Code language: JavaScript (javascript)

Up to this point everything has happened entirely on the server.

This last file (CurrentUserLoader.tsx) has one responsibility: loading the current user and passing it to a client component. loadCurrentSession (not shown) will get the users info from their cookie and hits our GraphQL API to get all the data needed for the user.

This includes their username and avatar, but also their status on every book they’ve ever read. More on why we need that later.

This is passed into the CurrentUserClientLoader component. This is the bridge between server side and client side. This file does a lot.

components/background/CurrentUserClientLoader.tsx

"use client";

import { Suspense, lazy, useEffect, useRef } from "react";
import { useDispatch } from "react-redux";
import { currentUserActions } from "features/currentUser/currentUserSlice";
import { UserType } from "types";
import { HardcoverSession } from "app/(api)/api/auth/[...nextauth]/options";
import { bootstrapUserByUserId } from "queries/users/bootstrapUserById";
import { getClient } from "lib/apollo/client";

const NotificationsUpdater = lazy(() => import("./NotificationsUpdater"));
const CurrentUserClientManager = lazy(
  () => import("./CurrentUserClientManager")
);

// Loads everything about the logged in user on the client side
interface Props {
  session: HardcoverSession;
  user?: UserType;
}
export default function CurrentUserClientLoader({ session, user }: Props) {
  const initialized = useRef(false); // Prevents duplicate loading for some reason
  const loaded = useRef(false);
  const dispatch = useDispatch();

  // This will load all bootstrapped data into Apollo's fragment cache
  // Side note:
  //   I'd love to get rid of this and hand off the server cache
  //   to the client cache, but that's not currently possible.
  function loadFragmentCache() {
    getClient().writeQuery({
      query: bootstrapUserByUserId,
      data: { user },
      variables: {
        userId: user.id,
      },
    });
  }

  // Set the session and user in Redux
  useEffect(() => {
    if (!initialized?.current) {
      initialized.current = true;
      if (user) {
        loadFragmentCache();
      }

      dispatch(currentUserActions.setSession(session));
      dispatch(currentUserActions.setInitialUser(user as UserType));
      loaded.current = true;
    }
  }, []);

  if (!loaded) {
    return false;
  }

  return (
    <Suspense>
      <CurrentUserClientManager />
      <NotificationsUpdater />
    </Suspense>
  );
}
Code language: JavaScript (javascript)

In this file, we’ve handed over our data from the server to the client. This handled three important steps:

  • Load the data about the user into the Apollo Cache
  • Load the current user into Redux
  • Load a client component which will keep Apollo Cache and Redux in sync.

There’s a lot going on here, but those are the important bits. We defer as much of this as we can using Suspense so that the initial page load isn’t blocked and we can load more important JavaScript while this is running. It also means that the CurrentUserClientManager and NotificationsUpdater won’t be downloaded unless the user is logged in.

The last piece (code shown next) is the client component which will keep Redux in sync with Apollo’s cache. This means that when a user changes their username or avatar, we’ll update it here.

There are a bunch of places where a user makes changes to their user info. We considered trying to update it at each of those places. Having it here in one place makes it less likely we’ll miss one and throw the entire user state off.

The “magic” of this is the useFragment call. Because we already set the cache in the previous component, this call will fetch that fragment without needing to make an API call.

However, if you’re using the site and you login, then we’ll use this to make that initial call and fill the cache. It’s incredibly fast without even needing a page reload.

components/background/CurrentUserClientManager.tsx

"use client";

import { useEffect, useRef } from "react";
import { useDispatch, useSelector } from "react-redux";
import { useFragment, useQuery } from "@apollo/client";
import {
  getReloadUser,
  getTokenSelector,
  getUserId,
} from "features/currentUser/currentUserSelector";
import { useCurrentSession } from "hooks/useCurrentSession";
import { currentUserActions } from "features/currentUser/currentUserSlice";
import OwnerFragmentCompiled from "queries/users/fragments/OwnerFragmentCompiled";
import { UserType } from "types";
import { bootstrapUserByUserId } from "queries/users/bootstrapUserById";

// Loads everything about the logged in user on the client side
export default function CurrentUserClientManager() {
  const dispatch = useDispatch();
  const userId = useSelector(getUserId);
  const token = useSelector(getTokenSelector);
  const { resetSession } = useCurrentSession();
  const refreshing = useSelector(getReloadUser);
  const startedRefresh = useRef(false);

  useEffect(() => {
    if (refreshing) {
      startedRefresh.current = true;
    }
    if (!refreshing && startedRefresh.current) {
      startedRefresh.current = false;
    }
  }, [refreshing]);

  const { data: currentUserData, complete } = useFragment({
    fragment: OwnerFragmentCompiled,
    fragmentName: "OwnerFragment",
    from: {
      __typename: "users",
      id: userId || 0,
    },
  });

  const { loading } = useQuery(bootstrapUserByUserId, {
    fetchPolicy: "cache-and-network",
    skip: !userId || (complete && !refreshing),
    variables: {
      userId,
    },
  });

  // Reset the session if the user logs out or logs back in
  useEffect(() => {
    if (loading) {
      return;
    }

    const currentUser = {
      ...currentUserData,
      notificationsCount: currentUserData.notifications?.aggregate?.count,
    };

    if (complete && userId !== currentUser?.id) {
      resetSession();
    } else if (token) {
      // Done loading user, or user cache changed
      if (userId && currentUser?.id) {
        dispatch(currentUserActions.setUser(currentUser as UserType));
      }
      // No current user, done loading
      if (!userId) {
        dispatch(currentUserActions.setUser(null));
      }
    }
  }, [token, userId, currentUserData, startedRefresh?.current]);

  return false;
}Code language: JavaScript (javascript)

I can’t claim this is the best way to handle this scenario, but it’s the best one we’ve found. It has an added bonus too: saving state for every book you’ve ever read (that’ll be important for #3 next).

What this helps with: Cumulative Layout Shift, Largest Contentful Paint, Avoid large layout shifts, Minimize main-thread work, Reduce JavaScript execution time, Avoid long main-thread tasks.

3. Bootstrap the Most Important Data

The most core feature of Hardcover is allowing readers to track which books they’ve read and want to read. This is our killer feature, and we wanted to make it as good as possible.

Behind the scenes we have a table in our PostgreSQL database called user_books. This table has user_id, book_id and status_id columns. We show your status, or a gray button if you haven’t interacted with this book before.

There’s a lot to this little feature.

For starters, if you see two of this button for the same book, it should keep them in sync.

The buttons on the left correspond to the same books on the right.

But the biggest question was “where do we load this data?“. Originally we’d load a readers status with a book in the same query we loaded data about the book. That worked when we were loading everything on the client side. Now that we were loading that data on the server side, if we used the same approach we wouldn’t be able to cache anything.

The solution to this is to use a technique called bootstrapping data. In that initial user load, we’re also loading their status for every book. Even for readers with 10,000 books saved, this ends up taking less than 100ms since it’s just 3 integers.

src/queries/user/fragments/OwnerFragment.ts

export default `
  fragment UserBookStatusFragment on user_books {
    bookId:book_id
    userId:user_id
    statusId:status_id
  }

  fragment OwnerFragment on users {
    id
    cachedImage:cached_image
    name
    username
    flair
    pro
    librarianRoles:librarian_roles

    user_books {
      ...UserBookStatusFragment
    }
  }
`;
Code language: JavaScript (javascript)

Next, we need to let Apollo know that we’ll lookup book status not by id, but by a composite key of userId and bookId. This will allow us to load any users statusId for any bookId.

src/lib/apollo/cache.ts

import { NextSSRInMemoryCache } from "@apollo/experimental-nextjs-app-support/ssr";
import { createFragmentRegistry } from "@apollo/client/cache";
import fragments from "queries/fragments";

const cache = new NextSSRInMemoryCache({
  fragments: createFragmentRegistry(fragments),
  typePolicies: {
    user_books: {
      keyFields: ["userId", "bookId"],
    },
  },
});

export default cache;Code language: JavaScript (javascript)

We do this a bunch across Hardcover. The same works for “liking” something. That way if you like something on one page, or we load your like from one page, we can mark it as liked on another page.

This comes together on the Book Button itself which takes in a bookId and shows a button reflecting the current users status (or a placeholder if they’re not logged in).

We call this button everywhere. Since it’s shown everywhere, it’ll sometimes show up before the users session has even loaded into Redux. We account for that with a loading state that quickly updates.

components/BookButton/index.tsx

"use client";

import { useFragment } from "@apollo/client";
import { useSelector } from "react-redux";
import UserBookStatusFragmentCompiled from "queries/userBooks/fragments/UserBookStatusFragmentCompiled";
import { userLoadingState } from "features/currentUser/currentUserSelector";
import { useEffect, useState } from "react";
import { UserBookStatusType } from "types/UserBookType";
import StatusButton from "./StatusButton";

export type BookButtonSizeType = "sm" | "md";
export interface Props {
  bookId: number;
  referrerUserId?: number;
  size?: BookButtonSizeType;
  onClick?: any;
}

export default function BookButton({
  bookId,
  referrerUserId,
  size = "md",
  onClick,
}: Props) {
  const { currentUserId, userLoaded } = useSelector(userLoadingState);
  const [userBook, setUserBook] = useState<UserBookStatusType>({
    userId: currentUserId,
    bookId,
    statusId: 0,
  });

  const { data, complete } = useFragment({
    fragment: UserBookStatusFragmentCompiled,
    fragmentName: "UserBookStatusFragment",
    from: {
      __typename: "user_books",
      bookId,
      userId: currentUserId || 0,
    },
  });

  useEffect(() => {
    setUserBook(
      data?.userId
        ? data
        : {
            userId: currentUserId,
            bookId,
            statusId: 0,
          }
    );
  }, [currentUserId, data, complete, bookId]);

  return (
    <StatusButton
      loading={!userLoaded}
      userBook={userBook}
      size={size}
      referrerUserId={referrerUserId}
      onClick={onClick}
    />
  );
}
Code language: JavaScript (javascript)

Side note: we have a concept of a referrer for a book. This allows readers to see which books they’re actually influencing other people to be excited about.

Of all the parts of Hardcover, this button and the drawer that shows up when you click on are my favorite feature. This allows us to do things that wouldn’t have been performant otherwise like loading your status in search for each book and showing your status on book covers (with a small green checkbox) throughout the site.

This is possible because your status for each book is already loaded!

On the book page, we show all the other books in this series. This code is generated on the server, then hydrated on the client. The BookCover component will check your status on a book and add a small green checkmark for books you’ve read.

Doing this without fragment cache would’ve been a nightmare. I know because we have to do something similar for Match Percentage (our score from 0%-100% for how much we think you’ll like each book). Luckily we show that in fewer places, so it’s easier to manage.

You can use this same technique in your own applications! If there’s data that you show across the site, consider bootstrapping it on load.

What this helps with: Reduce unused JavaScript, Minimize main-thread work, Reduce JavaScript execution time.

4. Create Ghost Components

One library we use everywhere is HeadlessUI. We use Menu and Popover for our dropdowns, Combobox for autocomplete, Dialog for our search Modal and more.

But loading this library on every page adds another 50kb or more of JavaScript and additional code that needs to be compiled on every page request. That might not seem like a lot, but it was enough to knock 10 points off our Mobile Google PageSpeed Score.

When you load a page right now we won’t download HeadlessUI until you interact with a component that needs it. Here’s how this looks to the user:

Watch for the spinner on click

Notice the loading indicator for a moment. That pause is your browser downloading all the JS needed to expand the menu.

This might not seem like a lot, but it adds up!

Each of these components works like this. We show a basic button initially, but if they click on it we load and show the full version. Here’s how that works for the Explore dropdown shown above.

components/nav/DesktopNav/DesktopLinks/ExploreMenuLink.tsx

"use client";

import { Suspense, lazy, useState } from "react";
import ExploreLinkMenuInactive from "./ExploreLinkMenuInactive";

const ExploreLinkMenuActive = lazy(() => import("./ExploreLinkMenuActive"));

export default function ExploreLink() {
  const [clicked, setClicked] = useState(false);

  // Don't load Headless UI and the entire dropdown component unless it's clicked on
  if (clicked) {
    return (
      <Suspense fallback={<ExploreLinkMenuInactive loading />}>
        <ExploreLinkMenuActive />
      </Suspense>
    );
  }

  return <ExploreLinkMenuInactive onClick={() => setClicked(true)} />;
}
Code language: JavaScript (javascript)

In addition to less JavaScript, this is also less HTML sent down to the browser. That allows the browser to parse the page faster and reduce the dreaded “Avoid an excessive DOM size” performance issue.

Now, you might be thinking “but that’s a client component!”. That’s actually OK! The initial HTML that’s sent down to the user will include the rendered HTML of the ExploreLinkMenuInactive button. After the JavaScript of the page is downloaded, the buttons will become clickable.

This prioritizes what the user sees before what they can do.

What this helps with: Reduce unused JavaScript, Minimize main-thread work, Reduce JavaScript execution time, Avoid an excessive DOM size.

5. Optimize Font Loading

I overlooked this one for a while, but the solution was embarrassingly simple.

We use two fonts on Hardcover: Inter (sans serif from Google Fonts) and New Spirit (serif from Adobe).

Originally we’d load our global.css file which would load another CSS file from Adobe, which would then load the fonts.

Google has a name for this problem: “Avoid chaining critical requests”. In order for a page to load, we needed to wait for 4 chained requests to complete!

Next.js to the rescue! They have a pair of libraries that help with this exact problem: next/font. These will do all of the work of loading these fonts and injecting their value into a CSS variable in our body tag. We can use those variables in our TailwindCSS configuration.

app/layout.tsx

import "styles/globals.css";

import { Inter } from "next/font/google";
import localFont from "next/font/local";


const inter = Inter({
  subsets: ["latin"],
  weight: ["400", "600", "700"],
  display: "swap",
  variable: "--font-sans",
});

const newSpirit = localFont({
  src: [
    {
      path: "../../public/fonts/new-spirit-400.woff2",
      weight: "400",
      style: "normal",
    },
    {
      path: "../../public/fonts/new-spirit-600.woff2",
      weight: "600",
      style: "normal",
    },
  ],
  variable: "--font-serif",
});

export default async function RootLayout({children}) {
  return (
    <html className={`antialiased ${inter.variable} ${newSpirit.variable}`}>
     ...
    </html>
  );
}
Code language: JavaScript (javascript)

We can configure tailwind to use these fonts from their variable. That way we can use the class font-serif as shorthand for New Spirit and font-sans for Inter.

tailwind.config.js

const defaultTheme = require("tailwindcss/defaultTheme");

module.exports = {
  theme: {
    extend: {
      fontFamily: {
        sans: [
          "var(--font-sans)",
          "Inter var",
          ...defaultTheme.fontFamily.sans,
        ],
        serif: ["var(--font-serif)", "new-spirit, palatino, serif"],
      },
    },
  },
};
Code language: JavaScript (javascript)

next/font does two other things that are just cool. First they add prefetch HTML tags at the TOP of your HTML’s head.

Rendered HTML

<link rel="preload" href="/_next/static/media/2a0c0940792da67a-s.p.woff2" as="font" crossorigin="" type="font/woff2">Code language: HTML, XML (xml)

This means your browser will start loading these fonts immediately, not at the end of a 4-chain series.

Secondly, Next.js will add the CSS for these fonts to your first CSS that’s loaded. This means that when the first CSS file is parsed, it should have already started preloading the fonts and it can just start using them at the same time the CSS is read. The fonts load so fast now that I don’t even notice the font swap.

What this helps with: Avoid chaining critical requests, Largest Contentful Paint element, Total Blocking Time.

6. Remove Excess Providers

Providers in React are components you can wrap your entire application in. Their functionality is accessible from any component that’s nested inside them – however deep.

In the initial version of Hardcover we abused this concept. We had a dozen providers, and would add them willy-nilly when we needed something. Whenever any of them re-rendered, the entire page would re-render. Sometimes that would even cause the page to be unusable.

In our migration from client side rendering to server side rendering, we narrowed down our providers to just three:

  • BugSnag – Which we use for error tracking.
  • Apollo – Our Network layer and network caching
  • Redux – Our global state manager.

I’ve even considered replacing Redux with Zustand but so far we haven’t needed to. We barely use Redux at all, aside for the current user, the state of the Book Drawer and the state of the UI (ex: Is the Search Modal open?).

If there’s one place you should focus your attention, it’s your providers. According to my performance analysis (that’s next), this was one of the biggest areas we needed (and still need) work.

Side note: I’ve played with the idea of removing Apollo and using it with it’s manual configuration. However this comment made it clear Apollo is doing a lot more work than I realized both on the server side and the client side.

What this helps with: Reduce unused JavaScript, Minimize main-thread work, Reduce JavaScript execution time.

7. Profile Your Application’s Performance with Chrome Developer Tools

If you’re like me, eventually you’ll run into the dreaded “Minimize main-thread work” diagnostic from Google Pagespeed. This is one of the harder ones to reduce.

Creating Ghost components will help to some extent, but you’ll likely want to do more.

One feature of Chrome I’d recommend you learn is how to test the Performance of your application.

You can do this by navigating to the page you want to check, opening up Chrome Developer tools, then clicking the “Start Profiling and reload page” button (the second button in the top left that looks like a reload/refresh) icon.

After a few seconds when the page is completely reloaded you can click stop.

Next, you’ll see an insanely detailed look at how your application runs.

If you’ve never looked at this before it can be quite intimidating. The X-axis here is time. The longer the bar, the longer execution of that function takes. Each “box” here is a function that is being called.

What’s great about this view is that the Y-axis shows which functions each function calls. You can dig down and see which functions of your application are taking the most time to complete.

The part you want to look for first are sections that have a red warning overlay on them (like the image above). That indicates that Chrome considers this a “long task”.

These long tasks are the ideal place to start when improving your performance.When I did this exercise on Hardcover, there were three areas that stood out as having the longest runtime:

  • Providers – Hardcover had a BUNCH of providers. That included theme (dark vs light mode), Error caching, current user, next-auth, Apollo Client, Redux and more.
  • Headless UI Components – We used these in the navigation as well as other parts of each page.
  • FontAwesome Icons – Icons we show everywhere.

Each of these has it’s own solution which are very specific to our application.

For providers, we narrowed our requirements down to just three (error catching, Apollo, Redux). Everything else we moved into a BackgroundProcesses component which is loaded last in the layout.

That file handles work asynchronously without slowing down page rendering. That includes theme management, mobile management, saving referrer, Plausible Analytics, preloading resources and more.

For Headless UI Components, we switched to using Ghost Components (#4 described above). This cut the render time from 50ms to 12ms while reducing the downloaded JavaScript by more than 50kb.

Performance for a Ghost Component

For FontAwesome Icons, I went a little overboard. I couldn’t figure out a good solution (I’m curious for feedback on this one). I ended up copying all FontAwesome icons to our repository, loading them as SVG and passing that into a new custom component. Now there’s no overhead from the FontAwesome Library, and each SVG is included in the HTML passed down.

Next Steps for SEO and Performance

There’s still more we need to improve. One of the biggest is that our Lists load everything on the client side. We’re working to restructure those to also render server side. I’m excited about that switch, as it’ll allow us to do more sorting and filtering options too.

Once that fix is in, our main focus will turn from performance to content strategy. Check back in a year for an update on how that’s going. 😂

Categories
Uncategorized

Hardcover Report for January 2024

Happy New Year! 🍾 🥳

New Years is one of my favorite holidays. One of my favorite traditions is reflecting on the outgoing year. I do this by writing a personal blog post about my last year.

This year, we carried that tradition over to Hardcover and created The Hardcover 2023 Year in Books. It’s a snapshot of everything that was popular on Hardcover for 2023 split up across genres, timeframes, themes and more.

The end of the year is also a wonderful time to wipe away everything that we said we were going to do but didn’t and start fresh. On a recent episode of Last Week Tonight with John Oliver, he mentioned how they do a similar thing each year – discarding any stories ideas that were untold.

It’s also a great time to set a new reading goal for 2024! I’ve set myself a somewhat ambitious goal of reading 100 books this year. I think if I can keep myself off social media (specifically Reddit and TikTok) that’ll be easy. 😂

My wife and I celebrating in our sweaters – me with my Doomslug attire from the Skyward series.

There’s something cathartic about starting the year clean – although I have never wiped my Want to Read list. 😅

When looking back at the last year here on Hardcover, I’m amazed at what we’ve been able to accomplish:

📱 Launched an iOS app and Android App
📚 Created the Librarian Program
🔘 New Book Button for easy library access
🔍 Revamped Book Page (and the rest of the app) with a focus on community
💻 Created Ask Jules, our AI Librarian
🚀 Launched on ProductHunt
📆 Released The Hardcover 2023 Year in Books!

Add to that a bunch of blog posts, Hardcover Live’s, Discord conversations, social media posts and more.

We ended 2021 with 161 members. We climbed to 1,306 members by the end of 2022. This year we hit 5,272 members! We also made $280 in revenue in 2022, which climbed to $2,570 this past year (we share our income and expenses monthly). We’re not yet profitable, but December 2023 was our lowest deficit (costs – revenue) that we’ve experienced since launching – an incredible sign.

The biggest turn this year is harder to put into words. It’s that moment when I thought this is going to work. I believe we’re going to turn this little project into something that’ll be around for years to come.

That was a realization both Ste and I had while working on the redesign earlier this year. While using the site, we realized we were having fun exploring, finding new books and seeing connections that no other site makes.

There’s something alive in looking at a book and seeing what your friends and similar readers think of it, what prompts people feel it answers, what lists it belongs on and what match percentage we calculate for it. We have many more ideas in the works to make books feel alive.

What’s New On Hardcover?

December was such a fun month! I can assure you I’ve never said that before at a corporate job. 😂 In those settings with team members traveling, people preparing for the new year and shopping for the holidays, it was amazing to get anything done.

We’re going a different route – focusing on creating the type of project/life balance that motivates us. Part of that is setting reasonable expectations of ourselves and not overpromising.

In December we had one major focus: the Year in Books.

📆 The 2023 Year in Books

On Christmas we released The Hardcover 2023 Year in Books! As I mentioned above, it’s a celebration of the most read books of the year by Hardcover members across genres, trends, months and more.

I’m so excited with how this came out. Images add to the fun of the sections, and each section includes books I completely missed this year. Although my Want To Read list has exploded since putting this together. 😅

If you’re curious to see more about how we created the Year In Books, you can check out the blog post about the launch.

🔴 Hardcover Live

Starting at the beginning of 2023, Ste and I started jumping on a weekly call, recording it and building Hardcover together. It was one hour a week where where we’d work together – then go our separate ways and work asynchronously the rest of the time.

We put a few of them up on YouTube, but it wasn’t the main way we communicated with you’ll. For 2024 we’re planning to use this as the main way we communicate with the Hardcover Community – outside of this monthly email and Discord of course.

To start, we put together the new Hardcover Live page which lists out all past episodes with information about future ones.

You can watch Hardcover Live every Wednesday at 12 PM PST, 3 PM EST, 8 PM GMT. We broadcast to Twitch and YouTube as well if you’d prefer to watch on there. We check the chat in the Riverside stream, which broadcasts to the rest.

Looking back at the last year, many of the subjects of these discussions turned into features you can use today. From the book button, to Ask Jules, the new Search, and most recently the Year in Books, we’ve had fun building in public. These talks focus on the ideation and creation part – then after the calls we have to go off and actually do the rest of the work. 😂

If watching a video isn’t your thing, we’ve turned every episode into a podcast! You can search for “Hardcover Live” in your podcast player of choice, on Apple Podcasts, Spotify, or RSS.

We’re planning to focus more on actually letting people know when we talk, starting with the Google Calendar of future events and adding the Event to the Discord.

The next Hardcover Live is this Wednesday, January 3 at 12pm PST. Tune in if you’d like to see how our holidays were and watch as we figure out the next steps and designs.

If you’re an author, a book influencer or are creating something cool in the book space and would be interested in being a guest, please reach out to me (adam at hardcover.app).

What’s Next on Hardcover?

Now that the Year in Books is out, we’re ready to tackle some new projects! Before we share what those are, I want to share how we’re organizing them (organized people will love this 😂).

Hardcover 2024 Roadmap

We’ve created a 2024 Roadmap Document with what we’re planning on working on in the next few months.

I’ll update this throughout the year with the next 3 major things we’re working on. This is primarily for major features, not updates to specific pages. Those kinds of changes can be worked into the schedule as needed.

I’ve enabled comments on the 2024 Roadmap. If there’s anything you’d like to add, feel free to chime in! If you’d like to request a new feature, you can still request over on the Request section. This week I’ll be updating the Roadmap on there to match the Roadmap doc as well.

The next three things we’re working on include:

Improved Librarian Tools

Currently it’s impossible to add new books that we can’t fetch by ISBN/Goodreads Id. We also can’t add new editions to an existing book. Readers should be able to create new books as well.

As part of this we want to allow readers and librarians to add new books and editions to Hardcover. Newly added books and editions will have a “User Added” tag to indicate they haven’t been approved by a librarian and will not be shown in Search until they are approved.

Letterlists

We reuse “airlists” across the site to showcase a list of books. Each list also has it’s own sorting, filtering and columns available. The codebase makes it very difficult to reuse this code in different contexts. It’s impossible to do things like “sort by match percentage”. We’re also focusing on search engine optimization (SEO). Currently Airlists are rendered on the client side. By rendering it on the server side we could increase SEO.

To solve this, we want to move the selection of what books should be shown to the Rails side and server-side render the front-end. Update the interface to use the same filtering and sorting options across all lists of books (Authors books, books by status, lists, goals, etc). Side note: the term letterlists is because these are inspired by Letterboxd lists.

Mobile Improvements

The mobile app works, but it doesn’t feel complete. We want people to enjoy using the app for 1 minute or for hours.

We want to make a series of improvements that make the app feel more native including notifications, gestures, pull to refresh, haptics, callouts to open the website in the app with deep linking.

Bugs and other projects

We’ll also continue fixing bugs and working on other features that people upvote on our requests board. In January we’re planning to enable updating progress by page number – the highest voted request! 🥳

Behind the Scenes at Hardcover

December was our highest revenue month yet! Thank you so much to everyone who upgraded to a support this holiday season. Here’s how the numbers broke down this month.

  • December Revenue: $520
  • December Expenses: -$1,017
  • December Profit: -$497

We were able to lower our expenses by switching from Algolia to Typesense for search. That reduced that expense from $400 to $70 overnight. They were even nice enough to list us on their homepage!

Our biggest expenses are still Heroku ($422, Rails, Redis, Database) and Hasura ($145, API). I believe we could move our Hasura hosting to be compute based rather than bandwidth based and that’d reduce our costs another $100. That’s on the horizon, and might happen sooner if our API costs grow.

I’ve updated our Income & Expenses page up to the end of 2023 if you’re curious to know more about our financials. We have another $7k in the bank right now, which at our current pace might be enough to last until we’re revenue positive without needing anymore funding help form the Hardcover team 🤞.

Featured Prompt for January 2024

This months prompt would have been most useful a month ago, but I wanted to share it now while answers are still fresh in readers minds.

Need some shorter page turners to finish out my 52 book goal!

I’m at 42/52 and I’m trying to really make a push to finish the year! I have a few longer books (18–25 hours audiobook) lined up, so I want some shorter and easier ones to fill out the list. I tend to sci fi and fantasy but anything will do. Wintry/cozy also could be nice! Thanks

Many of us can relate! 😂 Are there any books you recommend to readers who want a quick but exciting read? Maybe if we start now we’ll be ahead of our goal for the year!

Decembers Prompt

Last months features prompt was “What are the best non fiction audiobooks?

So far the top voted book is I’m Glad My Mom Died by Jennette McCurdy. It was also the #2 most read book on Hardcover in 2023. She reads the audiobook, and I’d highly recommend it.

What’s Popular on Hardcover?

Here’s a look at what was most read in the last month, and what readers are more looking forward to in December.

Most Read Books for December 2023

  1. Fourth Wing (#1 of 2 in The Empyrean) by Rebecca Yarros
  2. System Collapse (#7 of 7 in The Murderbot Diaries) by Martha Wells
  3. Iron Flame (#2 of 2 in The Empyrean) by Rebecca Yarros
  4. The Woman in Me by Britney Spears
  5. Defiant (#4 of 4 in Skyward) by Brandon Sanderson

Fourth Wing and it’s sequel, released in November 2023, have captured the top spot this month. It was also the most read book overall on Hardcover last year!

System Collapse, the newest addition to the Murderbot Diaries, just came out in November as well. Three other books in the series were also in the top 15. That’s part of why Martha Wells was the #6 most popular author on Hardcover this year.

Most Saved Books To Be Released in January 2024

  1. House of Flame and Shadow (#3 of 3 in Crescent City) by Sarah J. Maas
  2. The Fury by Alex Michaelides
  3. Emily Wilde’s Map of the Otherlands (#2 of 2 in Emily Wilde) by Heather Fawcett
  4. The Heiress by Rachel Hawkins
  5. A Fragile Enchantment by Allison Saft
  6. tie – “Mislaid in Parts Half-Known (#9 of 10 in Wayward Children) by Seanan McGuire
  7. tie – The Warm Hands of Ghosts by Katherine Arden

After Sarah J. Maas’s success with A Court of Thorns and Roses, it’s easy to see why readers can’t wait for the next book in the Crescent City series. I reading ACOTAR last year after some nudging, and absolutely loved it. This series is for sure on my list, and with this release it’s the perfect time to start.

Be Featured in this Newsletter

We’d love to start featuring readers each month in this newsletter and blog. Specifically readers who use Hardcover and want to make new book friends!

If you’d like to be featured, fill out this Google Form and we’ll see what we can do.

If you’re in the book business, or have a book site and would like to sponsor this newsletter or Hardcover Live, please reply to this email and we can talk.

Join us on Discord

The Hardcover Community isn’t just on the website – we’re also on Discord! If you’re not an expert in Discord, don’t worry – neither are we.

Join the over 500 of us to chat about books, hear about product updates, and be a part of the community.

Join the Hardcover Discord

Want to Support Hardcover?

Being a fledgling startup we can use all the help we can get! Whether that’s becoming a Supporter, sharing Hardcover with a friend, or just following along.

We appreciate you for reading and hope you have an amazing November. Talk to you soon. 🏔️

Categories
Canonical Uncategorized

Announcing the Hardcover 2023 Year in Books! 🥳

In the last year Hardcover has grown from just over 1,000 members to over 5,000 (!). In that time readers have saved over 400,000 ratings and written more than 70,000 reviews.

This year we launched the Trending Books page – a place to see which books are being read the most over the last 3 months, 12 months or all time. I loved seeing this insight into what books are rising to the top. As someone trying to spend less time on social media (which is ironic, I’m aware 😂), I loved being able to see this list and know it’s influenced by BookTok, Book Twitter, Bookstagram and even Bookstodon.

But the trending book page still left me with a lot of questions. What NEW books are popular? What book are popular in a specific genre? What about books by BIPOC authors? Or even which authors are most popular?

Answering those questions was one of the goals of The Hardcover 2023 Year in Books!

I’m a big movie fan. To the point where I track all of my watches on Letterboxd and have been a decade. Each year they create an incredible Year in Movies page (2022, 2021, 2020) that I immediately devour and save a bunch of movies to watch.

For years I’ve wanted something similar in the book world. We wanted to do something similar in 2021, but we didn’t have enough readers using Hardcover to generate the kind of definitive insights that would be useful. Fortunately, more readers have joined and now we’re able to offer some truly insightful highlights based on what readers are focusing on for 2023!

A Celebration of Authors

Writing books is tough. I’ve written exactly one draft of a book (and a lot of blog posts). Taking a book from an idea to a draft, then iterating on it based on feedback to get it feeling just right while maintaining continuity and all of the points an author wants to hit is an incredible undertaking. We want the Year in Books to be a celebration of all of those authors who released something new into the world in 2023.

This is our first attempt at this, but we plan to do this again in 2024. If you have any feedback for us, please join our Discord and let us know. Feedback helps us know how we can improve next year.

I couldn’t pass up a book themed Christmas card 😂

If you’re an author with a book featured in The Year of Books, we’d love to send you a sticker & Christmas card! We’ve reached out to a bunch of authors already and many of these have already gone out.

If we missed contacting you and you’d like a sticker, please email me at adam at hardcover.app and I’ll drop one in the mail for you. 📫

We had enough stickers to adhere one to the envelope and include one inside.

How It’s Made

The creation of The 2023 Year in Books took over two months. It started as a Google Doc where the four of us picked out categories to include. A bunch of these ended up being scrapped. For example “Top Rated” books ended up matching “Popular Books”, and we didn’t see the need to have two lists that were roughly identical.

Once we decided on which sections to include, we began prototyping our what each section would look like in our weekly Hardcover Live streams. In these sessions we’re prototyping together in Figma to get a static version of what we want to create.

Much of the time we can’t decide on which version of a design to go with. In that case we create multiple versions and share them on Discord to get some feedback. Here’s the first version of the top 10 design.

The first design ended up getting the most votes. After a few more rounds of design updates and iterations we arrived at the version you see today!

From a technical standpoint this page is a single React page with a bunch of reused components from across the site (book button, cover, title, review, list, prompt, etc). We needed to create a few custom components for things like “Top 10 List”, “Top 5 List”, “Book Trends List”.

One of the tricky parts was hardcoding the books. While we could make this dynamic and hit our database to get the most read books in a month while keeping that up to date, we wanted to include artwork for the featured books. If those books changed in the future the art would be out of sync!

Next.js App Router page for the Year in Books.

Instead we chose to hardcode the book ids at the time we launched. If another book becomes more popular in the future it won’t impact this page. In other words, it’s a snapshot of what was popular for the year as of Christmas 2023.

We also wanted to show reviews for some books. For that we hardcoded those reviews and their reviewer into the page. This means if a reader with a featured review changes their username, avatar or review it won’t be updated here. That was a tradeoff to guarantee that the page doesn’t change and we don’t need to babysit it.

The code for the Most Read Books Overall of 2023.

Merry Christmas from the Hardcover Team

We had a blast building this. It’s exciting to take a little time away from other projects and build something that’s just a fun celebration of books. We hope you enjoy The 2023 Year in Books as much as we’ve loved making it. 📚

If you do enjoy it, we’d love for you to share it! If you’re logged in and click the share button on the Year of Books page, it’ll generate a link with a referral code tied to your account. Refer two readers and you’ll earn a free month as a Hardcover Supporter. 👨‍🚀

Categories
Canonical

Hardcover Report for December 2023

DecemberReport

Hi book friends!

November has come to a close and we’re entering the last month of 2023. I feel like this year has flown by. Some years feel like they cram in a decade of life into 365 days, but this year has felt more like a recovery year (after a very active 2022!).

We’ve been busy working on a few improvements and some new features we’ll get. In October we planned out the next few months of work, which we ambitiously called “Q4 Objectives”. Unlike a real job, that’s the start date of the those tasks, not the end date. 😂 If you’re curious about the broad strokes of what we’re working on, check it out.

One of my favorite moments of November was attending Dragonsteel 2023, an entire convention focused on Brandon Sanderson’s world of books and a celebration of fantasy. If you’re a Sanderson fan, I’d highly encourage you to attend. Attendees ranged from 10-year old girls that love Skyward to old regal wizards in full cosplay. It was a fun time. Next year I plan add a temporary channel in our Discord (you can join now and be ready!).

On the personal side this month has been a quiet one. We recently got our record player fixed – it’s still working after 40+ years! We’re beginning to find fun records and picking up a few of our all-time favorites. So far the Last Night in Soho soundtrack and Yoshimi Battles the Pink Robots by The Flaming Lips have been our favorites.

Our new record player and cork board to prevent static.

What’s New On Hardcover?

After a bug-bash filled October, we’ve shifted to three big things that are still in progress

📆 The 2023 Year in Books

I’m soooo excited about this one. At the end of 2022 we launched individual stats pages (example) which are your year in books. This was our answer to a “Spotify Wrapped” kind of personalized experience.

One other thing we wanted to do but didn’t have time for was an overall year in books – something that captured what was popular on Hardcover throughout the year in order to celebrate those books and find gems we missed.

Teaser from The 2023 Year in Books

I’ve been a huge fan of Letterboxd Year in Movies and look forward to it every year. Our goal is to do something similar for books – both using data from the community as well as finding themes.

It’s going to be the most visual presentation we’ve tried so far – using images and colors alongside covers to showcase these books.

There are going to be a lot of sections – most read books, books by genre, most read books by BIPOC authors, popular authors, lists, prompts, trends, anticipated books of 2024 and more.

We’re aiming to release this on Christmas. 🎁

✅ List Updates

Here’s a dark secret of Hardcover: the code for the way lists work today is awful. 😅 We’re dynamically generating GraphQL requests by combining all the settings readers set for filters, sorting and what columns they want to see.

On top of that, the interface for changing sorting and filtering isn’t user-friendly. It’s also missing some of the most useful options – like sorting by match percentage or filtering by genre.

Work in progress for new lists – not a final version

This update, which I’m hoping to deploy before the Year in Books, will improve the user experience on desktop and mobile, speed up the interface a bunch by rendering everything on the server and add a bunch more sorting and filtering options.

And I’m planning to add bulk editing here too – one of the top feature requests. We’re planning to still have Card view and Cover view, but I’m leaning towards making table view and bulk editing Supporter-only features. Those are power-user features but ones that take a while to code. If you have strong opinions on that decision, please drop me an email.

💬 Discussions

If you’ve been following along with these emails, you’ll know we’ve been talking about discussions for a while. Thank you to everyone who’s filled out the survey or participated in an interview!

We’ve reached a point where we’re happy with the direction, but also know that it’ll expand out into many other places across the site.

There are still many decisions and designs still to figure out, but there are three things we have figured out:

#1 – We’re moving forward with discussions tied to a book (or an author, character, series, genre + more), with an easy way to mention other parts and have those discussions show up there. If you post about Circe and mention The Odyssey, your Circe post will show up in The Odyssey as well (with a slightly different style). Think Twitter X when @mention someone.

We may eventually enable people to create a group/subreddit that’s public or invite only that has discussions too, but that won’t be in our V1. We’re focusing on public discussions to start.

#2 – Progress updates with text + progress by page number or audio position. I’m really excited about this one. It’ll allow you to create a kind of reading journal and each journal entry can be commented on.

#3 – Feed updates! The easy one here is comments in the feed. The other is completely revamping the feed with discussions, the ability to filter by activity type and making the “for you” feed smarter.

My plan right now is to start working on Discussion updates after the Year in Books and List updates.

Behind the Scenes at Hardcover

We had a lower revenue month, but that was expected. After our launch on September 30th, I assumed our revenue would spike some with people buying 1-year subscriptions, then go down to a new baseline. That’s exactly what happened and our income is higher than it was before launch.

  • November Revenue: $216
  • November Expenses: -$1,309.65
  • November Profit: -$1,525.65

Most of our expenses aren’t based on usage but content. Our 220 GB database, our 1 million records in Algolia. Whenever we’re able to move to usage based billing – like with our switch from Imgix to Imaginary – we save tons of money. On the plus side, our expenses won’t increase much even with 10x or 100x our traffic.

We will need to do some database maintenance in December. We have 256 GB of space and we’re almost filling it. We could increase this for another $200/month but I’d like to do a round of optimizations first.

Featured Prompt for December 2023

In October we made creating Prompts free for all members, and a bunch of fun ones were created! We’re working on ways to showcase these Prompts more broadly on the site, but for now the best way to see new them is on the Recent Prompts page.

The featured prompt for this month is by @Gustavo : What are the best non fiction audiobooks?

This is a category that I personally love, so I’m excited to see what books come to mind. After not reading much during college, it was this genre + medium that got me back into reading again for fun.

Side note: Once you answer a prompt, we’ll generate a shareable page with just your answers. As an example, here are my answers to this prompt.

Head over to this months prompt to upvote your favorites, find time nonfiction audiobooks you might have missed and add your own favorites.

November’s Prompt

Last months features prompt was “What is the most unique or thought-provoking time travel book you’ve ever read?“.

So far 9 readers have voted and the top result? 11/22/63! There are 6 books tied for the second spot right now. Check out last months prompt to see them or upvote your favorite time travel books.

What’s Popular on Hardcover?

Here’s a look at what was most read in the last month, and what readers are more looking forward to in December.

Most Read Books for November 2023

  1. Iron Flame (#2 of 2 in The Empyrean) by Rebecca Yarros
  2. The Woman in Me by Britney Spears
  3. The Three-Body Problem (#1 of 3 in Remembrance of Earth’s Past) by Cixin Liu
  4. The Sunlit Man by Brandon Sanderson
  5. Fourth Wing (#1 of 2 in The Empyrean) by Rebecca Yarros

The second book in The Empyrean series, Iron Flame, came out with a bang this month, leading many readers to quickly move it to the top of their list. The first book in the series, Fourth Wing, came out earlier this year and became a popular one on TikTok. I described it to my wife as “Harry Potter meets The Hunger Games with dragons and a dash of ACOTAR“. Amazon also picked up the rights to it, and is planning to turn it into a TV series.

The Three-Body Problem series is a mind-bending science fiction epic that was written in Chinese and translated to English. Netflix is working on a series set for release in March 21, 2024. I’ve been waiting for this one for YEARS and can’t wait to see it. (I just hope it doesn’t get canceled before we get to book 3 😭).

Most Saved Books To Be Released in December 2023

  1. Esrahaddon (#3 of 3 in The Rise and Fall) by Michael J. Sullivan
  2. The Curse of Penryth Hall by Jess Armstrong
  3. On the Plus Side by Jenny L. Howe
  4. This Spells Love by Kate Robb
  5. Where the Dead Wait by Ally Wilkes

Join us on Discord

The Hardcover Community isn’t just on the website – we’re also on Discord! If you’re not an expert in Discord, don’t worry – neither are we.

Join the over 500 of us to chat about books, hear about product updates, and be a part of the community.

Join the Hardcover Discord

Want to Support Hardcover?

Being a fledgling startup we can use all the help we can get! Whether that’s becoming a Supporter, sharing Hardcover with a friend, or just following along.

We appreciate you for reading and hope you have an amazing November. Talk to you soon. 🏔️

Categories
Canonical Featured Hardcover

Dragonsteel 2023 – SLC, Slugs & Liminal Spaces

My first Brandon Sanderson book was Mistborn. In 2014 a coworker of mine (Adam Rensel) mentioned that every year he’d re-read the entire trilogy. I was curious and decided to see why he was such a big fan of the author and the series.

A year later I’d read the original trilogy, The Way of Kings + the newly released Words of Radiance, Steelheart and more. I was patiently awaiting the next book in multiple series. Sanderson had hooked me.

At the time I was living in Orlando, Florida working at a startup called Code School teaching people how to code. That startup was acquired by a company here in Salt Lake City, and my wife and I moved across the country.

What I didn’t realize is that we would move 4 blocks from where Dragonsteel is held. 🐉⚔️

2023 was my first year attending, and purely as a Sanderson fan. I didn’t even end up mentioning Hardcover to anyone – it seemed too self-promotional. Instead I geeked out with other Cosmere fans, embraced theories, studied lore and lost (badly) in trivia.

I’ve always loved reading write-ups by people who attend nerdy conferences and wanted to share my experience going to my first Dragonsteel as a Sanderson fan who’s read every one of his books (except the White Sand graphic novel which I picked up this year. 😉).

Map of the Worlds

Dragonsteel 2023 was held at the Salt Palace in Salt Lake City, UT. It’s a large-ish convention center that alternates between comic book cons and multilevel marketing gatherings. We were there just recently for FanX, our largest convention. The actors strike was still happening, so the panelists couldn’t talk about much. I was happy to attend a convention where the actual authors would be able to talk. 😅

Let me set the stage for what you see when you make it into the convention.

Registration – Exactly what you’d expect. Pickup your badge – or later on pickup your copy of Defiant.

Dragonsteel Store – I was expecting a typical convention store with shoppers on one side and cashiers on the other, but no. They decked out an entire room as a browsable store (with Dragonsteel shopping bags)! The entire weekend up until the release party the line to get in was loooong, but it moved fast. I didn’t get a picture of the space, but I see why people were lining up. I picked up a Doomslug Christmas Sweater. 🐌🧥

Exhibit Hall – Roughly ~80 vendors if I had to guess. Split between 40 authors, 25 with various nerdy goods (dice, figures, custom creations), and a few bookstores and fan groups – including The Silverlight Guide to the Cosmere podcast.

I talked with a bunch of authors, picked up some books and admired the unique goods made by super fans.

Sylphrena / Honorspren knit plushit
I loved this Mimic dice bag!

Game Room – When I say game room, you might imagine a small area with a few tables. Instead, imagine this as an entire convention hall. There were a dozen areas to participate in the live action role playing game based on Skyward (more on that later). You could pick up board game in a dozen other tables, or join a game looking for players on one of the 50+ gaming tables. Join an RPG one-shot or play some Magic: The Gathering. Also some more stores, places to win prizes (I won a pair of Doomslug socks to match my sweater 😂).

Programming Rooms – Lastly there were 4 rooms for talks. One was the massive Roshar hall where Sanderson gave his speech(es). I spent a lot of my time in 155 – Scadrial where theory and Cosmere discussion was focused.

Skyward Resistance Role Playing Game

All around the common area, you’d see these propaganda posters to enlist and join the fight to defend Evershore. If you’ve read the Skyward Series, these will make sense. The convention was set to end with the book release of Defiant and having a game playing out all around helped set the mood for the book. (It’s next on my Want to Read list! No Spoilers please! 🙈🙉)

I signed up as a Scout for the Skyward-themed role playing game. I’ll be honest, I struggled a little bit with what to do, but the information booth was very helpful.

Line to join the resistance!
Dragonsteel game scount
Skyward Game Scout
Resistance posters

The goal of the game was to complete a series of four tasks. Each of them had multiple parts. I didn’t complete them, so don’t quote me on this 😅

Find 4 Taynix (slugs) during panels & presentations – This one was simple enough. During each panel they would hold up or show a taynix. You needed to attend 4 panels and capture pictures of them.

Find 8 Reality Icons – Without spoiling Cytonic, let’s jsut say reality icons keep you grounded in reality. There were 32 of these that you could collect, although the number was really 33, due to Sanderson having #0. You found these by asking someone working, volunteering or exhibiting at the con for theirs.

Scan 4 Delvers – Hidden throughout the convention were (supposedly) Delvers with QR codes you could scan. I kind of forgot about this one and I didn’t end up finding or scanning any.

The Hard One – The last challenge I didn’t even start. A post in r/brandonsanderson explains more what this one involved. It sounds like it took a group effort to figure this one out – which sounds like a fun adventure!

I don’t know for sure what the award was for completing this. I think it gave you more raffle tickets to win prizes. I appreciated the theming, and seeing people randomly having talks with staff asking for reality tokens. For a moment I felt like I was in the Nowhere. 😂

Geeking out in Panels & Talks

My favorite part of conventions is going to talks by people that know a ton more about the fandom than I do. Even though I’ve read every Sanderson book, what I don’t know could (and does) fill a wiki. Here are some of the panels I went to and a few takeaways from each.

Day 1: Monday, 11.20.2023

Silverlight Guide to the Cosmere Live Recording

Griff and Alex from the The Silverlight Guide to the Cosmere recorded a live episode to kick things off! In between encouraging people to pickup raffle tickets (Griff and Alex: let me know if that podcast guest option has been claimed 😂), they focused on a few Cosmere related questions:

  • What will happen in book 5 of The Stormlight Archives?
  • What will happen in books 6-10 of The Stormlight Archives?
  • What are the Ghostbloods up to?

As with a lot of the con, it was a spoiler heavy talk. I get the feeling that most panels assume that you’ve read every single Sanderson book. If you’re thinking about going next year, keep this in mind!

Over a decade ago when Lost was airing I would listen to podcasts and fan theories each week between episodes. No one but the author knew what was going to happen, so I couldn’t be spoiled! The Cosmere fan sphere reminds me of this. People have exciting and interesting theories – and some of them will no doubt be correct.

Welcome Ceremony

I wasn’t sure what to expect in an “opening ceremony”. Maybe a few comments about the convention and a general “hello”.

Before the official start time, The Science of Magic: Tress of the Emerald Sea w/ @MarkRober was playing while people got seated. Once it was time, about 20 members of the Dragonsteel team came out and started singing. 😂

As a huge musical fan, I loved this. I wasn’t expecting a musical tribute to the fun and excitement of going to a fan convention. They recorded a Cosmere/Con themed adaptation of “One Day More” from Les Misérables with lyrics adjusted for the event.

I was cracking up – as was the entire team. I immediately posted it to the Hardcover Discord to others to join in the fun. 😂

Cutting Edge of of Literature: Romantasy

We juuuust had a discussion about Romantasy in the Hardcover Librarians group. We’re working on a “2023 Year in Books” project where we’re highlighting the most read book throughout the year – grouped by month, genre, and many many more (it’ll be long 😅).

The question was if we should include romantasy books in the “most read romance” section. In this case, we decided to split up the two and only use books where the main genre was romance.

I only caught the last few minutes of this this one after the welcome ceremony, butI had fun listening to Piper J. Drake host a session of “smash or pass” with Tricia Levenseller, Jessi Honard, and the rest of the panel asking romance tropes and seeing if they were all in or all out.

Cosmere: A Speculative Timeline

I’ve never known where the different Cosmere books take place timeline-wise. With stories happening on different words, you can’t base time on technological advancement alone. This panel dug into that question to understand where each book belongs compared to the rest.

Unfortunately I had to head out to check out the Stormlight Archives costume gathering (photos below). One thing that I found fascinating was where The Sunlit Man is theorized to be placed here. 🤔 Could it be considered a Skyward prequal?

Previously On… The Cytoverse

It’s been a while since I read Cytonic & Evershore (Skyward #3 & #3.1), and I wanted a refresher on the series before jumping into Defiant. They did a complete recap of the entire series so far – including the novellas.

One of my favorite moments was when one of the panelists wasn’t sure on a plot point and a 10-year-old girl in the audience answered in great detail. 😂

Day 2: Tuesday, 11.21.2003

Yumi and the Nightmare Painter Book Club

How do you host a book club for a few hundred people? By making it a contest! Each of the four panelists was asked a series of questions about the book – all opinion based. For example: what was the most romantic moment? What was Hoid’s best quote?

For each one the audience would vote on the best and everyone else would have clothes hung on them (if you’ve read Yumi, you’ll recognize the significance of a coat rack. 😂)

Cosmere Trivia

Trivia was conducted using Cahoots – an online system where a series of questions are asked and everyone has a few seconds to answer each. After 40 or so questions the highest scorer got to go up front and participate in a game of Jeopardy!

I joined the first round and verrrrry quickly realized I wasn’t going to be in the top 15 – and would be lucky to be in the top 50% 😅. The questions were tough!

Hoid and His Magic Systems

I’ve never had a good grasp on what Hoid is capable of. He’s always been a bit of a mystery, with each appearance only adding to the questions.

This panel focused on what Hoid is capable of what magic systems from different books he has access to and what might his motivation be?

One takeaway that stuck with me is how Hoid has magic luck – which is why he happens to be in the right place at the right time to meet all the main characters from each story.

Spoiler Q&A with Brandon Sanderson

I wasn’t sure what to expect in a 2-hour Q&A. Sanderson went out on stage, completely alone, and answered rapid fire questions from the audience the. entire. time.

Of the 100 questions he was asked, there were only about 10 or so that he refused to answer – sighting “read and find out” – meaning the answer will be revealed in a future book.

There were two answers that stuck with me.

#1: Hoid dated a dragon. Dragons live much of their lives as humans and can shape shift to dragons, but have children in their human form. Sanderson wouldn’t say who the dragon was (or if we’d even met them yet), but did mention “not to look in the Stormlight Archives” for them.

#2: We’re going to see more super structures (like Evershore) but even larger. Sanderson teased an idea for the “Grand Apparatus”. What it is (and if he decides to keep the name) is to be determined.

Defiant Release Party

The last event of the convention was the Defiant Release Party. Taking place in the largest convention hall, Sanderson and his wife gave an update on Dragonsteel (the company), next years convention, a keynote then a Spoiler-free Q&A.

There were three major Dragonsteel announcements:

1) Announcing the Words of Radiance leather bound kickstarter set for the end of March (which will come with a Syl!).

2) The intention to build a physical bookstore in the next few years! This wouldn’t just be a bookstore but an event space, a cafe, space for book clubs and even additional space for other vendors (game store anyone?).

3) Next Years Dragonsteel will be held here in SLC again on December 5-7 2024 with the last day being the launch of The Stormlight Archies Book #5 (!) on a Saturday night.

Sanderson’s keynote was one of my high points from the convention. He talked for about half an hour about the current state of the Cosmere.

Somehow this conversation was spoiler free – but it did talk in terms of entire story arcs. Last year the Mistborn: Wax & Wayne saga wrapped up. On the day of his talk The Skyward series wrapped up. In December of 2024 the first half of The Stormlight Archives will wrap up.

We’re getting to a point in the Cosmere where the next series of stories won’t be expanding on the current stories, but time jumps and new stories altogether.

He related this to being a kind of liminal space in the Cosmere timeline.

One of the stories he told was how difficult it was to write Shadows of Self (Wax & Wayne #2). He’s started writing it, but was called away to finish The Wheel of Time series. When he want back to Shadows, he had trouble getting back into it. To help get back into the mindset of the characters, he skipped forward to The Bands of Mourning (Wax & Wayne #3). After flexing that muscle he was able to go back to Shadows and finish it.

A takeaway was to always leave yourself runway. If you finish a chapter of a book don’t just stop there. Use that moment and write a few more pages into the next chapter! Between sessions you’ll make progress in your mind and when you sit back down you’ll have a place to take off from.

I was exhausted by this point and decided to head out before the full Q&A. Before I did Sanderson announced the next book after Stormlight #5 would be a White Sand novel (!). If you check out the timeline above, you’ll see why this could be very interesting for the overall Cosmere.

Costumes!

I’m such a huge fan of seeing people in costume at conventions. I’ve dressed as anime and sci-fi characters a few times for cons, and loved just walking around and admiring the work people put into their looks.

Brandon Sanderson also would give each person in costume who he encountered a special pin! If you’re on the fence about dressing up next year keep this in mind!

Vinn and Kelsier from Mistborn
Kaladin from The Stormlight Archives
Skyward Cadets (with taynix)
Vin and Elend from Mistborn
Kaladin from The Stormlight Archives
Elend from Mistborn
Doomslug from Skyward
The Skyward Crew
Syl from The Stormlight Archives
Bridge 4 from The Stormlight Archives
All of the spren from
The many looks of Shallan Davar from The Stormlight Archives
The Stormlight Archives Costume Group
Kaladin & Syl from The Stormlight Archives
Shallan Davar from The Stormlight Archives

M-Bot’s Adventure

One of the last things I checked out was the virtual reality experience: M-Bot’s Adventure.

After putting on the headset you’re taken to Skyward Flight School. Something goes wrong and it’s your job to get back to where you started.

It’s not an interactive experience with controllers, but it was fun to look around 360 degrees and experience a set story. Honestly, they had me at “virtual reality experience”.

The Lightweaver Foundation

One of my favorite things in the expo hall was The Lightweaver Foundations Christmas ornaments. The secret project ones were gorgeous, and I have a tinge of regret for not picking up all of them.

Tress of the Emerald Sea ornament
The Frugal Wizard’s Handbook for Surviving Medieval England ornament
Yumi and the Nightmare Painter ornament
The Sunlit Man ornament

Dragonsteel Takeaways

This is my first Dragonsteel but I already can’t wait for the next one. There are a lot of parts of that I missed or skipped out on. I don’t tend to keep physical books, so acquiring signed copies wasn’t important to me, but if that’s your goal there are many options to get a signed copy.

The entire volunteer team and Dragonsteel team was extremely helpful and welcoming. When I first arrived and was looking for the game area, a volunteer walked me down to the game area and gave me instructions on how to get started. I think without that I might not have joined the resistence!

I had fun chatting with various people I ran into, but I didn’t join any organized talks. Next time I’d like to get to know more people ahead of time rather than rely on meeting people there. I’ve since joined the 17th Shard Discord and will have that handy for next time. 😉

One down note would be food. the food options in the venue aren’t great. I lined up for a BBQ brisket sandwich the first day, but by the time I got up there it was BBQ brisket nachos. I walked to the City Creek Mall Food Court and to Subway for my meals after that.

I also didn’t play any games! I would have loved to sit and play something and make some friends. It was a tough decision between that and attending panels (or just taking time to relax and recover).

If you’re planning to go next year hit me up on Discord (either Hardcovers or the 17th Shard)! I’d love to meetup in person with more people next time.

Here’s me with some slugs.

@adam from Hardcover 😂
Categories
Canonical Hardcover

Hardcover Report for November 2023

November Report

Hi book friends!

October has been such a fun month. Following our launch on September 30th, our focus this month has been on stability, fixing bugs and preparing for what comes next.

In jobs I’ve had at larger companies, we often had to strongly state our case when we wanted to work on maintenance. It’s time we’re not building out new features, which sometimes doesn’t go over well when months go by without shiny new features to sell. This month felt a little like that.

There are no flashy new announcements or releases this month: just continuing to move in the right direction.

Aside from that I’ve been playing a lot of Baulders Gate 3 while my wife plays Disney Dreamlight Valley. 😂 We’ve also been playing Hollow Knight and Gargoyles – handing the controller back forth after each death. It reminds me of playing the first Mario game as a kid. 🎮

We saw Taylor Swift’s new concert (in theaters of course) and dressed up at Beetlejuice and Lydia for Halloween.

Now I’m recovering from a COVID-19 booster vaccine which drained my energy more than I expected. Definitely still get it, but plan accordingly.

What’s New On Hardcover?

We closed 32 issues in GitHub this month, plus more fixes that didn’t make it there. Often times people will report things on Discord that we’ll roll out ASAP. It’s community driven development. 💪🏠

Here are a few noteworthy things we did this month.

🚀 Faster Loading!

In August we switched from loading most of the experience in the browser to loading it on the server. This causes the first page load to be faster – which is most noticeable on mobile.

I’m working on a technical blog post that goes over the many steps we took for this: server side generation, loading server-side data into Redux, priming our Apollo Cache, optimizing our code splitting, and a bunch more. If you’re into web performance, keep an eye out for that post.

📱 Android and iOS App Updates in November

We updated our iOS and Android apps with some minor fixes (less crashing, copy link issues, and a few more). Due to the way the app is developed, anything that people can do on the website they can do on the app.

We redesigned the top navigation bar in the app to be less cluttered, moving everything into the sidebar that opens when you press your avatar.

You’ll also notice Ste’s Halloween logo! I can’t wait for more festive logos for noteworthy days. What should we do next?

⚠️ New Error Pages

It turns out that our error pages… had errors. 😅 This often made the site unusable until you changed the URL or restarted the app. We’ve fixed this and improved our messaging when things do go wrong:

400 Server Error

404 Not Found

401 Unauthorized

We hope you never see these, but if you do it’ll be less jarring. 😂

What’s Coming Soon?

We’re down to only 24 known bugs in our backlog! Getting this to zero is unrealistic, but that’s OK. The hope is to balance this with new features.

Back when I was working at a job as a Product Manager, October first would mean coming up with our “Quarterly Goals” for the last 3 months of the year. I’m usually a decent planner, but between Thanksgiving, Christmas and a lot of traveling for holidays I’d overestimate what was possible during this timeframe.

For Hardcover we’re not setting quarterly goals, we’re setting a direction. We’ll continue working in that direction until things change – whether that takes 3 months or 6 months! We came up with a few topics that we want to focus on right now (in order).

#1. Increase the stability of the app

We want people to have a consistent and lovely experience without errors getting in the way. This task is all about making things more dependable. Many of the above things we’ve done (mobile fixes, error pages, server side rendering) go back to this. We have a metric for “% of sessions that didn’t encounter a JavaScript error” which started the month at 54% 😅 We’re trying to get this to 90%.

#2. Create an organized Librarian Program

There are two ways to edit book data on Hardcover. One way is to upgrade to a Supporter. The other way is to join the Librarian Program! Since opening the doors in May, we’ve welcomed over 20 librarians, and a lead Librarian.

But there’s still a lot we need to do. This focus is all about understanding and planning out what’s next: tools to manage the program, documentation, processes and more.

#3. Maximize Search Engine Potential

We have a LOT of pages, but so far we haven’t managed to attract much search engine traffic. One of the reasons for this was because our pages were loading soooo slowly. We’re working on improving our SEO in a few ways – most importantly by improving speed and improving content.

#4. Create the Hardcover Year in Books

I’m soooo excited about this one! Every year Letterboxd does a year in movies (ex: 2022). We’re working on something similar we’re calling the Year in Books! We’re still sketching this out right now, but I can’t wait to see it. It’ll be a time capsule of this year that we hope people will look back on to find great reads from the year that they might have missed. We’re aiming to launch this Christmas week.

#5. Create MVP of Discussions

If you’ve been following us the last few months, you’ve heard us mention discussions more than once. We’re getting close to starting on this, and hope to have an MVP out soon. Here’s a sneak peak from our current prototype:

This prototype is getting closer, but before we start coding it, we need your help! We’ve put together this feedback form which takes 10-15 minutes to complete and gives you a sneak peek at what we’re working on.

Give feedback on our Discussions Prototype

This discussions system is very ambitious. We’d love to hear what you think of it.

Behind the Scenes at Hardcover

After a busy August and September, October has felt relaxing in comparison 😅. There’s something calming about fixing bugs and making incremental changes.

Revenue-wise, we had our highest month yet following our launch! I’m excited that these numbers are getting closer to each other.

  • October Revenue: $414
  • October Expenses: -$1,264.05
  • October Profit: -$850

We also hit a new milestone: 4,000 members! We started 2023 with 1,300 members, and have more than doubled that in 10 months. If that trend continues we’re looking good to reach financial stability in the coming year. 🤞

From an expenses standpoint, just about everything is going to server costs. $450 to Heroku (database, app server), $350 to Algolia (search) and $120 to Hasura (api) are our largest expenses.

The optimizer in me knows we could move all of this to Google Cloud and we’d pay a little less. But that would take up time to maintain it. Having these services “just work” without me constantly needing to maintain them is worth every penny.

Featured Prompt for October 2023

Last months we made Prompts free for all members, and a bunch of fun ones were created! We’re working on ways to showcase these Prompts more broadly on the site, but for now the best way to see new them is on the Recent Prompts page.

We’re featuring two prompts this month!

November is Native American Heritage Month. In that spirit I’m going to read at leats one book by an indigenous author this month, and I’d challenge you to as well. If you’re looking for ideas, or have books you’d like to share your favorites, check out the Prompt What are your favorite books by Indigenous Authors? by @eske.addams.

The other featured prompt this month by @BookExplorer: What is the most unique or thought-provoking time travel book you’ve ever read?

Time travel is my all-time favorite genre. I love how it can fit nicely into so many other genres – science fiction, fantasy and romance – to name a few.

My wife and I had a whole discussion about what qualifies as a time travel book. If someone relives their own life is that time travel? If someone uses time dilation to travel a near light speed and speed up time, is that time travel? I’m curious to see what books other readers add.

Head over to this months prompt to upvote your favorites, find time travel books you might have missed and add your own favorites.

Last Months Prompt: What books had the best villain of all time?

Check out last months spooky prompt, if you’re still on the hunt for a good villain story. Stephen King managed to claim the top two spots with “It” and “The Stand”, followed by Agatha Christies “The Murder of Roger Ackroyd”.

What’s Popular on Hardcover?

Here’s a look at what was most read in the last month, and what readers are more looking forward to in November.

Most Read Books for October 2023

Project Hail Mary stayed at the #1 spot for another month! It’s one that I’ve seen constantly recommended on Reddit as well – and with good reason. It’s such a fun one that I want to re-read it. 😂

  1. Project Hail Mary by Andy Weir
  2. Babel, or The Necessity of Violence: An Arcane History of the Oxford Translators’ Revolution by R.F. Kuang
  3. Fourth Wing by Rebecca Yarros
  4. Tomorrow, and Tomorrow, and Tomorrow by Gabrielle Zevin
  5. Yellowface by R.F. Kuang

R.F Kuang, author of the amazing Poppy War fantasy series, claimed TWO spots in the top 5 – something no other author has done. I’ve loved how Babel & The Poppy War bring in cultural influences while challenging imperialism in a character-focused way. Yellowface is high up on my own list.

Fourth Wing came out earlier this year and quickly became a popular one on TikTok. I described it to my wife as “Harry Potter meets The Hunger Games with dragons and a dash of ACOTAR“. Amazon also picked up the rights to it, and is planning to turn it into a TV series.

Most Saved Books To Be Released in November 2023

Here are the books that the most people have marked as Want to Read that are set for release this month.

  1. System Collapse (#7 of 7 in The Murderbot Diaries) by Martha Wells
  2. Iron Flame (#2 of 2 in The Empyrean) by Rebecca Yarros
  3. Check & Mate by Ali Hazelwood
  4. The Olympian Affair (#2 of 2 in The Cinder Spires) by Jim Butcher
  5. Murtagh (#5 of 5 in The Inheritance Cycle) by Christopher Paolini

I have a feeling many people were reading Fourth Wing to prepare for Iron Flame which comes out on November 7th.

I can’t wait for next book The Murderbot Diaries. That series, about TV-obsessed killing machine trying to fit in with a crew in this futuristic science fiction managed to walk that line between cheeky humor and barely staying alive while floating through space.

Murtagh is a long-awaited 5th book in The Inheritance Cycle series, which you might recognize from it’s most popular entry: Eragon. The 4th book in the series came out in 2011, leaving a 12-year wait for this one. The reverence people speak about this series along makes me want to read it.

Spotlight of the Month: Shepard

I’m switching it up a little this month and sharing a link to another book site run by my friend Ben. Just today he launched a new part of his site, Shepard, where he asked a bunch of authors and people in the book space to list out their favorite three books they read in 2023.

I was fortunate to contribute with my own favorite reads! I had a lot of fun looking through my Read Airlist, filtering by rating and trying to decide what my favorite three of the year were. I landed on these three, that you can check out: Adam Fortuna’s 3 favorite reads in 2023.

Side note: Thanks to @farhan for recommending The Will of the Many!

You can also browse Shepards Best Books of 2023 list to see which books appeared on the most readers lists.

Demon Copperhead shows up as the most mentioned book. It’s also #43 on Hardcover’s Favorite Books of All Time right now.

Join us on Discord

The Hardcover Community isn’t just on the website – we’re also on Discord! If you’re not an expert in Discord, don’t worry – neither are we.

Join the over 500 of us to chat about books, hear about product updates, and be a part of the community.

Join the Hardcover Discord

Want to Support Hardcover?

Being a fledgling startup we can use all the help we can get! Whether that’s becoming a Supporter, sharing Hardcover with a friend, or just following along.

We appreciate you for reading and hope you have an amazing November. Talk to you soon. 🏔️

Categories
Articles Canonical

13 books for Halloween that you should read

During this eerie season, embrace the cozy embrace of a good book, savor a slice of pumpkin pie, or sip a latte, while you allow Halloween tales to send a spine-tingling shiver down your back.

Some believe that Halloween draws its inspiration from Samhain, the ancient Gaelic harvest festival, while others attribute its beginnings to the Christian holiday devoted to venerating saints, martyrs, and departed souls.

No matter the origin and customs, our book suggestions encompass a wide array of captivating themes, including witches, vampires, zombies, haunted houses, historical analysis, and engrossing Young Adult stories.

The Witches: Salem, 1692 by Stacy Schiff

In this book, Stacy Schiff juxtaposes fantasy and reality, so she can create the confusion and hysteria that engulfed the Salem witch trials.

 “Children were accused of witchcraft and ended up confessing to events that were no less convincing than a bedtime story.” Lara Feigel The Guardian book review

Vampires of El Norte by Isabel Cañas

1840 Mexico, vampires, historical fiction, and a bit of romance; in short the second horror novel of Isabel Cañas- writer of “The Hacienda”.

Poems Bewitched and Haunted by John Hollander

Penguin Random House describes the book as follows:

“A delightfully ghoulish array of specters and sorceresses, witches and ghosts, hags and apparitions haunt these pages — a literary parade of phantoms and shades to add to the revelry of All Hallow’s Eve.”

The Halloween Tree By Ray Bradbury

From the author “Fahrenheit 451”, we have a trip through time and space to discover the origin of Halloween.

“If you want to know what Halloween is, or if you simply want an eerie adventure, take this mystery history trip. You couldn’t ask for better than master fantasizer Ray Bradbury.” — The Boston Globe

The Haunting Season by Bridget Collins

If winter is your jam, this book — which features eight bestselling, award-winning authors, will bring you a collection of ghostly and gothic tales.

The Winter of the Witch by # Katherine Arden

The Winter of the Witch” is a historical fantasy novel, part of the “Winternight” trilogy. It’s a story set in medieval Russia, where firebirds, demons, and witchcraft coexist and battle for all the living souls.

The Witch A History of Fear, from Ancient Times to the Present by Ronald Hutton

If you want a well-researched history book about witches, then this book is the best choice. Ronald Hutton is a British historian and writer of the book “The Triumph of the Moon”— an important title for all those who are interested in Pagan Studies.

The Skull: A Tyrolean Folktale by Jon Klassen

Jon Klassen‘s illustrated stories are a good choice for curious kids. In this retelling of a Tyrolean folktale, a touching friendship between Otilla and a skull begins to form. But what will she do when she meets with the headless skeleton?

Necronomicon: The Best Weird Tales of H. P. Lovecraft

You cannot miss the horror and the spooky with a classic, H.P. Lovecraft. In the commemorative edition published by Gollancz and edited by Stephen Jones, you will have over 800 pages of horror, haunted houses, ruins, witches and their familiars, and, of course, his infamous Cthulhu mythos.

Coraline by Neil Gaiman

A dark fantasy horror children’s book written by the British writer Neil Gaiman. It was awarded the 2003 Hugo Award for Best Novella, the 2003 Nebula Award for Best Novel, and the 2002 Bram Stoker Award for Best Work for Young Readers.

The book has an adaptation for the film with the same name ( director Henry Selick), a graphic novel (adapted by P. Craig Russell, colored by Lovern Kindzierski), and a video game. A musical and an opera were also created. A great Halloween combination for the full evening.

Dracula by Bram Stoker

Published in 1897 as an epistolary novel, the novel is the iconic book of vampires, vampire hunters, and gothic stories. And, yes there is a Substack, called Dracula Daily, which will send you a newsletter every day when something happens to the characters.

Frankenstein by Mary Shelley

In 1816, Mary, Percy, John Polidori, and Lord Byron had a competition to see who wrote the best horror story. The result is, probably, one of the most influential novels and an archetype for the monster’s stories.

Rebecca by Daphne du Maurier

Another classic is the horror thriller “Rebecca” published in 1938. The novel follows an unnamed woman who marries a wealthy widower and then discovers that he and his house are haunted by his late wife’s spirit. The book was adapted for a play by du Maurier herself in 1939, a film by Alfred Hitchcock, in 1940, and Netflix in 2020.

You can find all the books in this list, and you can add them to your to-read lists.

Halloween can a a great way to meet with friends, neighbors, and family. Carve that pumpkin, go trick or treat and why not, have a read.

If you’ll have a bookish Halloween, tell us your choices in the comments.

Categories
Canonical Hardcover

Hardcover Report for October 2023

Hi book friends!

Usually, this blog post is our one time each month to reach out and let you know what’s happening. This month was a little bit different. 😅

We launched on ProductHunt on September 30th (after a bit of misstep on the launch initially). That meant a few more emails to get the word out. As someone who is very protective of my own time, I want to thank you for helping to get the word out about the launch and making it a success! 🥳

I constantly worry about annoying people by being too forward or annoying with marketing. It’s one of the reasons I’m a developer and not a great marketer. It’s something I’m trying to get better at. It helps to be working on something that has resonated so much with a wide audience.

After the big release in August, September felt almost quiet in comparison. I’ve found that when I push something past the finish line I need a little time to recover and clean things up. September was a great month for that – and we got to share Hardcover with a larger audience which was a bonus!

As a reminder, we do these updates every month – starting with June, July, August, and September of this year. We do these because we’re not a traditional startup. We’re a small group of passionate readers who want to share our excitement of books with the world.

What’s New On Hardcover?

For September our focus was on fixing bugs and doing minor improvements more so than major changes to the site.

As any creator knows, releasing something is only getting to the starting point. You need to market it, iterate based on what people think of it and create a consistent experience. We have some plans for the next major features, but before we start on that we’re focused on this iterate & improve phase.

📚 New Homepage

Last week, just before the launch, we updated our homepage! We wanted to make it much more clear what Hardcover is and who we’re for. My favorite new sections are the trending books, the new Book Drawer explanation, and showing a featured Prompt there.

💸 Migrated from Imgix to Imaginary for Images

We show a lot of images on Hardcover – covers and avatars being the most obvious. These images are shown in a number of sizes and shapes across the site.

We originally used Imgix with Google Cloud Storage to show these images. That worked great for about the first two years. Then they changed their pricing structure. Suddenly our $50/month bill grew to over $1,000 😱.

Even though we were only doing a few GB in bandwidth, the price exploded.

In September we rushed to switch to Imaginary, a self-hosted solution that’s saved us about $990/month. I wrote a blog post about our setup in case anyone wants to copy it and use it for their image resizing and hosting needs.

☀️ Book Drawer Light Mode

We’ve had a light mode and a dark mode since our earliest alpha versions, but the Book Drawer (what you see when you click the Book Button) was only in dark mode. We fixed it up to work in light mode as you’d expect.

✉️ Migrated Emails from SendGrid & Sendy to Loops

This is another backend change that most people won’t notice or care too much about. Previously we’ve used Sendy for sending out our newsletter. I still love it, and it’s without a doubt the cheapest way to send out a newsletter. We switched to Loops, and so far it’s been working great. It’ll be more expensive, but it’s less to worry about – and the entire team can use it rather than just me.

📈 Plausible Analytics and GDPR

When we started Hardcover we just used Google Analytics for tracking. I didn’t think too much of it, and I’d been using GA since they were called Urchin Tracker (that utm= you see in URLs is based on Urchin Tracking Module).

After listening to feedback from Hardcover readers about privacy, and realizing how much data Google Analytics gobbles up, we switched to Plausible Analytics. They’re a bootstrapped startup by two people – which is perfect. 😂

We also added a GDPR notice with the option to opt out of any cookies. We only have two cookies right now – one to track searches and one to track client-side bugs. You can opt out and we’ll still track those, but we won’t attribute them to your specific session.

📱 Updated iOS and Android Apps

You might’ve noticed we updated our logo this month and made a few other changes to the apps! They’re now live in the iOS store and Android store. Kudos to Ste for the new design that captures the feel of the previous one but improves on it.

Side note: there are two issues I’m working on fixing. On iOS the app often requires a restart to work and on Android, the “copy link” function doesn’t save the URL. We’ll have fixes for both soon.

What’s Coming Soon?

Now that the launch is out of the way, we can shift to a bit of maintenance and plan for the future. Rather than give a long list, I thought I’d give the top priority for both Ste and I this month.

Design: Discussions! We have a lot of plans for Discussions. The way they tie in with the site is what will make or break this feature. There’s a LOT still to plan here, but we’re getting close. I think we could finish design this month and start development of Discussions in November.

Development: Mostly bugs. Spending time working on bugs isn’t the most exciting thing, but it’s part of what helps a site survive and grow. I also want to work in two things this month: the ability to update your progress by page number/audiobook position & a way to link Discord with your Hardcover account and apply custom roles for supporters, librarians, and more.

Discussions 🔜

Last month I shared our pitch for what we want discussions to be. So far everyone who’s replied has said that this direction resonates with them. I’m going to repeat it this month in case you missed it. If you have any strong thoughts for or against this direction, I’d love to hear from you (you can reply to this email).

We’re creating discussion boards for every book, author, series, and character. Users can discuss each with text, quotes, links, and images. Each post has a title, like Reddit. Posts and comments can be liked, with popular ones rising to the top.

Discussions and comments can be linked to specific book sections (chapter, page #, etc). If you’re logged-in and haven’t read that far, we’ll blur spoilers.

You can reference other books, authors, series, characters, and readers. Each page has discussions for the topic and mentions from other discussions. (ex: a character page with all mentions of that character from other discussions).

Discussions can optionally be tagged. We don’t yet know what tags will emerge, but we can imagine ones like #question, #news, #review, #video, #audio or even book-specific tags like locations, or plot points. Discussions can be filtered by tag.

We’re still figuring out how discussions fit in the app’s feed, moderation, author involvement, private messaging, and highlighting discussions across the app.

Our vision for Discussions on Hardcover

We have a number of prototypes and questions we want to ask readers who care about community and discussions. Are you up for a 1-hour chat? Sign up for some time on my calendar!

No preparation is needed on your side. Just show up with an open mind. I’ll ask you some questions, share some prototypes and we can talk through them together to see what you like and don’t like.

Behind the Scenes at Hardcover

I’m very happy with how our launch went last month. We weren’t hoping to have a million users or suddenly hit profitability overnight. That might seem like a good thing, but if we were there today that would mean 10x more people mentioning every bug – and we don’t have the time to respond to everyone.

At our size today we can hear feedback and fix it ASAP before 100 other people experience the same issue. It’s a lovely place to be. With a little more polish we’ll be ready for even more readers.

Here’s a look at our revenue and spending last month:

  • September Revenue: $330! (our highest month yet! 😂)
  • September Expenses: -$1,726 (our highest month yet! 😭)
  • September Profit: -$1,396

The biggest expense was Imgix, which hit us for $500 before we migrated to a self-hosted solution. We also paid for a staging environment for our release, which ended up costing another $200. Here’s a breakdown of where this money is going:

  • $500 – Imgix: image hosting and resizing
  • $420 – Heroku: Ruby on Rails and database hosting for production & staging
  • $300 – Algolia: Our search provider. (side note: I know we could use ElasticSearch and it would be cheaper, but Algolia offers enough advantages that I think this is worth it).
  • $198 – Hasura: Our API wrapper. $99 for production and $99 for staging.
  • $59 for Noora (public roadmap and feature board), $49 for Loops (Email), $40 for Figma (design), $31 for Vercel (Next.js hosting), and $30 for Toggl (time tracking).

That covers everything about $30 this month. Next month should be at least $600 less without Imgix & Hasura staging. Our hope is to get this down under $1,000 a month.

Here’s our dashboard of where we’re at today! At a $1,000/month run rate, we’d need about 200 subscribers to break even. 171 to go. 😂

Featured Prompt for October 2023

Originally we created Prompts as a Supporter-only feature. After thinking about it more, we decided to make it free for everyone!

If you want to create a prompt, now you can! We’ve already had a few new ones (both created by @eske.addams) that I’m excited to explore:

Create a prompt and it might show up here next month!

Seeing as how it’s October and the start of spooky season we wanted to feature a prompt in keeping with that theme. Here’s the Prompt of the Month:

What books had the best villain of all time?

A good antagonist can mean a lot of things. It can be anything from realistic and relatable to pure evil. Some of the best villains are the ones that stick with us (and sometimes haunt our dreams). What villains do you remember as being true villains?

Answer this prompt, see the top answers, or upvote existing books that stand out.

Last Months Prompt

Check out the answers from last month’s prompt: What are your favorite adventure biographies? This one didn’t get enough votes to separate out the top answers. You can continue to vote on this one and the best will continue to rise to the top.

What’s Popular on Hardcover?

Here’s a look at what was most read in the last month, and what readers are more looking forward to in October.

Most Read Books for September 2023

This is based on books the most readers marked as completed between July 1, 2023, and October 1, 2023. You can now view these anytime on the new Trending Books page. Using three months gives more separation between these.

  1. Project Hail Mary by Andy Weir
  2. I’m Glad My Mom Died by Jennette McCurdy
  3. Legends & Lattes (Legends & Lattes #1) by Travis Baldree
  4. This is How You Lise the Time War by Amal El-Mohtar and Max Gladstone
  5. Tomorrow, and Tomorrow, and Tomorrow by Gabrielle Zevin

The trending books list has started become my reading list. It seems to capture the cultural zeitgeist of what people are constantly recommending on Reddit, TikTok and with their friends.

Some of these aren’t September-specific. In May of this year, Bigolas Dickolas, a fan account for the anime Trigun shot “This is How you Lose the Time War” into the mainstream after a viral Tweet.

I admit I’ve read it once and understood about 60% of it. Maybe with a reread I can make it to 80%. 😂

This trending page feels less like the best sellers list and more like “most viral” – which is itself a very exciting way to find fun books.

Most Saved Books To Be Released in October 2023

These are the books saved to the most people’s “want to read” lists that are set to be released in October 2023.

  1. Secret Project #4 by Brandon Sanderson
  2. Starling House by Alix E. Harrow
  3. Wildfire by Hannah Grace
  4. 10 Things That Never Happened by Alexis Hall
  5. The Jinn-Bot of Shantiport by Samit Basu

I’m super excited for Secret Project #4. If you’re unaware of the context, Brandon Sanderson ran a Kickstater for four books he wrote during lockdown. He raised $41 million – the largest amount of funding for a Kickstarter ever. The book does have an actual name, but I’m not sharing it here. That allows people to go into it completely blind – without any idea of which Sanderson world it slots into.

Community (& Team!) Spotlight: Jeff Sexton

Last month we put out a call for a Librarian position on the team. We were extremely fortunate to have a member of the Hardcover community, ARC reader and all-around-plugging-in person in the book industry join the team!

What’s your Hardcover username?

@BookAnonJeff

Tell us a little about yourself

I’m an avid reader that occasionally interrupts my reading with some gaming. I’ve read over 1100 books since becoming a book blogger a little over 5 yrs ago. As far as what I read and play, I’ll read almost anything (except swords and sorcery fantasy), but for video games I prefer a Mass Effect / Fallout / Starfield style game.

Where in the world do you live?

Jacksonville, FL

Why did you join Hardcover?

I was actively looking for alternatives to that big site in the space, and found this and a few others. Ultimately, this one had the best feature base that was trying to expand what book sites are capable of along with the most vocal and interactive development team.

Describe your ideal reading environment (place, time, lighting, anything that stands out)

For books, I can be almost anywhere in almost any situation. I actually have an album on Facebook dedicated to shots of me reading while traveling in various locales across the Southern US and Caribbean Sea region. For audiobooks, I like long drives and/ or long runs – the audiobooks help keep my mind engaged while I’m doing an otherwise mind-numbing task.

What are a few of your favorite books of all time?

Atlas Shrugged by Ayn Rand, Unity by Jeremy Robinson, The Postman by David Brin. (I actually have tattoos referencing all three of these.) Also Warrior Class by Dale Brown and The Veritas Conflict by Shaunti Feldhahn.

What books do you recommend the most often?

It really depends on what the person is asking for – I generally know of something near what anyone is asking for, no matter what specifics they want. And I generally recommend authors over specific books, so that the reader has several different options while knowing in general what they’re getting.

But specific books that come up most are Unity by Jeremy Robinson, Shuttle Houston by Paul Dye, Cobalt Red by Siddarth Kara, and The Rise Of The Warrior Cop by Radley Balko.

Who should follow you on Hardcover?

Everyone. I’m actually somewhat serious here – I can guarantee you that you’re going to find books recommended by me that you very likely won’t find almost anywhere else, as sometimes even on that other site I’m one of the single digit reviewers even years after publication.

Join us on Discord

The Hardcover Community isn’t just on the website – we’re also on Discord! If you’re not an expert in Discord, don’t worry – neither are we.

Join the over 500 of us to chat about books, hear about product updates, and be a part of the community.

Join the Hardcover Discord

Want to Support Hardcover?

Being a fledgling startup we can use all the help we can get! Whether that’s becoming a Supporter, sharing Hardcover with a friend, or just following along.

We appreciate you for reading and hope you have an amazing October. Talk to you soon. ☀️

Categories
Canonical

How We Reduced a $1,000/month Imgix Bill to $1 using Google Cloud

We store a LOT of images. Every single book has a cover image that we show and every reader has an avatar. With 800,000 books that’s already a massive amount of potential images – but it’s just the start.

For each book we have multiple covers. On Hardcover we use the term “Books” and “Editions”, where a Book has one or more Editions.

Each Edition represents a unique ISBN and release of the book. For a book that’s just released it might have a hardcover Edition, an audiobook Edition and a mass market paperback Edition. If it’s a worldwide release, it might have these in multiple languages.

For each of these Editions, we store multiple images of the cover. We save whatever we can find about this Edition from public sources – Google Books and OpenLibrary being our primary book sources so far.

Let’s think about The Hobbit. Released in 1937, we have 237 different editions of The Hobbit in our database. For each of those 237 we have zero or many cover images.

This means that for 800,000 books we might have 25,000,000 editions, and potentially 50,000,000 images.

We don’t have anywhere near that many yet. I ran a quick check to see our current image count (commas added for emphasis).

irb(main):001:0> Image.count
=> 1,206,455Code language: PHP (php)

So, we have about 1.2 million images. Considering we have about 3,000 users, that’s a lot of covers. 😂

In our case we only store the original image file and not the resized versions.

Oh right, resized versions!

For each cover, we show it in different sizes across Hardcover. On the primary book page we show the largest version of the cover. When showing it on an Airlist, we allow readers to set their own size. Elsewhere we use the size of the parent component.

In our codebase we call these sizes xs, sm, md, and lg. Having these sizes hardcoded means we have a limited number of potential sizes.

But, unfortunately, that’s not all!

Covers aren’t uniform in their height and width. Audiobook covers, for example, are usually square. On our new Book pages, we decided to make the covers we show uniform there. We think this makes those pages look much better than if every cover was a different size.

However there are times when we want the cover to be displayed in it’s original proportions. Sometimes we still want a uniform height or width with those proportions. So solve this, we added an option to stretch covers by x or y. This raised the number of potential images from 4 (xs to lg), to 12 (xs to lg in both x and y).

Oh if it was only 12 sizes. It turns out that mobile devices have different pixel density. Due to this, you wouldn’t want to show a 100w by 150h image on a phone. You’d actually want to show a 200w by 300h image, but in a 100w x 150h space. The quality goes up but the space stays the same. In other words, we need a 2x version of every image.

So now we’re up to 24 versions of every image. 🤯

Resizing 1.2 million images 24 times wouldn’t be great. If we decided we needed to change the sizes later on we’d have to resize every single one of them just to get things working.

On Demand Image Resizing

When I started working on Hardcover I knew this would be an issue. Our backend is in Ruby on Rails, and it would be easy enough to use MiniMagick to resize each image into each proportion and store those on Google Cloud (where we store the original images).

Resizing isn’t the issue. It’s being confident that we have all image sizes accounted for (and we’re not even talking about the profile avatar image sizes).

After some research initially, the two biggest platforms for on-demand image resizing are Cloudinary and Imgix.

Both allow you to throw your original images behind a CDN that handles all resizing using URLs.

For example, if you wanted to get a version of an image that’s 700px wide, we could make a request to https://hardcover.imgix.net/images/logos/hardcover-logo-with-text.png?w=700.

Adding a fm=webp can further reduce the image size and make Google Page Speed a little happier.

Pricing for Cloudinary and Imgix is not straightforward.

Cloudinary

Cloudinary uses a credit system where you “spend” credits. On a $224/month plan that would give us 600k transformations or 600GB storage or 600GB bandwidth. With 1.2 million images resized 24 times, that’s 28.8m transformations, or about $10k/month – 47x their highest plan (if I understand it correctly).

Imgix is better. When we joined their pricing was entirely based on bandwidth. As a small startup our bandwidth was almost nothing! For two years we paid $50/month. It was great.

Imgix

Earlier this year Imgix changed their pricing to be based on the number of origin images you use in a given month. Their highest plan (before the dreaded “Call for pricing” tier) capped out at 50,000 origin images for $500/month.

I was so focused on Hardcover’s last big release that I missed this detail. Before I knew it we were drastically over their highest pricing tier.

This means that for August 116,735 different origin images were requested with a total of 277,641 different versions of those images. At Imgix’s current pricing that would be about $1,116/month.

Considering that Hardcover’s entire monthly spend is under $1,000, this would more than double our monthly spend. We’re not yet profitable, so this would be more money coming out of my pocket to keep things running.

That was enough incentive to find an alternative.

Imgix and Cloudinary Alternatives

When we started looking around for alternatives I originally hoped to find a drop in replacement. Something where we could change our URLs and they’d still be backed by our original images with transformations.

Imagekit looked promising, but after reading all the fine print we were still looking at $500 minumum.

With hosted solutions exhausted, we turned to open source. Full disclosure here: I’m not great at Devops. I don’t enjoy the details of hosting, which is why I rely on Vercel, Heroku and Hasura to keep Hardcover running. The thought of being on the hook for this image service gave me instant anxiety.

After searching a while I found Imagor, a Go-based image processing server. It seemed great! After digging more into it, I liked how it had an “in” bucket and an “out” bucket where it stored the resized images.

Unfortunately getting it setup with a plugin to support Google Cloud wasn’t straightforward. When looking for a Docker setup, I stumbled on this Hacker News Thread about it that mentioned Imaginary – another Go-based Image processing server. And the best part: Imaginary had a link to run it right on Google Cloud Run!

Hosting Imaginary on Google Cloud Run

I had no idea what Google Cloud Run was, but that seemed like a good thing.

It turns out there are three main ways to run a dockerized application on Google Cloud Platform: Compute Engine, Kubernetes Engine and Cloud Run.

Think of Cloud Run as a quick way to startup something which can be serverless. There’s even an option of Autoscale! We can scale Imaginary down to zero when it’s not needed or up to 5 (say, if we changed our image size and it needed to do a lot of resizing).

It took me about two days to get the settings right in Google Cloud for Imaginary, so I’m going to share the full setting here in the hope that it helps someone else. Just scroll on by if you don’t need it.

Some things to point out from this configuration:

  • Aside from setting the port as 8080 you don’t need to do any other port proxying.
  • Wrap container arguments with a space in them with single quotes. If you don’t nothing will work. ( Figuring this out required starting a docker container and experimenting until it worked 😭 ).
  • That’s it. Those are the two main issues.

With this one change we had a new URL, https://imaginary-hcgk56u3uq-uc.a.run.app that we could use to resize images. We could switch off Imgix and use it!

But we quickly noticed a problem. Each image request took about 500ms. Imgix was responding in 40ms!

It turns out that Imaginary was fetching the image from our Google Bucket, resizing it and streaming the response for every single image. Nothing was cached, so every request required a full server request and internal network requests to complete.

Add a Content Delivery Network

Chances are you know what we need to solve this: a CDN. By adding a CDN in front of these requests, we can control the caching and serve images from a server that’s geographically close to our users.

The CDN I’ve used the most is Amazon’s CloudFront. In an effort to switch, I started looking into Google’s CDN options.

To a GCP practitioner I’m sure the tools make a lot of sense. To someone completely unfamiliar with the interface it took a lot of experimentation to figure out what I needed to do.

The process of setting up the CDN ended up taking me an entire day. If I knew then what I know now it’d take about an 15 minutes.

Here’s a walkthrough of the different pieces you’ll need to create to make this work:

Create a Load Balancer

Create a load balancer and set it to “Application Load Balancer (HTTP/S)”. Set “Internet facing or internal only” to “From Internet to my VMs or server less services” and “Global or Regional” to “Classic Application Load Balancer”.

Set the front-end to “HTTPS” and create a new IP address. For this you’ll need to create an SLL policy and set the URL that you’ll use. In our case, we added “cdn.hardcover.app” as the URL associated with that IP address, and Google generated a certificate for that URL.

The back-end part gave me the most trouble. I thought I’d just be able to add a URL as the backend like with CloudFront. I tried that approach but couldn’t get it to work.

When you create a new backend you can select a “Backend Type” of “Serverless network endpoint group” and then “Create Serverless network endpoint group” and set then select Google Run and your Imaginary service.

Here’s something that I struggled with: you can create a CDN and have it create a load balancer, or you can create a load balancer and have it create a CDN. When I created the CDN and had it create the load balancer it didn’t associate with a backend service. I had to create a load balancer and then select the checkbox for “Enable Cloud CDN”.

Imaginary doesn’t add any cache headers, so we needed the CDN to tack on some cache headers. We can set this here from the “Backend Configuration” under “Load Balancer”. I initially set this to 30 days, but Google Pagespeed Index recommended extend this out. We now have this as 6 months. These images never change so this works for us.

To recap, you’ll need the following parts setup:

  • Google IP addresses: A dedicated IP address with a host certificate under your domain. For this, you’ll need to verify you own the domain and add some DNS settings to your DNS provider (CloudFlare in our case).
  • Google Cloud Run: This is the service that will run Imaginary.
  • Google Load Balancing: Two balancers with one redirecting http to https, and another sitting in front of Cloud Run with a CDN.
  • Google Cloud CDN: with a backend set as the Cloud Run service.

Whew, that’s a lot to setup! On the bright side you don’t need to write a single line of code, or edit a single file. It’s 100% configuration you’re able to do from the Google Cloud Console.

The end result of this? Let’s go back to The Hobbit and check it out.

Every one of these images is using Google CDN backed by a load balancer and Google Run. The result? 30ms to 50ms per image! Each one of these is cached for 6 months, so every other request by other readers will be just as quick!

How Much Does this Cost to Run?

The cost of this for our small site is almost entirely on the networking side.

When I break this down by service so far, here’s how much we’ve spent so far in September since we launched this:

  • Google Run (not shown): $0 → $0.38 😂 (
  • Google Cloud Storage (red or dark orange): $15.54 → $25.82
  • Networking (blue): $0 → $11.20

The networking cost was a surprise to me here. I knew the load balancer and the CDN wouldn’t be free, but I still expected Cloud Run to cost more. When I looked into more, the $11.20/month networking cost is broken down as “Cloud Load Balancing Forwarding Rule Minimum Global” ($6.12) and “Networking Cloud Armor *” ($5) and Google CDN ($0.17).

So it turns out resizing and serving the images costs roughly $1 a month! Adding a load balancer in front is what actually costs money.

I’m still trying to figure out how to setup the CDN without the load balancer. If you’re more experience in Google Cloud than I am (which isn’t a high bar), I’d love to get your thoughts on how we could improve this. Join the #development channel on the Hardcover Discord and let me know.

Categories
Canonical Hardcover

Hardcover Report for September 2023

Hi book friends! This September has been one of the most exciting months for us since starting Hardcover. After four very long months working on a refresh, we released a major update!

This update touches every single page of the website and the app – making it more usable, quicker, and just more fun to browse.

Being more fun is difficult to quantify. When Ste and I were browsing the site on staging we both had moments where we realized we were just enjoying browsing around – hoping between books, prompts and lists and finding new books.

It’s hard to replicate the enjoyment of browsing a bookstore or a library, but that’s one of our goals. We’re trying to reproduce the fun of going from shelf to shelf looking for new books, reading staff picks, and recognizing familiar titles. This release is our first real attempt at that.

I’ll recap some of the highlights of this release here, but you can see a full breakdown in our recent blog post.

As a reminder, we do these updates every month – starting with June, July and August of this year. We do these because we’re not a traditional startup. We’re a small group of passionate readers who want to share our excitement of books with the world.

What’s New On Hardcover?

So much. Here’s a quick rundown of new features with a few images.

🔍 New Search!

This new search is suuuuper speedy. It searches books by title, author names, series names, alternative titles (like “Philosopher’s Stone” vs. “Sorcerer’s Stone”), and even the most common ISBNs for each book.

📚 New Book Page

In our Discord we built much of this page in public – sharing prototypes and iterating based on what people thought. The end result is an absolutely beautiful, useful page that captures information about the book and community sentiment in a way I’ve never seen on any other book site or app.

📈 Trending Books

One of my favorite additions is the new Trending Books page. It highlights which books the community has read the most over the last 3 months, 12 months, or all time. My TBR list has already exploded since using this. 😅

🧙‍♀️ Readers and Supporters Page

Looking for book friends? You can use the new Readers & Supporters Page to find readers. Try sorting by “similarity %” to find readers with tastes more similar to you. You can become a supporter to be featured on the supporters page.

That’s Just the Start!

There were too many updates to highlight everything. A few others include:

  • Improved book button and book drawer for setting dates read, adding books to lists, changing your status and more.
  • Removed the Book Review modal and moved it to a new page.
  • Ability to set an edition for each read-through.
  • Reimagined Prompts making it easier to upvote and add books.
  • Ability to pin prompts and lists to your profile
  • Public GraphQL API
  • JSON Data export
  • A new page with all of your book reviews within your profile
  • Beautiful social images for books, reviews, and prompts.
  • Updated profile pages with your most common genre as a header image.
  • Ability to generate a referral link for any page (you’ll earn a month as a supporter if you refer two friends).

There are other updates I’m skipping over, but those are the highlights. For the last 4 months, we’ve been working on this just about every day. We’re attempting to build the book website that we’d want to exist in the world – which is absolutely a blast to work on.

What’s Coming Soon?

Any release of this size has some cleanup that comes first. While we’re researching the next big project (Discussions), we have a loooong backlog of bugs to fix with this new release. We’re making progress though! The most annoying bugs are being fixed first. We’re currently working on a weird iOS bug that occasionally requires a restart.

Aside from that we also want to spend some time getting our costs under control. We’ve managed to spend quite a bit more money this last month than usual, which isn’t sustainable (unless I get a job to support Hardcover). Instead, we’re going to spend some time optimizing the services we use and get some of them under control. Not the most exciting thing to work on, but it’s by being a lean, fast-moving team that we’ll be able to survive long enough to grow into what we know we could become with your help.

Discussions 🔜

Last month we mentioned we were starting research on Discussions. After talking with a few readers we’ve started zoning in on how this will work.

Here’s the pitch based on what we’re planning right now:

We’re creating discussion boards for every book, author, series, and character. Users can discuss each with text, quotes, links, and images. Each post has a title, like Reddit. Posts and comments can be liked, with popular ones rising to the top.

Discussions and comments can be linked to specific book sections (chapter, page #, etc). If you’re logged-in and haven’t read that far, we’ll blur spoilers.

You can reference other books, authors, series, characters, and readers. Each page has discussions for the topic and mentions from other discussions. (ex: a character page with all mentions of that character from other discussions).

Discussions can optionally be tagged. We don’t yet know what tags will emerge, but we can imagine ones like #question, #news, #review, #video, #audio or even book-specific tags like locations, or plot points. Discussions can be filtered by tag.

We’re still figuring out how discussions fit in the app’s feed, moderation, author involvement, private messaging, and highlighting discussions across the app.

Our vision for Discussions on Hardcover

Whew, that’s a lot. We’re trying to make discussions more into a book club than another social media that you feel you need to continuously post on. If you’re reading a book and want to participate in a community around it, we want to have one that’s ready for you to join on your schedule.

This is leaning more towards Reddit (Topic-focused) than Twitter/Facebook/Instagram (Individual-focused).

That’s the plan right now at least. We still have a lot to figure out, but having a vision helps – both for us to focus and to discuss with you’ll.

With that in mind, I’d love to hear your feedback on this. Do you like this direction? Would you prefer something different?

We have a number of prototypes and questions we want to ask readers who care about community and discussions. Are you up for a 1-hour chat? Sign up for some time to chat!

No preparation is needed on your side. Just show up with an open mind. I’ll ask you some questions, share some prototypes and we can talk through them together to see what you like and don’t like.

It’ll be a fun chat about books and discussions. If you enjoy discussions online – whether you’re posting or just reading – please sign up for an hour chat. If none of the times work for you, please email me (adam at hardcover.app ) and we can figure something out.

Behind the Scenes at Hardcover

Something that’s always fascinated me about projects I follow, specifically bootstrapped ones, is how the business is doing. Are they making loads of money? Or are they going to go out of business tomorrow? For us, the answer to both is the same: no. 😅

  • August Revenue: $212! (our highest month yet!)
  • August Expenses: -$970.43
  • August Profit: -$782.42

Our revenue is entirely from members upgrading to Supporters. We don’t sell data or have ads. Hardcover is a community project and we want to create it for the community. Once we have more traffic we’ll add affiliate links to purchase books, but that wouldn’t move the needle on revenue much at our current traffic.

Featured Prompt for September 2023

Prompts are polls that Supporters can create, and anyone with an account can vote on. Think of Reddit’s “Suggest Me a Book” subreddit. Each month we’re featuring one prompt of the month. The more answers the better! This month’s prompt is one of my favorite

What are your favorite adventure biographies?

Even before fantasy and science fiction were genres we had adventure biographies. Travelers would journey into the unknown and share their heroic tale with the world (or someone else would in some cases). Whether you’ve experienced a call to adventure or prefer to read tales from others, what adventure biographies have stuck with you?

Answer this prompt, see the top answers, or upvote existing books that stand out.

Last Months Prompt

Check out the answers from last month’s prompt: Favorite Space Opera Books. The top 5 most voted books are all bangers.

This a genre I absolutely love, and would highly recommend each of these. Red Rising reminds me of The Hunger Games meets Enders Game and I couldn’t put it down.

What’s Popular on Hardcover?

Here’s a look at what was most read in the last month, and what readers are more looking forward to in September.

Most Read Books for August 2023

This is based on books the most readers marked as completed between June 1, 2023, and September 1, 2023. You can now view these anytime on the new Trending Books page. Using three months gives more separation between these.

  1. Legends & Lattes (Legends & Lattes #1) by Travis Baldree
  2. Project Hail Mary by Andy Weir
  3. A Psalm for the Wild-Built by Becky Chambers (#1 in Monk & Robot)
  4. The Three-Body Problem by Cixin Liu (#1 in Remembrance of Earth’s Past)
  5. Tomorrow, and Tomorrow, and Tomorrow by Gabrielle Zevin

This is the second month Legends & Latte’s has been in the top spot. In it, Viv, an orc barbarian, cashes out after a life as a warrior and decides to open a coffee shop. It’s filled with heartwarming characters, a desire to change one’s place in life, and of course cinnamon buns. It’s such a fun lighthearted read – I’d absolutely recommend it.

I haven’t read anything by Becky Chambers, but The Long Way to a Small, Angry Planet is high on my list to read. I learned about it while building the Science Fiction & Fantasy flow chart and it’s been on my list ever since.

Most Saved Books To Be Released in September 2023

These are the books saved to the most people’s “want to read” lists that are set to be released in September 2023.

  1. A Study in Drowning by Ava Reid (also wrote: The Wolf and the Woodsman)
  2. A Curse for True Love by Stephanie Garber (Once Upon a Broken Heart, #3)
  3. The Last Devil to Die (Thursday Murder Club, #4)
  4. Starter Villain by John Scalzi (Old Mans War, Redshirts)
  5. Fly with Me by Andie Burke

Want to Join the Hardcover Team?

As we’ve started to grow more and more we’re realizing one big missing piece: a head librarian!

Our current team includes me (developer + product), Ste (designer + product), and Daniel (marketing + community). We have a lot of work to do on the book data side. Much of that we hope will be done programmatically, but nothing can substitute for an organized reader who can’t wait to share their love of books with the world.

We’re hoping to bring a new team member part-time to the team. Although we’re not making money (or receiving funding), this would be an equity position, earning equity at the same pace as all other team members using the slicing pie method. (tl;dr: Instead of saying “you get x% of the company”, everyone earns equity for every minute they work).

Here’s a little bit more of what we’re looking for:

  • An avid reader who wants to be on top of what’s popular, exciting, and interesting in the book community.
  • Organized with a high attention to detail. You’ll be setting standards for what shows up on Hardcover for books, authors, series, and more.
  • Able to join the team every other week for live video calls where we decide what to focus on as a group.
  • Able to use Discord to keep in touch.
  • Can write useful documentation for other librarians and readers.
  • Eventually can lead librarian calls with volunteer librarians to align them with your vision of book data on Hardcover.
  • Up for joining for the long term! We want someone who can grow with us and (eventually) join as a paid team member (if we can get there together as a group 🤞).

We see this as a core team member that we’re finally ready for. If this sounds exciting to you, please reach out to adam at hardcover.app with a link to your Hardcover profile, some professional information (LinkedIn or resume), and a bit about why you’d like to join the team.

Join us on Discord

The Hardcover Community isn’t just on the website – we’re also on Discord! If you’re not an expert in Discord, don’t worry – neither are we.

Join the over 400 of us to chat about books, hear about product updates, and be a part of the community.

Join the Hardcover Discord

Want to Support Hardcover?

Being a fledgling startup we can use all the help we can get! Whether that’s becoming a Supporter, sharing Hardcover with a friend, or just following along.

We appreciate you for reading and hope you have an amazing September. Talk to you soon. ☀️

Categories
Canonical Hardcover

Our Biggest Release Yet! Hardcover v2

Apologies for the clickbait title. For the last 4 months we’ve been in a cave working on a new version of Hardcover. This new version is based on hundreds of user interviews and everything we’ve learned up to this point. On Tuesday, August 15th we finally released it! 🥳 🚀

As a software developer there are a few pieces of advice that are fairly common: don’t try to do too much in one release, don’t use cutting edge technology before it’s battle tested and keep your releases small & consistent.

We decided to ignore all of these and rebuilt the entire front-end interface and mobile apps based on everything we’d learned up until this point (!).

During these 4 months I’ve been actively using the new site every day. This constant usage has helped refine it to create something that I’d want to use. If something was difficult I’d iterate on it with Ste (and the Hardcover Discord) until it was both useful and beautiful.

This release includes bug fixes, new features and improvements to existing ones. I’m going to do a quick tl;dr of what’s changed, then jump into some specifics.

Improvements:

  • Entirely new search experience! Prompts and Bookle also use this new search.
  • Completely revamped book page designed around what readers want to see when researching a book.
  • Improved book button and book drawer for setting dates read, adding books to lists, changing your status and more.
  • Removed the Book Review modal and moved it to a new page.
  • Various user experience improvements and faster page loads.
  • Reimagined Prompts making it easier to upvote and add books.

New features:

  • Ability to set edition for each read through.
  • Ability to pin prompts and lists to your profile
  • New Trending Books page (3 months, 1 year, all time)
  • Public GraphQL API
  • JSON Data export
  • New your book reviews page within your profile
  • Beautiful social images for books, reviews and prompts

Whew, that’s a lot. Let’s talk through the top 5 most exciting ones.

🔍 New Search

The most requested feature on our roadmap was the “ability to search by author”. In many cases it’s just easier to include the author name to filter results. On top of that you can search by series, ISBN, and even alternative titles. For example, searching “cosmere” brings up just about every Brandon Sanderson book.

If you know you want to save this book for later, it’s only a another click.

Up until recently we had a search field in the top navbar that would autocomplete on top of the rest of the page. It worked, but we thought we could do better. Back in May Ste and I discussed a few ideas for how a new search could work. We experimented with using a modal instead of a dropdown. At this point people are used to looking in the top bar for search, so we wanted to keep that familiar association going.

The new search is also completely accessible using the keyboard. Try this out on this page:

  • ⌘K (or Ctrl + K on windows)
  • Start typing a book title, author name or series name
  • Use the ↑ and ↓ arrows to select a book.
  • You can hit enter to go to that book, or ESC to close the modal.

If you spot duplicate books in search results you can help us out by reporting them as duplicates from the book page (available if you’re logged in). As more readers join Hardcover our book data will only improve!

📚 New Book Page

Once you’ve searched for a book, what’s the next step? Deciding if you want to read it.

That’s the focus of the new book page: give you all of the information we can in order to help you make that important decision.

When we talked to readers about what they want to see, specific features kept coming up.

Readers wanted to know more about the high level book info – year, pages, genre, author. They wanted to know genres, moods, content warnings. They wanted a description about of the book without spoilers.

But one thing stood out: they wanted to know what others thought about this book.

The first way we’re tackling this is through Your Network. Here we show what readers you follow think of this book. This will show if they’ve rated it, reviewed it or if they want to read it later on.

We’ll also show ratings from readers with taste most similar to you who also read this book. Even if you’re not following anyone you’ll still be able to get a feel of what real readers with similar tastes thought.

One of my favorite additions to the book page is showing Prompts! Prompts are book polls where readers can upvote books they feel answer the prompt.

Looking at a book and seeing which prompts other readers feel it belongs helps understand the vibe of the book in a way nothing else can. I can’t wait to see how this evolves with more e

📈 Trending Books

Exploring to find great books is one of the most fun experiences when done right. It can mean walking down a library shelf and stumbling upon something you might have missed. Or walking through a bookstore and looking over staff picks.

Side note: I just started reading Legends & Lattes today after seeing it here. I’m only 25% of the way through, but it’s just the lighthearted fun I needed.

Trending books are based on how many readers marked that book as “Read” during the given timeframe. This page is updated daily.

This page reminds me of Nintendo Powers most popular games in a given month. I can’t wait to find more new books from here.

🧙‍♀️ Readers & Supporters Page

Just by browsing books on you’ll likely find readers with similar taste in books as you. But if you’re on the lookout to make new book friends the Readers page is the place to go.

Sorting this list by “Similarity %” will show you other readers who rate books the same as you do. I’ve found a bunch of people to follow from here.

✏️ Your Reviews

Writing good reviews takes a lot of time. We wanted to showcase your reviews on your new Reviews page!

This page does exactly what you’d expect – with some options for sorting.

This is one of those no brainer features that we finally got around to adding.

Your Review, Sharable

I’ve always loved sharing my reviews on social media, or sending them to friends. When I do this on some other big platforms I just see information about the platform itself.

When you share a link to a Hardcover review (like this one), here’s what your friends will see.

This is so much more exciting than a default graphic. The colors of the background are determined by the colors from the book.

I can’t wait to see people sharing these. If you do tag us on whatever platform you’re on so we can see!

Just The Start

These are some of my favorite things, but they’re just the beginning. Every single page on Hardcover was updated for this release.

Any update of this size is sure to have it’s issue. If you spot something off on Hardcover, please let us know. Either email jules@hardcover.app, or add a message to the #bugs channel on Discord.

Categories
Articles Hardcover

An interview with Britt Joiner and her new book about Trello

We, here at Hardcover, always love a good book. And when that book is written by one of our community members, that’s even better.
Because the community is one of the things that pushed us to experiment, innovate, and, in the end, do better.

That is the case with Britt and her book about being productive in Trello. She has over a decade of Trello experience, and she is an active member of the Atlassian Community, sharing her experience and knowledge on how to maximize Trello’s features and boost your productivity.

We asked Britt about her writing process, fun moments, and challenges encountered during the book writing.

How did everything start? Why Trello?

I’ve been obsessed with Trello for years… I started using it at a company I worked at in college, and then after college, I started using it to organise my personal life and side projects, and from there I just got more obsessed.

It’s a wonderful tool that lets me take everything that’s in my head and organize it nicely into boxes, so I don’t forget about it and can act on it when I need to while collaborating with others!

Several years ago, I started offering Trello consulting and participating as an active member of the Atlassian Community and contributor to the Trello blog. In the last year and a half, I’ve focused on growing my personal brand by creating a weekly newsletter and a plethora of videos on my YouTube channel about Trello. That’s what led to Packt asking me to write a book about all my Trello knowledge!

What was your process? Did you dedicate hours or days to it? Or it was more organic? Did you use dedicated tools (like Ulysses, Obsidian, and IAWriter) or just the common Word?

I work full-time as Head of Developer Relations at PixieBrix, so writing the book was very much just another side project for me. But it did force me to put on pause all my other side projects! Countless hours went into writing, editing, reviewing, editing some more, reviewing again, proofing, fixing screenshots, confirming information, collaborating with my publisher and technical reviewers, etc.

Most of my nonwork time went toward writing the book. For the most part, I was submitting a new chapter every two weeks, and in between that doing reviews and edits on previous chapters as they moved through the process.

I used Trello (shocker) to manage my process and keep track of where each chapter was at, and detailed checklists for myself to go through before submitting a chapter. It’s a lot just to dump content, but then you’ve gotta fix it up, and it’s easy for it to all sound “right”. My writing drastically improved after I implemented a checklist to make sure I put things in the right case, explained “why” for each concept, and make sure that I referenced items consistently (i.e., calling it the Power-Up Directory every time I mentioned it instead of sometimes saying Power-Up Marketplace).

I did most of my writing in Sharepoint. Ugh. Just because that’s what my publisher needed it in, and I found it a pain to copy and paste screenshots from other tools. Although occasionally, I would draft in IAWriter just to get my outline and content out there and then add screenshots later.

What challenges did you encounter while writing, and researching the book?

I found that as much as I love talking about Trello, it is a GRIND to write about it. Especially over 300 pages worth. It was really difficult to get started… that blank chapter was always the worst place to be, and the outline and first paragraph were always the hardest.

I found that chunking it and just trying to write small sections at a time would sometimes work, but often I would get into a zone and just keep churning through.

The other tough part was managing the feedback. Not because it was hurtful, but just because it was often conflicting! My publisher would say “This is too long, and we need to cut it down”, and then one of my reviewers would say “Can you go into more detail about this?”.
Or one person would say “This needs to be explained in more detail, show the steps you’d take to do this.” and someone else would say “This is too in the weeds, just explain why they should do this and don’t get too granular in the steps”. And trying to decide what to do with all of that was extremely tough. But in the end, I do think it helped me write the best book because I was able to incorporate so many perspectives and points of view into it.

What role did the Hardcover app and its community play in your process?

I used to have reading comprehension issues, but in late high school, I got much better at reading and learned that I love non-fiction books. It’s funny because most people prefer fiction books, but actually, I get much more into non-fiction books.
I initially used Goodreads to keep track of all my reads, but I always had on my to-do list one day to build a better Goodreads. When I saw Adam wanted to do that, I was thrilled to join in on the mission, and I helped the team for a good bit with some development work! I had to back away because of time constraints (I have too many side projects haha), but I’m still a huge fan of the community and a heavy user of the app. I’m looking forward to using it to connect with more readers of my book!

Any advice for future writers?

If I can do it, anyone can. Seriously. And while anyone can self-write and self-publish these days, I think it’s actually more fun to have a publisher because having someone keep me accountable and set up deadlines and just keep things moving along was helpful for me.

Share any fun situations that happen during writing.

My animals have no concept of personal space, and they were very involved in the writing process, from snuggling next to me on the couch while writing, to climbing over my keyboard….

You can also check through this video I made. I explain some more stuff: I just wrote a book about Trello.

You can find Britt on YouTube or you can subscribe to her newsletter, and you can find the book here.

Categories
Canonical

Hardcover Report for August 2023

Hi book friends, it’s August! The year is more than half over and the year seems to be flying by. As someone living in 100°+ F weather, I can’t wait for things to cool down so I can bring a book to the park and find a tree to read under (without being drenched in sweat).

July ended up being a huge month for Hardcover behind the scenes that we’re excited to share with you’ll.

As a reminder, we do these updates every month – starting with June and July of this year. We do these because we’re not a traditional startup. We’re a small group of passionate readers who want to share our excitement with the world.

So what is it that we’re most excited about right now?

What’s New On Hardcover in August?

We’re getting close to releasing a major Hardcover update that improves everything from search to performance, to user interface and everything in between. There isn’t a page on the site that hasn’t been touched in some way by this update.

If you’re a developer or someone who’s worked on the web, you know how daunting this kind of update can be. It’s so wide-ranging that we’re testing everything along the way. That includes testing on staging, and verifying things work well in both light mode and dark mode and on desktop and mobile.

It’s a huge task, but it’s the right time for it. As we’ve received more and more feedback about certain parts of the site, we’re improving what we can in one big release. This won’t solve every bug or add every missing feature, but it’ll be a great step forward.

If you’re on the Hardcover Discord, you may have seen some of these screens we’ve been working on.

Here are a few updates that we’re releasing this month.

The New Book Page!

Side note: genres, moods, and content warnings can all be marked as “spoilers”. We blur all content warnings as spoilers as well as any moods and genres that have a “spoiler score” above a certain point.

We initially planned to release search and the new book page separately. The more we started using search the more we realized we absolutely needed to update the book page too.

Also, that cover image? 😍 We’re planning to show different cover images based on the genre of a book. For some popular books (or authors who join Hardcover), we can also create some custom images. This process will be manual for now, but we have a few ideas on how to do more.

Another area we’re updating is how we show lists of books (what we’re calling Book Groups internally – original, I know 😂). This new approach works for series, prompts, lists, books by status, or any group of books. This is specifically for when we need to show an abbreviated list from a larger group. These are different from Airlists, which are for when you want to dig deep. Book Groups are the preview.

If you’re logged in we’ll also mark which books you’ve read (the little green checkmark). If you hover over a book you can interact with it right from this page too.

Side note: “The Way of Kings” by Brandon Sanderson was #1 for the prompt “What are your favorite books of all time” when I took this screenshot. Since then The Lord of the Rings has taken over the top spot.

One of the parts of the book page that I’m most excited about is personalization. Part of a social book app is being able to easily see what your friends think of a book. Soon we’ll show this on the book page if you’re logged in.

Not everyone follows other readers, and that’s OK! We have you covered with our Reader Similarity Score. With that, we can show you ratings and reviews by readers with similar taste based on both your reading histories. If you look over those readers and see a lot of 5⭐ ratings, that’s a very positive sign that you’ll enjoy it too.

I’m incredibly excited about this new book page. We think it’s going to be one of, if not the best, best book page anywhere on the internet.

But it’s still missing one important part: Discussions.

What’s Coming Soon?

When planning out what we work on, we always try to figure out what the next big project will be. After the current round of updates, our eyes are set on figuring out what book discussions look like on Hardcover.

This last week Molly Templeton from Tor wrote an excellent article that hits on this subject: What Do We Want From the Bookish Internet? This paragraph specifically resonated with me:

Goodreads is incredibly broken, and I don’t know that any site built on star reviews can ever truly be a place for community. Twitter is a hot mess. Bluesky is invite-only and taking its sweet time and not without major flaws. So many other would-be replacements have already crashed and burned. Storygraph seems cool but what I want is not a list function or a tracking function. What I want is an ongoing, massive, sprawling conversation.

What Do We Want From the Bookish Internet?

The last line hits on what’s missing: “What I want is an ongoing, massive, sprawling conversation.” No book site has managed to accomplish that. We want to take that on.

We still have a lot to figure out. Ste and I discussed this article and ways what discussions could look like it in last week’s Hardcover Live. Some of the questions we’re asking ourselves include:

Are “posts” standalone (Twitter, Instagram, TikTok) or topic-based (Reddit, Forums)? Do readers favorite/upvote/like posts, or can they also downvote? How do we cater to the moments when you most want to discuss a book – either by posting or reading? How do we handle moderation and keep readers safe?

What we want to build for Hardcover in this space is still to be determined – and that’s where we need your help!

We have a number of prototypes and questions we want to ask readers who care about community and discussions. Are you up for a 1-hour chat? Sign up for some time to chat!

No preparation is needed on your side. Just show up with an open mind. I’ll ask you some questions, share some prototypes and we can talk through them together to see what you like and don’t like.

It’ll be a fun chat about books and discussions. If you enjoy discussions online – whether you’re posting or just reading – please sign up for an hour chat. If none of the times work for you, please email me (adam at hardcover.app ) and we can figure something out.

Behind the Scenes at Hardcover

Something that’s always fascinated me about projects I follow, specifically bootstrapped ones, is how the business is doing. Are they making loads of money? Or are they going to go out of business tomorrow? For us, the answer to both is the same: no. 😅

  • July Revenue: $50.52
  • July Expenses: -$739
  • July Profit: -$688.48

Our revenue is entirely from members upgrading to Supporters. We don’t sell data or have ads. Hardcover is a community project and we want to create it for the community. Once we have more traffic we’ll add affiliate links to purchase books, but that wouldn’t move the needle on revenue much at our current traffic.

Supporters who sign up for a year and have a US address also receive a nifty sticker + bookmark pack as a thank you. If you’re a supporter watch your email for info! 📚

Sticker and bookmark pack

Featured Prompt for August 2023

Prompts are polls that Supporters can create, and anyone with an account can vote on. Think of Reddits “Suggest Me a Book” subreddit. Each month we’re featuring one prompt of the month. The more answers the better! This month’s prompt comes from John Wilker:

Favorite Space Opera books

According to Wikipedia, Space opera is a subgenre of science fiction that emphasizes space warfare, with use of melodramatic, risk-taking space adventures, relationships, and chivalric romance. (Sadly the “opera” side refers to a sprawling intergalactic story – not a musical).

Answer this prompt, see the top answers, or upvote existing books that stand out.

Last Months Prompt

Check out the answers from last months prompt: How did you become a bookworm?

The top voted answer from last month? The Hobbit by J.R.R. Tolkien. Hardcover readers tend to favor science fiction and fantasy more than other genres right now. I’m curious to see how that’ll change over time. Will there be a battle between fantasy, sci-fi, young adult romance and nonfiction self help? Only time will tell.

What’s Popular on Hardcover?

Here’s a look at what was most read in the last month, and what readers are more looking forward to in August.

Most Read Books for July 2023

This is based on books the most readers marked as completed between June 1, 2023, and August 1 2023. We needed to use two months in order to get numbers up high enough to have more standouts.

  1. Legends & Lattes (Legends & Lattes #1) by Travis Baldree
  2. This is How You Lose the Time War by Amal El-Mohtar and Max Gladstone
  3. The Hobbit by J.R.R. Tolkien
  4. I’m Glad My Mom Died by Jennette McCurdy
  5. Project Hail Mary by Andy Weir

I’ve read 4 out of 5 of these and rated each of them 5⭐. Hardcover readers have great taste! 😉

Legends & Latte’s looks like so much fun. There’s an 8-week wait for it at my local library. Until then I’ll let the description tide me over:

High Fantasy with a double-shot of self-reinvention Worn out after decades of packing steel and raising hell, Viv the orc barbarian cashes out of the warrior’s life with one final score. A forgotten legend, a fabled artifact, and an unreasonable amount of hope lead her to the streets of Thune, where she plans to open the first coffee shop the city has ever seen. However, her dreams of a fresh start pulling shots instead of swinging swords are hardly a sure bet. Old frenemies and Thune’s shady underbelly may just upset her plans. To finally build something that will last, Viv will need some new partners and a different kind of resolve. A hot cup of fantasy slice-of-life with a dollop of romantic froth.

Legends & Lattes description

A woman orc barbarian opening a coffee shop in a fantasy world? I’m a sucker for comedy fantasy and sci-fi, and this looks like a fun time.

Most Saved Books To Be Released in August 2023

These are the books saved to the most peoples “want to read” lists that are set to be released in August 2023.

  1. Looking Glass Sound by Catriona Ward
  2. Thornhedge by T. Kingfisher
  3. The Brothers Hawthorne (The Inheritance Games #4) by Jennifer Lynn Barnes
  4. Family Lore by Elizabeth Acevedo
  5. New Adult (Boy Meets Boy #3) by Timothy Janovsky
  6. My Roommate Is a Vampire by Jenna Levine

I’ve heard great things about The Inheritance Games series. If it’s been on your list for a while it could be the right time to start it.

A Correction – Member Spotlight

Last month in our update we highlighted a community member, @heagma but didn’t correctly link to his profile! We’re fixing that now. If you’re into Hard SF, Historical Fiction, and Science you’ll find his book recommendations and reviews a ton of fun.

If you’d like to be featured in a future month’s Member Spotlight, please fill out this form. We’re excited to share your love of books and favorites with the world.

Join us on Discord

The Hardcover Community isn’t just on the website – we’re also on Discord! If you’re not an expert in Discord, don’t worry – neither are we.

Join the over 350 of us to chat about books, hear about product updates and be a part of the community.

Join the Hardcover Discord

Want to Support Hardcover?

Being a fledgling startup we can use all the help we can get! Whether that’s becoming a Supporter, sharing Hardcover with a friend, or just following along.

We appreciate you for reading and hope you have an amazing August. Talk to you soon. ☀️

Categories
Articles Canonical

8 Podcast Recommendations for Book Lovers

How great it will be to read all day long, discovering new ideas. But life isn’t fair because we have to cook, work and buy new books.

Luckily, for those moments when we cannot dive into a book, we have podcasts.
From light-hearted conversations, to like talks and interviews with writers, these podcasts are the perfect companions.

The Penguin Podcast

A classic podcast from one of the leaders of the publishing world.
Recent guests include Carlo Rovelli, Sophie Mackintosh, Ian McEwan and more.


Find it here: Acast

On the Road with Penguin Classics


If you like to travel via books, this podcast is for you.
“In each episode, author, and editor Henry Eliot travels to a different literary location to explore a brilliant book in the company of a remarkable reader.”

Listen on: Acast

The Book Review Podcast by New York Times

From Pulitzer winners, essential readings of Neil Gaiman, book bans, to new releases, the Book Review Podcast has it all.


Listen: Apple Podcast

London Review Bookshop Podcast


This podcast features live recordings of the events hosted by the London Review Bookshop.

They cover fiction, music, politics, poetry and more.


Listen: Apple Podcast

You can also check the other podcasts made by the London Review of Books. Close Readings Podcast is a must-listen.

The New Yorker Fiction

Every month, the fiction editor Deborah Treisman and her guests read and discuss a piece of fiction published by the New Yorker.


Listen: Apple Podcast

Backlisted


The hosts, John Mitchinson and Andy Miller, together with a guest discuss books that stood the test of time.

If you are eager to discover classics like Dickens, Giordano Bruno or Kate Chopin, have a listen.

Listen: Apple Podcast

Black Chick Lit


This one is a bi-monthly podcast that discusses books written by, Black women. You’ll discover that the hosts, Dani and Molli are not shy of a good laugh.

Listen: Apple Podcast

Hey YA


This podcast, created by the Book Riot team, covers everything related to Young Adult, from new releases to hot topics and screen adaptations.

Listen: Apple Podcast

Check our Halloween recommendations.

Categories
Canonical Hardcover

Hardcover Report for July 2023

Hi book friends! With summer month, July, in full tilt (for the northern hemisphere at least), we hope you’re finding exciting and interesting reads to improve your summer.

As we mentioned in our recent blog post, we’re striving to work in public and share all of the cool stats from the Hardcover community with the world.

That started last month with our June 2023 Report which showcased what’s popular with Hardcover readers, spotlighted members and shed light on what we’ve been up to.

This past month has flown by. I’ve noticed that the times that pass the fastest for me personally are when I’m the most busy (or sometimes just stressed 😅). I’m mostly recovered from my ACL surgery last year, but that has meant more time in physical therapy than I ever expected. I’m glad to have regained 90% of my strength between my surgery leg and good leg. More time in the gym and hikes will help move that up to 100% (if you’re in SLC and want to go on a hike, let me know: adam at hardcover.app)

Spans of intense activity can be exciting! It can mean change and growth. Or perhaps that you’ve had your head in a book that you can’t put down. 😉 Either way when you get around to putting your head back up, you may see the world with new eyes.

What’s New On Hardcover?

Last month we announced the Hardcover Librarian program. So far we’ve brought on the first 10 librarians of what’ll be the librarians!. This will be an ongoing and changing group, so if at anytime you feel like you’d like to be more involved please apply. We plan to hold the first Librarian meeting this month for the initial “shush” of librarians (that’s an unofficial collective noun for librarians that I just love 😂).

Hardcover Live

Earlier this year Ste and I started recording our weekly product meetings for Hardcover and streaming them on YouTube and Twitch. We stream every Monday at 12pm PST, 3pm EST, 8pm London time for an hour. (although we are skipping Monday July 3rd since I’ll be out on a camping trip for the Forth of July weekend).

We catch up on each others lives, spend some time talking about the state of Hardcover and then go deep on a specific topic. These topics have included the new book page, improving search, the librarian program, Ask Jules/AI Bots, what does it mean to be a “Book Influencer”? and a bunch more.

It’s a combination of building in public and book-community adjacent discussions. You can subscribed to the Hardcover Google Calendar to keep track of when we’re meeting or watch after the fact on YouTube. We record on Mondays and post the video on Wednesdays.

What’s Coming Soon?

Last month we teased that Search 2.0 is coming soon – and it still is! 😅 It turns out that our update to the site is going to be a little larger than expected, but I think it’ll be worth the wait.

I recently started reading Blood, Sweat and Pixels by Jason Schreier about the reality of making a video game today. One anecdote that comes up over and over again is how no one remembers that a game was delayed a few months. They remember if the game was great or not.

When I’m working on something that takes longer than I expected it to I often feel the urge to get it out. Having a clear vision in mind of how someone will experience what you’re working on involves not just having it be usable, but having it be fun!

In Product Management there’s an analogy that’s often used: staying in a hotel. When you stay in a hotel you assume certain amenities: a private room, a bathroom, a bed. Other amenities aren’t always assumed but are nice to have: a coffee machine, a refrigerator, a nice view. Then other amenities aren’t expected at all, but if they’re available you’re delighted: a mint on your pillow, fresh flowers, heated floors.

At Hardcover we have a bunch of the core amenities and some of the nice to haves, but we have more work to find what those “delighters” are. Finding them involves talking with readers, discussing ideas and feedback on Discord and trying to find those moments that will make people smile. If you think of something that would delight you, please let us know on our Request a Feature board.

Upcoming Changes

Sometime this July we’ll roll out a number of changes that are in the works. Here’s a sneak peak at what’ll be in this release:

🔍 Search V2 – A completely revamped search experience that’ll allow you to find books faster, search by author, ISBN, or more to route you to what you’re looking for.

☑️ Book Button – The button you use to mark books as Want to Read, Read, track your rating, update your past reads and manage lists is getting a refresh. We’re also adding the ability to set the edition for your reads – something long requested!

📚 Book Page Update – We have big plans for the book page later this year. This first update is a step in that direction that you can see in the above gif.

📸 Sharable Images – When you share a link to your review (or other pages) you’ll see a beautiful image preview. (don’t mind the mismatched text, that was us trying to break the layout with a long title 😂).

Side note: when you share your review, you can earn referral credits! For every two people you refer you receive a free month as a Hardcover Supporter. You’re supporting us by sharing Hardcover just as much as supporting us with your wallet.

Other updates in this phase are less public: faster rendering, better SEO, various fixes for mobile and light mode.

Look for all of this later this month! 🤞

Behind the Scenes at Hardcover

Something that’s always fascinated me about projects I follow, and specifically bootstrapped ones, are how the business is doing. Are they making loads of money? Or are they going to go out of business tomorrow? For us the answer to both is the same: no. 😅

  • June Revenue: $65
  • June Expenses: -$614
  • June Profit: -$549

Our revenue is entirely from members upgrading to Supporters. We don’t sell data or have ads. Hardcover is a community project and we want to create it for the community.

Supporters who sign up for a year and have a US address also receive a nifty sticker + bookmark pack as a thank you. If you’re a supporter watch your email for info! 📚

Sticker and bookmark pack

Featured Prompt for July 2023

Prompts are polls that Supporters can create, and anyone with an account can vote on. Think of Reddits “Suggest Me a Book” subreddit. Each month we’re featuring one prompt of the month. The more answers the better! This months prompt comes from Drews Book Reviews who asks:

How did you become a bookworm?

Tell us how you got into reading, what or who inspired you. Was it a book you read one day, a mentor, teacher? etc…

Answer this prompt, see the top answers or upvote existing books that stand out.

Last Months Prompt

Check out the answers from last months prompt: What Lighthearted Beach, Poolside or Park Reads Did You Get Lost In?

The top voted answer from last month? Project Hail Mary by Andy Weir.

If you haven’t heard, this book is being made into a movie staring Ryan Gosling, written by Drew Goddard (The Martian, Buffy/Angel TV, Lost, Daredevil) and directed by Christopher Miller (Spider-Man Across the Spider-Verse, Lego Movie, Cloudy with a Chance of Meatballs). It looks like an amazing team to capture the lighthearted, optimistic sci-fi tone of Weir’s original work.

What’s Popular on Hardcover?

Here’s a look at what was most read in the last month and what readers are more looking forward to in July.

Most Read Books for June 2023

This is based on books the most readers marked as completed between May 1, 2023 and July 1 2023. We needed to use two months in order to get numbers up high enough to have more standouts.

  1. A Court of Mist and Fury (A Court of Thorns and Roses #2) by Sarah J. Maas
  2. This is How You Lose the Time War by Amal El-Mohtar and Max Gladstone (Thanks Bigolas Dickolas!)
  3. Man’s Search for Meaning by Viktor E. Frankl
  4. Fourth Wing (The Empyrean #1) by Rebecca Yarros
  5. Happy Place by Emily Henry

Both my wife and I read A Court of Mist and Fury this month, which made for a lot of fun conversations. 😂 🌶️

Most Saved Books To Be Released in July 2023

These are the books saved to the most peoples “want to read” lists that are set to be released in July 2023.

  1. The Deep Sky by Yume Kitasei
  2. Children of Memory (Children of Time #3) by Adrian Tchaikovsky
  3. Esrahaddon (The Rise and Fall #3) by Michael J. Sullivan
  4. Icebreaker by A. L. Graziadei
  5. Immortal Longings by Chloe Gong

I didn’t even realize there was a third book in the Children of Time series until just now! That’s on my list for sure. The first book in the series was my #1 book of 2018.

Community Spotlight: Hernando

Each month we’re spotlighting a member of the Hardcover community. This month we’re profiling Hernando, one of our first librarians!

If you’d like to be featured, please fill out this form and maybe you’ll see your profile show up here.

What’s your username on Hardcover?
@heagma

Tell us a little about yourself
I am a family man born in Colombia but currently living in Hong Kong and working as a Platform Engineer for financial institutions.
Most of my meaningful time is spend playing with my daughter, talking about many topics with my wife, reading and listening to some extreme metal music.

Why did you join Hardcover?
I have been using Goodreads for years, but the lack of improvement drove me to find some alternatives.

I tried StoryBoard, LibraryThing and some others but in a hidden corner of the internet (Reddit?) I found about Hardcover. I pretty much liked the concept and the design but the constant iteration to improve it was what finally made me join the platform as a recurrent user.

What does your ideal reading environment look like?
Ideally is what can keep my body comfortable for more than at least 45mins. It can be a couch, the bed or a nice chair.

But nowadays, with the very small amount of free time that I get, I enjoy any place that gives me the opportunity to read.

What are a few of your favorite books of all time?
The Iliad (Homer): Growing up this was by far my favorite book, mainly due to my big interest in Greek mythology at the time.

Vacuum Diagrams (Stephen Baxter): Hard SF as its best. Not a single print work of Science Fiction can come even close in terms of scope and mind-bending ideas.

The Road (Cormac Mcarthy): This postapocalyptic book is just outstanding in all fronts.

The Remains of the Day (Kazuo Ishiguro): Still have not found a book so incredible crafted where I can read any random line and instantly hook me.

The Measurements of Decay (K.K Edin): Philosophy + SF. An unknown guy called K.K Edin somewhere in the world managed to write a very strange book that became an instant favorite worth of many rereads.

What books to recommend the most often?
Usually, the short story “The last Question” by Asimov, any collection by Ted Chiang and “The Cosmic Machine” by Scott Bembenek .

The first one because is a fantastic short tale that is a good entry point for those interested in Science Fiction. The second one most of the time after recommending The Last Question because Ted is the current master of short stories in SF.

And the third one because it gives an excellent summary of all the things humans have accomplished (and how) since the scientific revolution.

Who should follow you on Hardcover?
Anyone in fact, but those with strong interest in Hard SF, Historical Fiction and Science enthusiasts will probably find my feed more useful.

Join us on Discord

The Hardcover Community isn’t just on the website – we’re also on Discord! If you’re not an expert in Discord, don’t worry – neither are we.

Join the over 300 of us to chat about books, hear about product updates and be a part of the community.

Join the Hardcover Discord

Want to Support Hardcover?

Being a fledgling startup we can use all the help we can get! Whether that’s becoming a Supporter, sharing Hardcover with a friend, or just following along.

We appreciate you for reading and hope you have an amazing June. Talk to you next month. ☀️

Categories
Featured Hardcover

Our Code of Conduct

Code of Conduct Overview

The scope of this community is to build strong and meaningful connections and to learn and discover new books and authors. And make friends.

In order to meet the goals of this community, it’s important for members to feel like they are in a safe place that is populated by people with shared interests. Let’s keep our communications close to the scope of the community (i.e., learning, discovering books, and sharing information and ideas).

As we have people from around the globe, all communication must be in English.

As such, we request that you read and adhere to the guidelines that follow.

The short version

Be Cool: This community welcomes people from all walks of life, in all forms. We don’t tolerate harassment. If you experience or witness inappropriate behaviour, we encourage you to contact the Community Manager.

Be Respectful: Treat others online as you would treat them in real life. Respectfully disagree when you don’t align with others’ opinions.

Be careful with the words that you choose. Be kind to others. Do not insult or put down other participants. Harassment and other exclusionary behaviour aren’t acceptable.

Collaborate openly: Be open and helpful when collaborating with others.

Ask for help, when unsure: The Community Managers and the Hardcover team are always here to help.

Please, DO NOT:

  • Make personal attacks on other community members;
  • Post prejudiced comments, profanity, or sexual content or remarks. This includes text, images, or links featuring nudity, sex, hard violence, or other graphically disturbing content.
  • Discriminate against others on the basis of gender, sexual orientation, religion, race, nationality, lifestyle choices, health, body size, age, disability, unbalanced mindset, neuro(a)typicality;
  • No offensive names and profile pictures. You will be asked to change your name or picture if the staff deems them inappropriate;
  • Spam and/or Ponzi scheme messages posted on public channels & DMs.

The long version

We do not tolerate the harassment of participants in any form. This code of conduct applies to every member of the Hardcover Community.

Harassment includes:

  • Offensive comments related to gender, gender identity and expression, sexual orientation, disability, mental illness, neuro(a)typicality, physical appearance, body size, age, race, or religion.
  • Unwelcome comments regarding a person’s lifestyle choices and practices, including those related to food, health, parenting, drugs, and employment.
  • Deliberate misgendering or use of ‘dead or rejected names.
  • Gratuitous or off-topic sexual images or behaviour in spaces where they’re not appropriate.
  • Threats of violence.
  • Incitement of violence towards any individual, including encouraging a person to commit suicide or to engage in self-harm.
  • Deliberate intimidation.
  • Stalking or following.
  • Harassing photography or recording, including logging online activity for harassment purposes.
  • Sustained disruption of discussion.
  • Unwelcome sexual attention.
  • A pattern of inappropriate social contact, such as requesting/assuming unacceptable levels of intimacy with others.
  • Continued one-on-one communication after requests to cease.
  • Deliberate “outing” of any aspect of a person’s identity without their consent except as necessary to protect vulnerable people from intentional abuse.
  • Publication of non-harassing private communication.

Intellectual property and the sharing of content in and outside the group

The strength of the Hardcover community lies in our members’ generosity and willingness to contribute their thoughts, experiences, and insights to help each other learn, grow and have fun. In turn, members are expected to respect each others’ intellectual contributions and/or property. As such, we will not tolerate users who engage in plagiarism, infringement of copyright and/or intellectual property, sharing others’ words and ideas without attribution, or mining the group for financial gain or profit.

The following behaviour is strictly prohibited:

  • Passing off someone’s ideas or words as your own (even if you’ve changed some of the languages)
  • Sharing someone else’s ideas or words without attribution
  • Failing to use quotation marks to indicate you’re reproducing someone else’s words
  • Deliberately misrepresenting or lying about the source of your contributions
  • Sharing content posted to the group, including screenshots, messages, or other written or visual content (anonymised or not) outside of the community, without express permission from the Community Manager or Founder.

These bullets are adapted from plagiarism.com (see how easy that was?).

Reporting violations of the Hardcover Code of Conduct

If you’re being harassed by a member of the Hardcover Community or notice any other violation of the Code of Conduct, you can report your experience through any of the following channels:

  • Send an email to jules at hardcover.app

Consequences

We will take action when we see someone violating these guidelines. Sometimes that means a short discussion; other times, it means a warning. In extreme cases, this will mean more definitive actions, like, Mute, Kick, Ban, or Hardcover account deactivation or revoked privileges.

Code of Conduct Updates 

We reserve the right to make changes to the code of conduct at any time. Updates will be disclosed to all Hardcover users when they are made. If you have any questions, concerns, or suggestions for our code of conduct, please contact the administrator and they will get back to you. 

Categories
Canonical Hardcover

Hardcover Report for June 2023

Hi book friends! As we mentioned in our recent blog post, we’re striving to work in public and share all of the cool stats from the Hardcover community with the world.

This is the first of what we hope will be many Monthly Reports to keep you in the loop about Hardcover, new and exciting books you might enjoy, and some ways to join the community.

What’s New On Hardcover?

Today we’re announcing a project that’s been in the works for a while: the Hardcover Librarian program! There are three levels of Librarians:

Apprentice Librarians – If you have an account, you’re an apprentice librarian! If you’re logged in you’ll be able to add missing data for any book or edition. You can upload missing covers, fill in empty release dates and help fill out the data on Hardcover.

Trusted Librarians – Trusted librarians can add missing data and edit most data about books. A few fields we restrict (title, description). but you can edit just about everything else. Supporters and readers with a one-month old account & 100 read books automatically become trusted librarians.

Librarian – Librarians have full access to edit any part of books and editions (and later authors, series, etc). We’re assigning this role manually to members of the community who are active and are passionate about sharing their love of books. Today we’re opening applications for Librarians. Are you interested?

Read more to learn about the benefits of being a Librarian and how to apply.

What’s Coming Soon? Search 2.0!

Our focus the last few weeks has been on improving search. Search by author is the #1 most requested feature on Feature Request board.

We’ve taken this chance to reimagine what search could be for a book website. After dozens of prototypes, discussion with readers, and a few Hardcover Lives where Ste & I worked on this, we have our v2.0 of search on Staging! It’s currently available for Supporters to test out and give feedback on while we prepare for the official release.

Yes, Sanderson is my default search to test things out. 😂

We’ll do a full feature breakdown when we release it, but for now know that it’s coming soon!

Behind the Scenes at Hardcover

Something that’s always fascinated me about projects I follow, and specifically bootstrapped ones, are how the business is doing. Are they making loads of money? Or are they going to go out of business tomorrow? For us the answer to both is the same: no. 😅

  • May Revenue: $125
  • May Expenses: -$720
  • May Profit: -$595

Our revenue is entirely from members upgrading to Supporters. We don’t sell data or have ads. Hardcover is a community project and we want to create it for the community.

Supporters who sign up for a year and have a US address also receive a nifty sticker + bookmark pack as a thank you. If you’re a supporter watch your email for info! 📚

Sticker and bookmark pack

Featured Prompt for June 2023

Prompts are polls that Supporters can create. Each month we’re going to feature one prompt. The more answers the better! Here’s this months prompt:

What Lighthearted Beach, Poolside or Park Reads Did You Get Lost In?

With summer here, many of us are taking the opportunity to get outside and read. That could mean finding a cozy spot in a park, stretching out on a chair poolside or on a blanket on the beach – or staying warm in bed. “Pool reads” are lighthearted and fun. They’re an escape from everything happening in our lives. When you think of fun stories that had you staying put far longer than you intended, what books come to mind?

Answer this prompt, see the top answers or upvote existing books that stand out.

What’s Popular on Hardcover?

What’s hot may not change as fast as the New York Times Bestsellers – and that’s OK!

When I was a kid I used to get the Nintendo Power Magazine. Each month I’d flip to the back to check the Top 20 games on SNES, NES and Game Boy. Zelda (in all it’s forms) was my favorite. I’d scan the lists to see if A Link to the Past was still in the top 3 – where it stayed for years. I felt a sense of joy to know that something I was such a fan of was still being enjoyed by others.

We’d like to do the same for books on Hardcover! Eventually we might make this is a page on Hardcover, but for now, we’re going old school with a list.

Side note: did you know you can read old Nintendo Power Magazines on Archive.org? Now you do! 🥳

Most Read Books for May 2023

This is based on books the most readers marked as completed between April 1, 2023 and May 1 2023. We needed to use two months in order to get numbers up high enough to have more standouts.

  1. Babel, or The Necessity of Violence: An Arcane History of the Oxford Translators’ Revolution by R.F. Kuang
  2. Tomorrow, and Tomorrow, and Tomorrow by Gabrielle Zevin
  3. The Frugal Wizard’s Handbook for Surviving Medieval England by Brandon Sanderson
  4. The Hitchhiker’s Guide to the Galaxy by Douglas Adams
  5. The Invisible Life of Addie LaRue by V. E. Schwab

Most Saved Books To Be Released in June 2023

These are the books saved to the most peoples “want to read” lists that are set to be released in June 2023.

  1. Heavenly Tyrant (Iron Widow #2) by Xiran Jay Zhao
  2. Love Theoretically by Ali Hazelwood
  3. Business or Pleasure by Rachel Lynn Solomon
  4. The Shadow Sister by Lily Meade
  5. A Botanist’s Guide to Flowers and Fatality (Saffron Everleigh Mystery #2) by Kate Khavari

Community Spotlight: Ste

Each month we’re spotlighting a member of the Hardcover community. To start, we’re profiling our very own cofounder Ste!

If you’d like to be featured, please fill out this form and maybe you’ll see your profile show up here.

What’s your username on Hardcover?
@ste

Tell us a little about yourself
I’m a designer living in London with my wife and my cat. I like working on projects that make the world slightly better.

Why did you join Hardcover?
Because I wanted to read more.

What does your ideal reading environment look like?
Just as the sun sets, after a day of work, on the couch.

What are a few of your favorite books of all time?
Demons by Dostoevsky, The Castle by Kafka

What books to recommend the most often?
The Order of Time by Carlo Rovelli

Who should follow you on Hardcover?
Whoever is interested in a mix of design books, classic lit and books with beautiful covers.

Join us on Discord

The Hardcover Community isn’t just on the website – we’re also on Discord! If you’re not an expert in Discord, don’t worry – neither are we.

Join the over 300 of us to chat about books, hear about product updates and be a part of the community.

Join the Hardcover Discord

Want to Support Hardcover?

Being a fledgling startup we can use all the help we can get! Whether that’s becoming a Supporter, sharing Hardcover with a friend, or just following along.

We appreciate you for reading and hope you have an amazing June. Talk to you next month. ☀️

Categories
Canonical Hardcover

Hardcover Quarterly Plans for mid-2023

One thing we’re hoping to do more of this year is share what we’re working on. Nearly every day we’re making progress on some parts of Hardcover. Not all of those are flashy exciting features, but they all help readers find amazing books – in their own ways.

With that in mind, we want to share what we’re working on and want to do during the next few months!

If we were an actual business and not a group of book friends building an app, these would be OKRs (Objectives and key results in corporate speak). Instead, we think of these are what we’re most excited about working on.

Some of these are things we hope to release soon. Others are areas we want to research more and figure out a plan for. With that in mind, let’s jump in!

#1. Ability to Edit Books and Editions ✅

Up until now, it hasn’t been possible for readers to modify books on the site. If we’re missing a piece of data in a book there was no way to fill that in. This is most evident for book covers, where often books will be missing a cover or have a low-quality image.

Last week on May 5th we launched our first round of librarian features that will allow readers to start helping improve the overall data across Hardcover. We’re looking for the first readers who will join us and become Hardcover Librarians.

#2. Book Button Improvements

Since the very beginning of Hardcover, the Book Button is the main way that readers interact with books across Hardcover. We show this button in search, in the feed, on the book page, on Airlists – everywhere.

From here you can do just about everything for a book:

  • Change your status for this book
  • Rate and review
  • Add to a list
  • Manage dates read
  • Manage privacy

Since we launched our iOS and Android apps, we wanted to improve the mobile experience and tackle a few other concerns.

Here’s a sneak peek of the new Book Button (v2)!

Book button v2

You’ll notice a few things right away.

On mobile, this will now be a drawer you can close by clicking outside of or dragging it down. This feels much more natural.

We’ve removed the ability to 👍/👎 a book. This feature was initially intended to help our algorithm. Only about 0.01% of 👍/👎’s were different than we’d expect based on rating alone, so we decided to remove this.

Setting your dates read has been moved from the modal to a separate screen that’s part of this flow. You’ll also be able to set which edition you read for each read-through, and we’ll show an icon based on the format of that edition (audio, ebook or book). This is one of the most-requested features and I’m excited to see what people think of it!

With how often readers engage with this button, we want to get it right.

#3. Improve Search

Search is one of the most important parts of Hardcover. Every time you hear about a book and want to look it up you rely on search to take you there quickly.

Being able to search by author is currently the #1 most requested feature on Feature Request Board.

Our search right now is… OK. To get technical, it uses a SQL ilike query to combined with a similarity score to sort the results. This means that if you type “Harry Potter”, you’ll see results that contain exactly that string well before you see “Harry Potter and the Sorcerer’s Stone”, since “Harry Potter Fanfiction” is more similar to what you searched for.

It’s also not as blazing fast as we’d like it to be. In fact, it’s slowing down as we add more books. It also doesn’t allow you to search by author’s name.

We have a few plans to improve this.

First, we’re redesigning search. We’ve gone through dozens of prototypes to figure out what works. A dropdown in the header? Should the text field be at the top or the bottom on mobile? What about a modal?

Right now we’re working on a new search that I can’t wait to start using. Here’s a sneak peek of what this looks like on desktop.

You’ll notice a few things about this immediately:

We decided to go with a modal rather than a drop-down. As soon as we decided we wanted to show authors, having this as a dropdown became too cluttered. We kept closing the drop-down on accident.

You’ll be able to open it from any page by clicking on the link in the header, or by entering cmd/ctrl + k on any page. The speed you can navigate around using this is incredible.

We’re also adding Ask Jules to search! If you have a question that search doesn’t feel like the right approach for, you can Ask Jules.

And perhaps most importantly, we’re switching from Postgres search to Algolia. This should lead to MUCH better ordering of the results. Not only will you be able to include the author’s name in book searches, but this will also automatically get better as more people search and interact with results.

As icing on the cake, it’ll also be faster. 🚀

#4. New Book Page

Last year we talked to a bunch of readers to understand what they’d want from the book page. Here’s a bit of what we heard:

I want to quickly see if the book sounds interesting enough to mark it as want to read.

I want to see what series this book is a part of. I don’t always want to commit to a long series.

I want to quickly see what my friends thought of this book.

And so much more. We took all of that feedback and put together what we think will be the best book page for any book website. It’ll also give us room to grow into new features later (like Discussions, Characters, Fanclubs, and more community features).

Here’s a look at the prototype we’re currently excited to share.

Prototype of the new book page

We’re using a color from the cover to create a gradient background to help each book page be unique. The rating chart is an idea copied heavily inspired by Letterboxd, our spiritual motivation for Hardcover.

Each is also completely redesigned and some of these tabs we’ve decided to combine since this screenshot was taken. We’re using this as an opportunity to bring in so much more about this book into the book page:

  • Most requested data up front: series info, match percentage, page and audio length, your status, description and a (new) one-sentence headline for each book.
  • Prompts and lists this book appears on
  • Reviews are sorted by reader similarity to YOU, allowing you to see reviews by readers with similar tastes.
  • Showcasing reviews with media (TikTok, YouTube) and reviews by bloggers.

We’re adapting this page for mobile in a way that will make it clear when you’re on a subpage under a book. For example, here’s how a single could look.

There are a lot of pages that we’re redesigning as part of this, but it’s exciting.

#5 Working in Public More

We’ve been having so much fun building Hardcover lately we’ve often forgotten to share that enthusiasm with the community. For that, I’d like to apologize. Hardcover is a community project, and it’ll only succeed with a thriving community excited to be a part of it.

With that in mind, we’re going to try to share the journey much more.

Weekly Hardcover Live sessions where Ste and Adam dig into a feature or specific concept and discuss ways to improve it. We do these each Monday at 12 PST, 3pm EST. You can watch these live, or see the recorded videos after the fact. We’ve been recording these for the last few months, but haven’t yet shared them outside of Discord. We plan to start listing these out in a way that’ll make it easy to watch and join.

We want to do more newsletter updates going forward. Lately, I’ve only sent newsletters after completing a feature. That’s not exactly the best cadence though.

We’ve absolutely loved having a Discord and want to find ways to integrate that more into Hardcover. Have you run a Discord community before? Or are you a Discord power user? If so I’d love to chat and ask you some questions about what’s worked and what hasn’t.

Feedback Welcome!

If you have thoughts on any of these prototypes, things we’re

Categories
Canonical Hardcover

Want to be a Hardcover Librarian?

One of the hardest parts about competing against Amazon and Goodreads is getting decent data about books.

As I write this right now, there are roughly 220,000 books on Hardcover that at least one reader has interacted with. On top of that, there are roughly 300,000 editions as well. Add on to that almost as many authors, illustrators, translators and narrators, as well as 40,000 book series.

Since we started Hardcover two years ago, we’ve focused on seeing how far we can get by importing book data from external sources. Whenever someone imports their Goodreads or StoryGraph library, Hardcover’s library grows a little bit at a time. Lately, we’ve hit a point where it’s getting tougher and tougher to improve our library without community help.

That’s where you come in!

Last week we launched our very first librarian features. Trying to create a system that allows readers to edit book data in a way that prevents bad actors from harming the system as a whole is an extremely tough problem. Wikipedia and Goodreads handle this by having an army of volunteers that maintain their book data.

We’re trying something similar – AI-assisted librarians. Here’s how we see that working using 4 different roles for Hardcover Librarians:

Everyone – Every reader on Hardcover can mark books, authors and series as duplicates. Marking these as duplicates is a HUGE help. Behind the scenes, we’ll merge them together and improve data for everyone. On Hardcover, a “Book” represents all editions of that book across all languages. We’re focusing on English for the moment, so if you see a Spanish version and an English version, go ahead and mark the Spanish version as a duplicate.

Appender Librarian – This is the default role that every reader who signs up for Hardcover receives. Readers with this role can add missing data to all books, but can’t edit existing data. If you spot a book that’s missing a cover you can upload one. If a book is missing its page count, you can add it. Once it’s added, no one (including you) can edit it.

Editor Librarians – Readers who have read at least 100 books and have an account on Hardcover for at least one month are automatically upgraded to Editor Librarians. Editor Librarians can append data, but also edit most book and edition fields. You don’t need to request access to this role, it’ll automatically be added to your account when you meet the conditions. A few fields are protected due to the impact editing them can have; specifically the title, description, and headline.

Librarian – Librarians can edit any field for any book or edition (and later on authors, series, etc). This role is only granted to active members on Hardcover who want to help improve our data. This could mean focusing on improving data just for the books you’re familiar with, or branching out beyond that. Every little piece helps!

Librarian Manager – All the same roles as a librarian plus the ability to see reports submitted by readers, merge duplicates (books, series, authors), and split editions into different books. Librarian Managers can make breaking changes and impact lots of readers’ libraries.

What’s in it for me?

This month we’re just starting to figure this out. Here’s what we’re planning right now. We’d love to hear what you think of this plan (join the #general channel in our Discord).

Librarian flair. Librarians and Librarian Managers will have a special flair that we only grant to Librarians. Whenever you interact with other readers on Hardcover, read a review you wrote or view your profile, they’ll see your super-exclusive flair.

Librarian Discord Channel. Librarians are part of the community that wants to improve book data. In the #librarian channel, you can chat with others with the same mission.

Donation Voting. This is a new one we’re planning, but I’m super excited about it. We’ve made a decision as a company to give away 10% of our revenue to book-related causes. This could mean gifting banned books to communities, supporting Dolly Partons Imagination Library, or any number of other amazing causes. At the end of each year, every Hardcover Supporter and Librarian will be able to nominate and vote (using ranked-choice voting) to decide where our donation goes. Right now we’re not exactly raking in money, but we want to get into the habit of doing this while we’re small. Even small acts of kindness add up.

How Do I Become a Librarian?

For Appender and Editor Librarians, no effort is needed on your end. Just use Hardcover and eventually, you’ll earn these roles.

We’re looking for an initial group to become Librarians. If this sounds interesting to you, please reach out to jules@hardcover.app and apply! We’ll improve the application process over time, but for now please answer these three questions. We’ll look over your application and get back to you.

  • Link to your Hardcover Profile
  • A description of why you want to be a Librarian
  • Anything you’d like to share that shows you care about organization!

If you have any questions about being a librarian, feel free to reach out as well. We’re just beginning the idea of a community-edited data platform, and there’s a lot to figure out. Librarians who join at this stage might not have the clearest flow or best tools available yet, but with your help, we want to build those.

Categories
Canonical Featured Hardcover

Building Hardcover: on “good enough” qualitative user personas

Uninformed user personas are elaborate creative writing exercises, and can cause serious damage: something that seems validated but isn’t will lead to false confidence in decision-making, and send you down rabbit holes that serve imaginary users rather than real ones.  

So, with limited insights, how do you create something that’s specific enough to be useful, but also validated by the available data?

We landed on a solution that was fast, free, and — most importantly — not catastrophic in its imprecision. I’ve had a couple of people asking how, so figured I’d share in case it’s useful to others.

Two questions kept us on track:

  • Is this validated by multiple data points from our VoC interviews, industry knowledge, or user feedback?
  • What damage could this detail do if it’s wrong? 

Distilling qualitative data into core user archetypes

We did have some data — just not what larger businesses have, and nothing significant on the quantitative side. 

Side note: If you only have hunches, you can still build useful proto-personas, but you’ll need to talk to people. Adam and Ste had some luck finding readers on reddit who were willing to chat. More recently, we’ve looked within the Hardcover community.

The data we used:

  • VoC transcripts
  • Discord discussions
  • Small-scale surveys and studies we did last year
  • Discussions we’d had with industry professionals
  • Discussions we’d had with each other
  • Feature requests from the community
  • Our collective and personal experience with readers and book lovers

On first read-through, I was scanning for anything related to needs, behaviors, or problems, and any specific details that seemed interesting or insightful. By the time I’d finished, I had the loose ideas for the three behavioral buckets in my head, and used a second read-through to start sorting information into them. 

You can’t remove your own bias, but you can greatly mitigate its impact by being aware of it. I was prepared for the possibility that the buckets I’d chosen would crack under scrutiny — sometimes, themes stand out not because of their prominence, but because of your personal interest in them — and if that had happened, I’d have scrapped and started again. 

From synthesizing the data, three archetypes emerged:

  • Readers who wanted to analyze their own activity, log things meticulously, and engage with their reading habits in a left-brained kind of way. 
  • Readers who had a clear idea of what they liked, and found joy in discovering more of it via reviews and recommendations.
  • Readers who had not yet developed confidence in their own ability to select a good book, and looked to trends and social media to guide their decisions.

We called these Analyst, the Explorer, and the Social Reader.

Likely, most people will have a dominant alignment, but exhibit behaviors from all three archetypes.

When working with qualitative archetypes like this, it’s sometimes helpful to think of them as behavioral modes (similar to how you might with user stories: as an Explorer, I want to…

If this categorization turned out to be entirely wrong, the behaviors it’s based on are still true. Worst case, that leads to suboptimal prioritization, but that’s better than the indecision and paralysis you get without personas. (At later stages of maturity, where operations are more complex, greater precision would be necessary. Right now though, this is good enough.)

At this point, I made a template in the Google Doc, copied it for each persona, and turned my notes and screenshots into clear descriptions. 

Making the cut

To justify its inclusion, each persona above had to meet the following criteria:

  • Strong prominence of needs or behaviors that distinguish them from other personas (e.g. the value the Analyst places in aggregate data, the Explorer’s confidence and joy in discovery, and the Social Reader’s need for recommendations) 
  • Viable as a target user: are we (/are we interested in becoming) a good fit for their needs?

When I presented the three personas — Analyst, Explorer, and Social Reader — Adam raised the idea of a fourth persona, the Organizer. The Organizer, as proposed, was an individual who wasn’t super interested in discovering books, learning about their behavior as a reader, or interacting with others. They simply wanted to track what they’d read, like they might in a spreadsheet. 

After some discussion, we decided against including this persona. The Organizer would have sat on the same behavioral spectrum as the Analyst, but with lower motivation and less potential for activation. 

From Adam’s conversations with Organizer types, we knew this persona likely skewed older than the Analyst, so differed demographically, but their defining need was to catalog books read: something that we knew from a small-scale Kano study was a basic/threshold feature for a platform like Hardcover — meaning pretty much everybody expected this feature.

The distinction between Organizer and Analyst would probably be a valuable one at a later stage of maturity (and if we had more quantitative data), but doesn’t benefit us greatly right now.

Sharing and validating the personas 

Having distributed user personas to teams before, I know you don’t really get buy-in without storytelling. Otherwise, the archetypes might make sense, but they’re forgettable. It was important that these became part of our shared language: a tool for guiding roadmap decisions, design choices and marketing activity.

I used composite details from the people we’d spoken with and knew IRL to create a memorable, fictionalized representation of each persona. 

I started with statements I knew to be true, and used gut instinct and personal experience to add color. For example, there’s a detail for the Analyst about closing rings on their Apple Watch. I can’t validate this detail for our readers, but I’ve met enough people who I’d describe as Analysts for whom that is the case. 

It’s a detail that’s contextually relevant, but also harmless. We’re not planning on building for WatchOS. But it does help us visualize the Analyst outside of Hardcover. 

The Analyst

“Matt, 37, is an engineer who reads on average 4 books a month, mostly sci-fi, and spends a lot of time browsing reddit from his iPhone. He loves data — closing rings on his Apple Watch, tracking movies on Letterboxd — but he also cares about privacy (he’ll often say “if you’re not paying for the product, you are the product” while also being resigned to that fact). 

He uses a combination of personal interest and aggregate data to inform his next book choice — mass ratings influence him way more than a single written review could. 

He loves watching his stats change over time: it makes him feel satisfied and accomplished. He isn’t interested in discussing books in public, but does take great pride in recommending a really awesome book (or app…) to his friends via iMessage or DMs. May also talk about a particularly good business book on LinkedIn as a form of thought leadership — it’s a relatively low-effort way to raise his profile.”

Matt’s feelings about privacy and data ownership are relevant; they tell us something about the values that inform his decisions.

I found it helpful to write intuitively and edit with context in mind: what’s this detail doing (and again: what damage could it do if it’s wrong?).

After, I shared the personas for the team to interrogate: did the information I’d synthesized here corroborate with their findings? I’m the newest member of the Hardcover team, so it was important to make sure my understanding of the situation aligned with theirs. This also revealed additional insights I’d missed. 

Screenshot of a comment from a Google Doc, referencing conversations with Goodreads users as further evidence of one of the personas.
Screenshot of a comment from a Google Doc, with Ste adding extra context he'd found on Twitter.

What next?

This is a starting point, and alongside our positioning work, will inform our work over the coming months: from feature development to a brand refresh. 

It’s already allowing us to move quicker: as we design the new homepage, we’ve been prioritizing our most valuable early persona, and structuring the page according to their behaviors and needs. We have a shared language for talking about our users, which makes conversations more efficient.

We’ll probably need to revisit these personas in 6 months and refine them based on what we’ve learned since. 

It helps to be flexible: make decisions informed by what you have, and validate and adjust as you go. If you’re unsure about a detail, and that detail could cause a lot of damage if it’s wrong…leave it out, or go get more data. 

This approach helped us avoid analysis paralysis. You don’t have to choose between no personas and perfect personas: there’s another option, and that’s qualitative personas that are light-touch, iterative, and “good enough”. 

If you found this interesting, join us on Discord, where we often talk about what we’re building and how.

Categories
Canonical Featured Uncategorized

Ask Jules: Your OpenAI Powered Librarian

Over the last few months, we’ve seen a boom in AI-assisted tools. There are still a lot of questions to be figured out with these tools, but at this point, the genie is out of the bottle.

Yesterday OpenAI announced their new Chat GPT API. It allows sites to build entire chatbots leveraging their model.

We immediately jumped at the chance and today we’re announcing Ask Jules, Hardcover’s AI Librarian!

You’ve probably seen Jules around Hardcover. They’re our mascot, the default avatar, and our embodiment of what we believe the book industry should be: welcoming, accepting, and curious.

We’ve attempted to put those traits into our bot in the hope of helping you find what you’re looking for even faster.

So what can you Ask Jules?

You can ask for book recommendations just like if you were talking to a librarian or someone from your favorite bookstore.

I’m reading The Time Traveler’s Wife right now, which gave me a good smile. 😂

You can specify even more details about what you’re looking for by the author.

Sometimes deciding where to jump into a new author is tough. Jules is here to help.

When Jules recommends a book, you can add it to your Want to Read list with one click.

We have many more plans for our chatbot, but we’re excited to see your thoughts. Try it now — and if you have any feedback about it, please join our Discord and let us know.

Side note: early internet users might compare Ask Jules to the search engine Ask Jeeves. We think they’d get along well together at the Ask convention.

Categories
Canonical Featured Hardcover

Making the Most of Stats

Every reader on Hardcover gets a custom stats page just for them. We’ll continue to improve this page; answering new questions that readers come up with and finding new ways to highlight readers’ history, tastes, and preferences.

In order to get the most out of this stats page, you can take a few additional steps. That’s the focus of this article.

Overall Stats

Books Read: This is the total number of books you’ve read with a “finished at” date. The reason we do it this way rather than relying on the status of your books is that you can read books multiple times! If you switch a book from “read” to “currently reading” this number shouldn’t go down.

Book referrals: Whenever another reader interacts with a book on Hardcover on a list of yours, a review, or in the activity feed, we track that they found that book because of you. Farther down we share more about referrals.

Authors read: The total number of authors whose books you’ve read in the given period.

Want to read: The total number of books you added to your want-to-read list during this period (that are still in a “want-to-read” status).

Pages read: The total number of pages, or page equivalents read. For audiobooks listened to we use the page equivalent.

Your Favorite Books of All Time

The very first thing you’ll see on your stats page (after a few stats) are your favorite books of all time.

The books that show up in this graphic are your answers to the Prompt What are your favorite books of all time? You can decide to answer this prompt and show off your favorite books, or skip it and not share those publicly.

Books Read By Year

The quickest way to see your reading history is the “books read by year” graph. This highlights the number of books of any kind you read or listened to in any year.

Books Read By Genre and Mood

This chart shows your most common genres using the global genre tag on Hardcover. Each book on Hardcover has 5 “main” tags that we save. Anyone on Hardcover can tag a book. The tags we include here are the only 5 most common tags.

If you’re a Hardcover Supporter, you’ll be able to see all of your genres.

Not every book has genre or mood tags. To find out which books in your library are missing tags, I recommend going to your “Read Books” list, switching to “Table View” and adding in the columns for tags. Here’s an example of what that looks like for my read books page.

As you scroll down this page you’ll no doubt find some books with no moods or genres. You can open the Tag Manager for any of these books and add genres and moods directly from there.

From this modal, you can add any genres or moods you’d like. If you’re the first person to add any genres or moods then we’ll immediately use yours’.

One more thing: you see that little eye icon next to each tag? Click that if the mere existence of the tag is a spoiler. We treat those with special care.

Genre vs Mood By Rating & Count

One of my favorite charts is the genre vs mood chart. This highlights your preferences by showing your average rating or count for the number of books you’ve read that have both the given genre and the mood.

This chart is only available to Hardcover Supporters.

Read vs Listen To

Every time you read a book on Hardcover you can track whether you listened to it, read it, or both. If you’ve read a book multiple times in different formats, that also counts as “both” for this graph.

Books you imported from Goodreads or StoryGraph are all marked as “read” by default. Eventually, we’d like to automatically mark these books based on their format, but we’re not there yet.

We’re working on ways to make it easier to set your reading format for a book. We have two ways to change this right now.

The first and easiest way is to open up your “Read Books” page, and add the “Dates Read” column. On there you can edit the dates you read each book and the format for each read through.

You can also change this for a single book from the book button under the “Dates Read” tab.

Genres & Moods Read By Year

Possibly the most visually striking graph is the area bump chart for genres and moods read by year. This visualization highlights which genres or moods you read the most each year. Top genres and moods will rise to the top.

Like the other visualizations, this relies on books being tagged with genres and moods. You can add your own tags for books to help improve this chart.

Categories
Canonical Featured Hardcover

Leaving Twitter?

If you’re like us on the Hardcover team, you’ve been watching the fall of Twitter in real time. I joked with my wife it was like watching Rome fall – if Rome was 200 times as large and was only a teenager.

One side of social networks that we haven’t explored is some kind of post. It’s the Tweet, Facebook post, TikTok video, or Instagram photo. The core piece of content people create and consume.

We’re not creating Hardcover with that as our main intention. Rather than yet another place to post on, Hardcover is about books. It’s about finding amazing books to read and socializing with other readers.

We’re focused on creating the excitement of a book launch party every time to read a book you’re excited about.

There are many steps to get there, but we’re taking them one by one: book tracking ✅, profiles ✅, and social feeds ✅.

Next up? Book stats, mobile apps, and book discussions.

Categories
Canonical Featured Hardcover

The Hardcover Science Fiction & Fantasy Book Discovery Flowchart of the 2010s

One of my all-time favorite introductions to science fiction when I started reading more was NPR’s Top 100 Science-Fiction and Fantasy Books of All Time. I remember scouring the list, researching out every book I wasn’t familiar with, and making a plan to read as many as I could.

It’s been a decade since then, and NPR decided it was time for an update. Rather than running a poll this time, they brought together a number of literary minds to come up with a new list that encompasses stand-out titles from the last decade.

The result, Your 50 favorite sci-fi and fantasy books of the past decade, is one of our favorite lists in recent memory. It draws from books with far-ranging themes and from many different backgrounds. From first contact with aliens to kids with PTSD from Narnia. From geological and caste upheaval to sciencing some $h1t. If you’re a science fiction or fantasy reader I have no doubt there’s something on this list you’ll enjoy.

Creating lists where readers can find not just topics they enjoy, but characters they can identify with is an art. NPR, and the late Petra Mayer who led the effort in particular, did an astounding job putting this list together. We are tremendously grateful for their work.

We wanted to showcase these books in an alternative way to help new readers navigate these 50 books. I loved SF Signals Infographic about the top 100 science fiction and fantasy books of all time. We thought if anyone could put together one for this new list, why not us?

Today we’re releasing this flow chart, and hope you enjoy it as much as we enjoyed making it!

Hardcover Sci-Fi & Fantasy flowchart
Click on the image to view the full-sized version.

Here are the links to all sizes of this infographic:

  • Full-size PDF (14 MB) – We recommend this one for exploring the infographic. It’s the highest resolution version.
  • Full-size image (2 MB) – The full-size image for previewing. It’s more pixelated if you zoom in, but works well as a preview.

Please Share this Flow Chart!

Want to share this infographic on your blog or on social media? Please do!

Please feel free to embed this graphic on your blog. Please link back to this post and host this image on your own server (of course).

Since we might tweak this infographic based on feedback to improve it, we recommend you link back here so readers can get the most up-to-date version.

Explore this List

You can see the list of these books on Hardcover: NPR Top 50 Science Fiction and Fantasy Books of the 2010s.

If you’ve added enough ratings for Hardcover to know your tastes, you’ll be able to sort this list by Match Percentage and quickly see your personalized recommendations from this list.

Sorting this list by Match Percentage shows books I haven’t read that Hardcover thinks I’ll most enjoy.

The NPR Top 50 list sorted by Match Percentage under my Hardcover account.

If you sort by Match Percentage you’ll get an entirely different order! It’s personalized to you based on our algorithm. Give it a shot and let us know if you find something new to add to your Want to Read list.

Tools

A look behind the curtain at how we created this.

Google Sheets – All books started in Google Sheets. We added a bunch of columns for the genre, notes, and themes in order to try to group them together. Once we had them grouped into Science Fiction, Fantasy, and both, we started grouping the most similar books together.

Mind Node – Once we had the books split out, we created a mind map to organize paths to each book. This gave us a place to organize and iterate on the flow without worrying about the design.

Figma – Figma is a collaborative design tool that we very heavily here at Hardcover for prototyping. Ste, the designer here at Hardcover, did all of the design work you see, while the rest of the team focused on the content.

Credits

There are a lot of people to thank for helping to make this flow chart.

NPR, Petra Mayer, Amal El-Mohtar, Ann Leckie, Tochi Onyebuchi, and Fonda Lee for organizing this amazing list.

The Hardcover Team that worked on it: Adam (concept, content), Marilyn (content), Rahul (content), and Ste (design).

And our reviewers who looked it over and gave amazing feedback: Jenika (real-life friends helping!) and a number of bloggers who have provided feedback:

Plus anyone who’s given feedback on the Hardcover Discord. Every piece of feedback has helped shape what you see.

Side note: We’ll no doubt create more content like this one in the future. If you’d like to be a reviewer of future content or help put it together, please join our Discord.

And we’re not done! After we release this we’ll no doubt receive feedback, bugs, and other issues with this infographic. Good content iterates, and we plan to update this list with feedback that we hear from the book community. If you have any thoughts on how we could make this even better, let us know on Discord, or shoot me an email: adam at hardcover.app.

Categories
Canonical Featured Hardcover

Goodreads vs. Hardcover: Which is Right for You?

Since social networks began emerging in the late 2000s, one niche has been more wrought with difficulty than any other – book websites.

Goodreads was first to market and set the tone of what book websites could be. They were perhaps the first to introduce the idea of a “want to read” list online – a topic that resonated with millions of readers.

A few years later Goodreads was sold to Amazon for around $125 million. This brought one more book site under their banner. Coupled with Audible and Kindle, Amazon owns the top sites to sell physical books, read digital books, listen to audiobooks and track what you read.

Since then Goodreads has inched forward adding occasional new features and removing them. The fundamentals of the site today are very similar to a decade ago.

Hardcover, on the other hand, was formed a year ago in 2021. We’re a small group of readers with a mission to create an independently owned book tracker that solves the same problems as Goodreads – but with new twists that readers didn’t even know they were missing.

But which is right for you? Which one has what you’re looking for? Let’s dig into what Hardcover and Goodreads offer and try to help you decide.

To kick things off, here’s a full overview of how these compare. Keep on reading for an explanation of what each feature means.

GoodreadsHardcover
Year Founded20062021
Age18 years2.5 years
OwnerAmazon100% employee-owned
Public APIDeprecated REST APIGraphQL API
Data ExportCSVJSON
Google Sheets/Airtable sync on the roadmap
Reading Statuses• Want to Read
• Currently Reading
• Read
• Custom statuses
(lower-kabob-case-only)
• Want to Read
• Currently Reading
• Read
• Did not Finish
Personal Book Tracking• Dates started and finished
• Private notes
• Specific edition
• Ownership
• Dates started and finished
• Private notes
• Edition
• Ownership
• Reading format (audio, text)
Lists• Status Lists
• Manual Lists
• Listopia
• Status Lists
• Manual Lists
• Ranked Lists
• Prompt Lists
List controls• Custom columns
• Table, shelf views
• List stats
• Sorting
• Custom columns
• Table, shelf card views
• List stats
• Sorting + sorting by match percentage
• Filter by any field
• Filter by genre, mood, content warning, or custom tags
• Group by option
• Drag and drop reordering
• Save settings per-list

Rating & Reviews
• 1, 2, 3, 4, 5 stars
• Reviews w/custom formatting for spoilers, etc.
• 0.5 – 5 stars
(with half stars)
• Reviews with a custom editor for spoilers, etc.
Social Side• Follow Readers
• Friends Readers (2-way friendship)
• Follow Authors
• Friend social feed
• Follow readers
• Followers feed
• For You feed
Example ProfileAdam Fortuna
/user/show/2419634-adam-fortuna
Adam Fortuna
/@adam
Privacy• Profile visibility to public, logged in only, friends only
• Book reviews and saved books are public.
• Lists can be public, logged in only, or friends only
• Profile visibility to public, followers only, or only you
• Book activity can be set as public, followers only, or private
• Lists can be public, followers only, or private
Recommendations• Similar books
• Recommended books
• Match Percentage
• Similar User Percentage
• Recommended books
Notifications
Direct Messaging
Book Discoverability• Book Feed
• Lists
• Recommendations
• Readers Choice Awards
• Book Feed
• Lists
• Prompts
• Trending books
• Books by genre
• Books by mood
• Books by tag
Book DatabaseBacked by Amazon & thousands of librariansBacked by external APIs, our librarians & the community
Genre & Taxonomy• Nested, ranked genres per book• Flat, ranked genres per book
• Content Warning tags
• Mood tags
• Custom tags

All genres, content warnings, moods, and custom tags can be marked as a spoiler.
Community• Social Feed
• Book Clubs
• Groups
• Discussions
• Ask an author
• Trivia
• Quizes
• Social Feed
• Prompts
• Discord
• Bookle


We’re working on discussions next!
Stats• Basic list stats
• Reading stats
• Year in review
• Compare readers
• List stats
• Reader Stats
• Year in review
• 2023 Year in Books
Goals• One yearly book goal• Multiple date-based goals
•  By pages read or number of books
Apps• Website
• iPhone App
• Android App
• Website
• Mobile website view
• iOS & Android Apps

Ok, that was a lot. Let’s compare these one by one with some screenshots!

Book Tracking

In a poll shared on Reddit, the number one feature that people use on Goodreads (by a large margin) is book tracking. When readers hear about a book, they’ll add it to their “Want to Read” and come back to it later.

Both Hardcover and Goodreads allow for setting your status on every book. By default, Goodreads has statuses for “Want to Read”, “Currently Reading” and “Read”. Hardcover has these plus a “Did Not Finish” status.

Goodreads also allows for creating custom statuses where a book can belong to exactly one status. The downside is these are lowercase with dashes instead of spaces. Not the prettiest look.

Hardcover doesn’t have a concept of custom statuses. Instead, Hardcover has a concept of lists. You can add a book to any number of lists similar to how you can add a book to any number of Shelves on Goodreads. If there’s a status missing on here that you think we should include, we’d love to hear what and why.

The most significant difference between Hardcover and Goodreads is in what is actually being tracked. On Goodreads, you’re tracking a specific edition of a book whether you select one or not.

On Hardcover, we have a concept of a “book” that has many “editions”. When you initially set a status, you’re setting it on the book in general, not a specific edition. This allows you to see reviews for all editions in one place.

Later on, we want to enable tracking per edition. In that case, you’ll still track the book, but readers who want to can specify the exact edition they read (side note: when we import data from Goodreads we’re already saving this edition).

Winner: Hardcover, unless you want additional custom statuses or specific edition tracking.

Rating

Both Goodreads and Hardcover allow for rating a book, but we think Hardcover makes it a little easier. Anywhere you see the book, you’ll usually see the book button (the one above where you can set the status, rate it, and add it to lists.

Goodreads only allows for rating books with integers from 1 to 5. There are no half stars.

Hardcover allows for half stars from 0.5 stars up to 5 stars.

Winner: Hardcover!

Starred Books

Hardcover has one more way to highlight books – by starring them. You can star any book you’ve saved with a status. Your starred books show up at the top of any lists they appear in by default.

Winner: Hardcover

Reviews

Reviews are a core feature of any book tracking platform. Goodreads gives you a text box and from there you can go wild. You can include gifs, links, and whatever you want. In order to do more than just write text, you’ll need to learn their formatting code which includes tags for spoilers, linking to other books and authors, and inserting images.

Hardcover uses a WYSIWYG (what you see is what you get) editor. You can add basic formatting (bold, italic, code, headers, ordered lists, unordered lists, and quotes) as well as mark parts of your review as a spoiler.

One thing we’re excited about for Hardcover is that you can set a canonical URL to a blog post or review outside of Hardcover in any review as well as a media URL – usually an Instagram or TikTok. We’ll link to these and embed them on Hardcover.

If you’re a blogger and want to repost all of your reviews to Hardcover, we want to help you grow!

Winner: If you like gifs Goodreads, otherwise Hardcover.

Date Tracking

Both Goodreads and Hardcover allow for tracking when you started and finished a book. Unfortunately, Goodreads data export doesn’t include the start dates for when you began reading each. As a result of this, Hardcover won’t have your “start dates” for any books you import. We’ve made it possible to add these manually.

Hardcover lets you set multiple dates read and the format you read the book in – text or audio.

Winner: Tie. Both allow tracking of start and end date. Goodreads allows tracking down the edition. Hardcover lets you specify format instead (text vs audio).

Lists

Lists of books take many forms each with a different goal in mind. Some people use lists to categorize books they want to read, others only after they’ve read them.

We’ve thought a LOT about lists. That includes talking to more than 50 readers we’ve tried to come up with a solution that works for casual readers who barely touch them all the way up to power users who want full control over their data. The result of this was our recent Airlists release.

Goodreads has three types of lists: exclusive shelves (want to read, read, currently reading), shelves, and lists. Any book can be on exactly one exclusive shelf, any number of shelves, and any number of lists.

Hardcover has exclusive statuses as well (with the same statuses plus “Did not finish”) as well as lists. There’s one additional dimension to Hardcovers lists: tags. Each tag has a category and a value. For example: “Genre: Science fiction”, “Content Warning: Death”, “My custom category: read twice”.

Both Hardcover and Goodreads have a concept of an open list that other readers can add books. Goodreads calls these “Lists” (part of Listopia), Hardcover calls them Prompts.

This is a lot to remember, so here’s a quick key for what terms both sites use for these.

GoodreadsHardcover
Exclusive ShelfStatus Lists
ShelfList
ListPrompt

Hardcover allows for searching any status list or Manual list by any tags you’ve added, or by the most popular tags added by everyone.

Status Lists

Both Goodreads and Hardcover create a page with all of the books you’ve marked as being in a status. Goodreads calls them “Exclusive shelves”, and Hardcover calls them “Your Books By Status”. They’re effectively the same thing – showing all books you’ve marked with a given status.

Goodreads Read list
Hardcover Read list

Both Hardcover and Goodreads create lists for each of your statuses that can be shared with other people. For both you can select which columns you want to see, toggle between table and shelf view, and change sorting.

Hardcover’s lists go a step further:

  • Toggle between different views – Table, Card, or Shelf view
  • Change size between small, medium and large
  • Filter by any criteria in the table
  • Group results by any of these

My favorite way to use this feature is with match percentage. You can head over to your “Want to Read” page and sort it by match percentage. That’ll highlight what books you’ve already saved that Hardcover thinks you’ll enjoy the most.

Winner: Hardcover

Lists

The next type of lists are ones you create to organize or share books in a group. These can be ones other readers created like The New York Times’s 50 Best Memoirs of the Past 50 Years or NPR Top 100 Science Fiction Fantasy Books.

Adding books to lists is similar on both Hardcover and Goodreads. You can add straight from the book button on both. Hardcover also allows adding books to lists from the search results or the list page.

In terms of features, Goodreads Shelves have the same functionality as their Exclusive Shelves.

Hardcover lists have a few additional features.

  • Ranked lists – When you create a list you can decide if order matters in the list or not. For example, in the NPR Top 100 Science Fiction books list, those are ordered from most votes to least votes. The list owner can drag and drop books to create the order they want.
  • Saved Settings – The owner of a list can change the sort order, view and more to get the list view they want. Once they save that view, they can share it with anyone else and others will see the same thing. This is great if you want to share a list with a specific goal in mind.
  • Bookmark Lists – See a list someone else created that you love? Bookmark it for later.

What I love most about lists is how they give you the opportunity to express yourself. Just look at how Bridgerton fans can explore the 12 Historical Romance Novels Bridgerton Fans Will Burn For list.

Winner: Hardcover by a lot.

Prompts

Goodreads has a concept of “Lists”, where you can create a list then anyone can vote on books to add to the list.

Hardcover has a similar concept, but we call them “Prompts”.

In both cases, there’s a single question, prompt or topic, and the wisdom of the crowds adds books to that list until the most popular books rise to the top.