Surprise! Adam is on vacation so you’re getting the November report from me, Ste! In case you don’t know me, I’m on the design side of Hardcover.
Since autumn is THE season to get into a thoughtful, introspective mood, I’ve been thinking about what the most challenging thing is when building a startup like we’ve been doing for the past 3 years.
Paul Graham famously said, “startups don’t die from running out of money, but rather from founders running out of energy”. I moved with my family to Paris from London about three months ago. That took a lot of energy (and changing my diet to mostly baguettes). Yet through all this, the team and I continued working on Hardcover at the same pace. Why? I think it’s because working on it was always more rewarding than the huge effort that it takes.
I’ve found that Paris has a lot of bookshops and libraries, so I’ve been busy leaving some of our custom bookmarks.
That always happens with me trying to explain what Hardcover is in my semi-broken French to the booksellers. I ordered myself a Hardcover cap last week, so that gave me a confidence boost.
But the challenge still remains! This brings me to the other thing I think is important: Clarity.
I’m a big fan of the Farnham St. blog. Each week they send these very useful snippets related to how to structure your thoughts better. This month Clear Thinking by Shane Parrish is the book I really want to read. They also have this neat series on the Great Mental Models:
These three years I’ve been working on Hardcover were a continuous journey to explain it better. We often have a feeling of what we want to achieve. We have lots of feedback from you and all the readers on Discord, which helps a ton.
Our job as founders is to take all that info and articulate it in a way that clearly answers one question: why do you need us? Hardcover has been a continuous journey to find a better answer to that question. Instead of answering that question on this occasion, I’m curious what you think the answer is.
What’s New On Hardcover?
We are in the middle of a huge code migration to Inertia JS. That’s about 25% done. This will hopefully solve most of the errors you get while browsing. Adam has written more about this in last month’s newsletter, for the code-curious.
New Releases on Hardcover!
There’s a new page on Hardcover – Upcoming releases! You can see all the books that are due to be released, as well as recent releases.
For now this is a Lab feature that you can access via the Discover menu or Explore on mobile. Let us know if you found your next read in there!
Coming soon – new Stats
The new and long-awaited version of Stats is getting closer! Right now we’ve wrapped up with most of the UI and the next step will be to hook it up to real data.
We have spent a lot of time making sure these are going to give you the best insight into your reading. Stats are tricky. Reading is about stories and ideas, not numbers.
So we wanted these to give you more than just some figures. For selected stats, we are thinking of introducing Insights. These will tell you more about your reading and also help you make sense of the data:
🎙️ Hardcover Live
In our last Hardcover live we talked about Stats and plans for this quarter. You can see that episode here.
Tune in each Wednesday at noon PST to watch us build Hardcover Live. We don’t yet have any guests scheduled for November. Are you an author or a book influencer interested in being on the show? Let us know!
Other updates
The contributor form for artwork and cover placeholders is now live over here. If you’re an artist who wants to contribute we encourage you to get in touch!
Emma from our Discord community shared an API reference which you can read about here (thanks Emma!)
@oxyJinn uploaded a script that takes in a CSV and adds the books to your Want to read list over here
What’s Next on Hardcover?
November’s focus is the Inertia migration so we can make Stats and the Dashboard load seamlessly with all the data
Starting to prepare the Year in Books 2024
Making the Dashboard UI – if you’re on Discord we’re going to share work in progress for feedback so keep an eye out 👀
Behind the Scenes
This month we hit 19,000 readers!
…and 184 Supporters!
It’s been a big month for sign-ups. We are very close to getting to the point where we can cover Hardcover costs! That is a huge milestone for us. So if you’ve been thinking about becoming a Supporter, now is the time to do it!
Featured Prompt for November 2024
A good twist in any book is when your perception of a character changes. This month’s Prompt comes from @JustCakie:
Have you ever found yourself unexpectedly cheering for a character you initially couldn’t stand? Whether they started as an arrogant villain, a selfish anti-hero, or just someone totally normal who rubbed you the wrong way. What book surprised you by turning a disliked character into someone you rooted for?
Will you end up rooting for these characters too? Check it out and tell us what you’ve picked from that list!
The top 5 is, as traditionally on Hardcover, a mix of fantasy and romance! There are plenty more releases on the Upcoming Books page for you to check out!
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. ♥️
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:
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.
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. ♥️
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.
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.
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.
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.
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.
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. ♥️
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:
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:
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:
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::signeddo
resource :imagesdo
get :crop
get :enlargeendendCode 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.
moduleSignedAssetsclassImagesController < ApplicationController# GET /signed/images/enlargedefenlarge
redirect_to_signed_url("enlarge")
end# GET /signed/images/cropdefcrop
redirect_to_signed_url("crop")
end
private
defsigned_params
@enlarge_params ||= params.permit(:url, :width, :height, :type)
enddefurl
@url ||= Rails.cache.fetch("/signed/images/signed/#{signed_params[:url]}", expires_in:24.hours) do
ExternalStorage::Google::Cloud.sign(signed_params[:url])
endenddefredirect_to_signed_urlactionif url.nil?
head :unprocessable_entityelse
redirect_to "https://cdn.hardcover.app/#{action}?url=#{CGI.escape(url)}&width=#{signed_params[:width]}&height=#{signed_params[:height]}&type=#{signed_params[:type]}"endendendendCode 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:
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.
moduleHasuraclassSignedAssetsController < Hasura::BaseController
skip_before_action :set_paper_trail_whodunnit# Returns a signed asset URL for the given url# GET /hasura/signed_assetsdefindex
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 :forbiddenend
private
definput_url
@input_url ||= params.require(:url)
endendendCode 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.
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. 📚
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 numberand 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:
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!)
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.
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.
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. ♥️
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:
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.
Decide on a software license. We’re working with a lawyer on this one to get it right.
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.
Rotate all API tokens and confirm the app works with minimum external dependencies.
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:
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.
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
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! 😂
The Grandest Game by Jennifer Lynn Barnes (#5 in The Inheritance Games) (49 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.
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. ♥️
After 3 years of building, it feels exciting to be blessed by the algorithm gods for once. 😂
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.
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.
▶️ 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.
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?
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.
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.
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 (🐉🌶️).
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.
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. ♥️
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.
Feature
Guests
Free Readers
Supporters & Librarians
Admins
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 🤫).
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. 😂
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. 😂
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.
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.
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.
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.
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?
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. 😂
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.
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. ♥️
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.
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.
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.
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.
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!
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).
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.
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.
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.
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.
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.
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. ♥️
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.
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. 😂
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.
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.
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.
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?
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.
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).
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.
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. ♥️
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:
A dashboard that shows an overview (ex: Currently reading, your goals, current stats, friends activity)
Find better book recommendations (ex: genre specific recommendations, similar to a book)
Be notified of upcoming book releases (ex: Notifications for the books on your Want to Read list, or next in Series)
Advanced stats and graphs (ex: author demographics, list stats, more graphs)
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 theFeed. 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.
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).
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.
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. 🥳
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 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:
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.
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
System Collapse (#7 of 7 in The Murderbot Diaries) by Martha Wells
Fourth Wing (#1 of 2 in The Empyrean) by Rebecca Yarros
Iron Flame (#2 of 2 in The Empyrean) by Rebecca Yarros
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!
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. ♥️
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.
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!
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.
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:
Hardcover: Sends the same HTML for the book page to the client.
User: Requests their API token from the Hardcover API.
User: Requests info about their current user (to show their avatar in navigation).
User: Requests info about The Way of Kings.
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.
User: Loads a page, say The Way of Kings.
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.
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.
import { Suspense } from"react";
import { loadCurrentSession } from"queries/users/loadCurrentSession";
import CurrentUserClientLoader from"./CurrentUserClientLoader";
// Loads everything about the logged in user on the client sideexportdefaultasyncfunctionCurrentUserLoader() {
const { session, user } = await loadCurrentSession();
return (
<Suspense><CurrentUserClientLoadersession={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;
}
exportdefaultfunctionCurrentUserClientLoader({ session, user }: Props) {
const initialized = useRef(false); // Prevents duplicate loading for some reasonconst 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.functionloadFragmentCache() {
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) {
returnfalse;
}
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.
"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 sideexportdefaultfunctionCurrentUserClientManager() {
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();
} elseif (token) {
// Done loading user, or user cache changedif (userId && currentUser?.id) {
dispatch(currentUserActions.setUser(currentUser as UserType));
}
// No current user, done loadingif (!userId) {
dispatch(currentUserActions.setUser(null));
}
}
}, [token, userId, currentUserData, startedRefresh?.current]);
returnfalse;
}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.
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
exportdefault`
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.
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.
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:
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.
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.
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.
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.
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. 😂
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. 😂
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.
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!
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
Fourth Wing (#1 of 2 in The Empyrean) by Rebecca Yarros
System Collapse (#7 of 7 in The Murderbot Diaries) by Martha Wells
Iron Flame (#2 of 2 in The Empyrean) by Rebecca Yarros
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.
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.
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. 🏔️
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?
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.
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. 📫
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!
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.
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. 👨🚀
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.
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.
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.
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.
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.
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
Iron Flame (#2 of 2 in The Empyrean) by Rebecca Yarros
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
Esrahaddon (#3 of 3 in The Rise and Fall) by Michael J. Sullivan
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. 🏔️
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.
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.
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”.
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.
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.
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.
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. 😂
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.
System Collapse (#7 of 7 in The Murderbot Diaries) by Martha Wells
Iron Flame (#2 of 2 in The Empyrean) by Rebecca Yarros
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.
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. 🏔️
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”.
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.
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.
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:
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.
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.
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!
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.
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. ☀️
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).
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.
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
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.
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.
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.
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. ☀️
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.
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.
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….
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.
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! 📚
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:
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.
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.
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.
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.
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. ☀️
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.
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.”
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.
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! 📚
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:
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.
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.
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.
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. ☀️
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.
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! 📚
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:
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.
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.
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.
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. ☀️
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)!
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.
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
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.
AppenderLibrarian – 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.
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 — meaningpretty 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.
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.
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.
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.
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.
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.
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.
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.
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!
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.
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.
Goodreads
Hardcover
Year Founded
2006
2021
Age
18 years
2.5 years
Owner
Amazon
100% employee-owned
Public API
Deprecated REST API
GraphQL API
Data Export
CSV
JSON 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)
• 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.
• 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
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.
Goodreads
Hardcover
Exclusive Shelf
Status Lists
Shelf
List
List
Prompt
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.
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.
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.
With prompts you can share your favorite books on a topic.
At the moment only the @hardcover user can create Prompts. Once the community grows more we’ll allow anyone to create them.
These could be as general or personal as you want and as public or private as you want. You could create a prompt asking your friends what their favorite recent books are. Genre-readers could ask about recommended books in a specific niche. Influencers could create Prompts for what they should read next.
This is just the start. We hope prompts will be an amazing way to share your favorite books with the community while also finding new favorites.
Winner: Tie for the feature, Goodreads for the community size, and past prompts/lists, Hardcover for the future of this idea.
Book Data
Let’s face it, all the features in the world aren’t going to matter if the books you’re looking for aren’t there. When you hear about a book and want to add it to your want-to-read list, you shouldn’t have to go in and manually add it to the system. That’s too much work to ask most readers to do (and I myself wouldn’t want to do it very often).
Goodreads has Hardcover outmatched here by an order of magnitude. By some accounts, Goodreads has 1.5 billion different books. Many of those are duplicates and multiple editions of the same book.
Their concept of a “book” is an edition of a book. The Hobbit, for example, has 1,299 different editions. That doesn’t even include compilations (sets where The Hobbit is one of many books).
Hardcover has roughly 30 million editions of books, and roughly 500,000 total unique books. We actively try to merge duplicates together so that there is one canonical page for every book on the platform.
On Hardcover, the URL is /books/the-way-of-kings. Easy to understand what’s going on there. We have 15 different editions of the book right now.
On Goodreads the URL is /book/show/7235533-the-way-of-kings – still enough to understand it, but not exactly easy to tell if you’re at the “right” version of the book. They have 85 different editions including many in other languages that Hardcover doesn’t have each with its own page.
It’s unlikely that Hardcover will ever have the book database that Goodreads has. Goodreads has Amazon’s data, hundreds of employees, and hundreds of millions of readers filling in the gaps in their library.
As of today, Hardcover has one backend engineer, 500 beta testers and a few APIs to pull book data from.
The question is how good is good enough. How many searches for books with zero results would you put up with before giving up.
My guess is that the median number among most readers would be zero – at least in the first few days of using a platform. If I search for a book and it’s missing, that’s a sign that they don’t have the data that’s important to me.
We’re actively working on improving our book database, but we have a long ways to go. Now when you search for a book on Hardcover we’ll also search Google Books for it. If the book exists on Google Books, you can view it on Hardcover.
Goodreads also has a deprecated book API, while Hardcover has a GraphQL API in alpha. Goodreads allows for exporting your data to a CSV file. We have a similar export on our roadmap.
Winner: Goodreads, but Hardcover might be good enough.
Social Network
Both Hardcover and Goodreads are social networks for readers. On both, you can follow other readers and see a feed of what they’re up to.
Friends and Followers
The way friendship works is slightly different. Hardcover uses a friend model similar to Twitter, TikTok and Instagram. You can follow anyone. You’ll see what they’re up to if their account and/or activities are public (or they’re friends only and also follow you back).
Goodreads gets a little more complicated. You can follow another reader or an author, but also “friend” other readers. Friending a reader sends off a friend request to the user who must approve it to become friends.
We think that having privacy options combined with following is enough to get the same functionality with less to setup and without the need to approve friendship requests.
Winner: Hardcover for simplicity.
Social Feed
With Hardcover’s feed, you’ll see whenever people you follow update their status on a book, add a book to a list, make progress on a goal, or answer a prompt. We’ll add more activities to the social feed as we continue to build out new features.
With Goodreads, you’ll see all of this, but also when a friend friends another reader and activity your friends have liked. You can comment and like friends’ activity. On Hardcover you can only like activities (we plan to add discussions eventually).
Winner: Goodreads due to comments and a larger network.
Privacy
Everyone reader I’ve talked to has read at least one book in their life that they wouldn’t want the entire world to know about. It could be due to timing (pregnancy and child raising), trauma, personal discovery or even a steamy romance.
Keeping these books private in the way the reader wants is extremely important. The wrong settings could share very personal information that you’re not ready to make public.
The privacy side of Goodreads is a minefield. You can set your profile to be public, friends only or logged in users only – but you can’t do the same for your activity on books! Every review you write or status you set is public knowledge to anyone who wants to know it.
Hardcover goes a different way with two main settings for controlling privacy.
The first is your account privacy setting. By default, everything you do on Hardcover will use this privacy setting. Books you read will have this setting and lists you create will have this setting. If you set this to “followers only”, that means that only people you follow will be able to see what you do on Hardcover.
If you’re like many people, you don’t mind most of your activities being public. We think most people will set this to public (which is the default), but then change this setting on individual books and lists.
Take this button for each book. From here you can control what the privacy setting is for any given book: Public, friends only or private just to you.
You can set the privacy level for any book to Public, Friends only or private just to you.
The same functionality works for lists – each one can be public, private or friends only.
Winner: Hardcover.
The Rest of Social
When it comes to everything else social about both sites, Goodreads has Hardcover beat in net number of features. You can take quizes, join or run clubs, contribute to book trivia, ask authors questions and more.
Recently Goodreads decided they had too many features and would remove some – including trivia and quizes.
Winner: Goodreads for size.
Application Platforms
Goodreads has a website, an iOS application and an Android application. This is what you’d expect from a billion dollar company.
The applications themselves are somewhat barebones. The basic book tracking and book lookup features are there, but in depth discovery is favored on the website.
Hardcover is website only right now. We do have a mobile friendly website that looks like an application. We recommend saving this as an app on your phone – that way you can open up Hardcover like you would any other app and it’ll open to the Hardcover website.
A look at the feed on mobile
We have no doubt iOS and Android applications are in our future, but we’re not there yet. As we iterate, it’s easier to do that on the website than with an app. Once we stop iterating and understand what people use the most, that’ll be when we start a mobile app.
Winner: Goodreads
Which is Right for You?
Hardcover is still in beta, but we want to hear what you think! Describing any number of features isn’t going to be half as valuable as using Hardcover and seeing if does what you’re looking for.
Here’s what I’d recommend trying:
Sign Up for Hardcover. We’re still in beta, but if you don’t mind the occasional dust and rough edges, you can start today.
Import your library from Goodreads (or StoryGraph). We’ll import every book you’ve saved, your ratings, reviews, lists you’ve created and which books you marked as “owned”.
Head over to your “Want to Read” page and sort your books by “Match Percentage”. This will show you the books Hardcover thinks you’ll love the most.
If you run into any issues, or have a wishlist of features you’d love to see, join our Discord community and let us know! We’re constantly discussing what we could build and basing it on community feedback.
I’m extremely excited to share what we’ve been up to over the last few months at Hardcover. We think this is going to be hugely helpful for readers in our overall goal of helping people find life-changing books.
Today we’re announcing the release of Airlists, our new list experience across Hardcover.
So what are Airlists? To put it concisely:
Airlists are a tool for you to use to filter collections of books to answer whatever questions you have.
When we talked to readers about how they use lists one thing stood out: there’s no single way to use them 😅. Readers wanted to use lists to share their favorites, organize their books and decide what to read next – amongst other reasons.
With that feedback in mind, we set about to make the best book list experience on the internet. Something simple enough for anyone to use but feature-rich enough for power users to have the experience of their dreams.
AirLists
Enough talk, let’s show how you can use Airlists!
Custom Views with Different Sizes
We’ve added three different views for your books, each with a different size: Shelf, Card and Table.
Shelf view will show just the covers. Card view shows a little more data including title, authors and your status for the book. Table view gives power-users the ability to control exactly what they see.
There are 3 views for Airlists: table, Card and Shelf view.
Custom Columns, Sorting and Filtering
Depending on what you’re trying to do you’ll want to see different columns. You can select which columns to see and in what order.
Once you have the data you want, you can sort or filter it by any column. Which columns you select will only be reflected in the table view, while sorting and filtering will also change the Card and Shelf views.
You get to decide which columns to see, what order those columns show up, the sort order and even filter the books down.
Looking for what to read from a list? Just sort by Match percentage to see what books Hardcover recommends.
Group Books Together
Long lists of books are impossible to understand at a glance. It’s difficult to pull out common themes and draw conclusions across the entire list.
That’s where groups help out.
Groups allow you to collect all books with a similar attribute together. Think of it like sorting by a specific column – then collapsing the results into a single row.
Video does a better job of this than I ever could explain:
Group authors on your “Read Books List” to see what your most-read authors.
You can group by any column. Rating is one of my favorits.
To be honest, we don’t know all of the ways this option will be used. If you’ve found a great use for grouping please share your list with us on Twitter (@hardcoverapp).
Save Your List View
This is the thing I’m most excited about with Airlists. We wanted to allow readers to express themselves through lists – creating the exact view they want to share.
We wanted something so exciting that when you share a list, people are amazed.
Here’s how that works. Let’s say you’ve created a list and added some books to it. You’ve decided which view, size, and data to show. How do you share it?
Just copy the URL!
The URL stays in sync with whatever you’re seeing. If you share that URL out, then anyone who visits it will see the same columns and data that you see – but with their own rating and book status.
If you’re the owner of a list, you have a few other options. You can also reorder the books within a list, change the view, columns shown, and anything else – then save it. Whenever someone visits the list they’ll see your custom view.
You can reorder a list and save it. Anyone else who views the list will see your saved view.
This means that no two lists will look exactly the same – even if they have the same books on them. One list creator might optimize for their own personal ranking of the books. Another might want to share covers to get a quick overview.
Oh, and one more thing: You can give a reason for why you added a book to a list.
The Card view pulls out colors from the cover to make books stand out even more.
You’re in control of how the list you share looks.
Where Can I Try Airlists?
Airlists are available right now for everyone. If you’re new to Hardcover, I’d recommend importing your library from Goodreads or StoryGraph. Within an hour or so you’ll start getting Match Percentages for books.
Our hope is to show Airlists whenever we show a bunch of books all at once. We’re using them in four places to start:
Your Books by Status – Your Want to Read list, Currently Reading list, Read list, and Did Not Finish lists.
Your Custom Lists – Lists you’ve created or ones you imported from Goodreads/StoryGraph.
Your Goals – The books that you read towards a reading goal.
Prompts – The books most answered within a prompt – along with the ability to upvote a book in a prompt.
In all cases, Airlists behave mostly the same. The only difference is additional controls if you’re editing a list you own.
Try Airlists Out!
Ok, that’s a lot. Our hope is that Airlists will be a part of how you make reading decisions by giving you one more tool in your decision-making process.
Here are a few ways you can try them out today:
Check out your “Want to Read” list and sort it by Match Percentage.
Look up your favorite book (mine is Hyperion by Dan Simmons) and check out some lists other readers have created with it.
And of course, create (or update) a list! We’d love to see what you create with Airlists. Tag us on social (@hardcoverapp on Twitter and TikTok or @hardcover.app on Instagram), or let us know on Discord.
We’ve launched the first version of something we’ve dreamed of since our very first month: Match Percentage!
What is Match Percentage?
For every book you haven’t read, we generate a score from 1% to 100% for how much we think you’ll enjoy that book.
To start, this score is entirely using collaborative filtering. Collaborative filtering is a technique where we use every rating you’ve ever made to find other readers with similar tastes in books. We look at what those users have rated books you haven’t read, and voilà, Match Percentage!
Today this is a context-unaware filter. It doesn’t take into account the author, genres you love, or any other information. As we grow and learn more, we’ll improve this algorithm to use more data.
Here’s what this looks like in practice. It’s attempting to find people with similar tastes and predicting based on that.
Eventually, we want to show it wherever we show a book (or at least make it available). For starters today it’s available in a few places:
Book Status Lists: Your Want to Read List, Read List, etc.
Lists: On all list pages.
Your Feed: Showing Match Percentage for books people you follow have interacted with.
Single Book Page: You can see your Match Percentage on any single book page.
Search Results: Why go all the way to the book page? You can even see Match Percentage in search results.
You’ll only see Match Percentage if you’re logged in. You’ll also need to have rated some books – the more the better!
For a book to have a match percentage:
It must be a book you haven’t rated.
It must have been rated by at least one person.
There must be some set overlap that connects the books you’ve read with the books someone who’s rated it has read.
In other words: the more books you rate, the higher the chance of seeing a match percentage for a book.
Right now this algorithm is based on a relatively small sample size. As more people join Hardcover, the algorithm will get better and better.
I Just Joined, When will I see Match Percentage?
Match Percentage is pre-computed. That means that behind the scenes we’re calculating your possible rating for every book we can. It’s a lot of pre-calculation for many books you’ll never even look at.
We update match percentage every hour for anyone who was active during that time. If you interact with a book in any way, your scores will be updated within an hour.
We recommend you import your library from Goodreads or Storygraph then wait an hour.
#1: See Your Match Percentage for Any Book
If you just want to see what your match percentage is for a book, you can search for it and view the book page. If we were able to calculate a score, we’ll show it there.
Match Percentage for a single book
#2: See Match Percentage in Search Results
When we talked to readers and users of other book platforms, one thing stood out: the process for adding books was very similar.
Readers would hear about a book, search for it, visit the book page and then save it to their “want to read” list for later.
But why go all the way to the single book page if you just want to save it from the search results? Hardcover makes it a step easier by showing the Match Percentage and an easy way to save it right from the search results.
#3: Sort Your Want to Read List by Match Percentage
The best way to use it right now is to head over to your “Want To Read” list and sort it by “Match %”.
I’ve heard Joe Abercrombie a bunch – I should check that one out. I’ve also heard of that guy on the bottom.
This gives you an instant look at what books Hardcover thinks you’ll enjoy the most. These numbers will change over time as you rate more books and other people join Hardcover (and as we improve the formula).
#4: See Your Top Books From Another Reader
Whenever you see another reader on Hardcover, you can head over to their “Read” list to see every book they’ve ever read. For example, I can head over to my wife Marilyn’s Read books. On there I can sort by Match Percentage and see which books on there I might enjoy the most.
Books Marilyn has read that I haven’t sorted by Match Percentage.
I love having someone to chat about a book with once I’ve finished it. Choosing a book from someone’s list that they’ve already read is a great way to deepen friendships!
Want to find someone to try this out on? Check out the Supporters Page.
#5: Find Top Books on Any List
Lists are one of the core features of Hardcover. You can create lists with any number of books on them for any reason. This includes creating lists that exist outside of Hardcover.
For example, on our Lists page, we’ve created dozens of lists from popular places: NPR, The New York Times, Time Magazine, Condé Nast, and Pulitzer Prize-winning Novels.
But narrowing down 50 books to the one I should read next is more difficult. That’s where Match Percentage comes in. If you’re logged in (and have rated enough books), you can sort these lists by Match Percentage.
Head over to our List of Lists to find some books that match what you’re looking for.
#6: Remove Books You’ll Never Read from your Want To Read List
If you’re like many readers, your Want to Read List grows at a faster pace than your Read List. This list is there to save anything you might want to read someday.
I don’t revisit this page nearly enough. On Goodreads, it’s very difficult to explore it in ways that are useful for discovery.
One great way to clean up this list is to sort it in reverse by Match Percentage. This will show you the books we think you’ll like least.
When I did this, I was surprised to see Lord of Light, a Roger Zelazny science fiction book that Reddit absolutely loves. With a score for me of 54%, it’s one of the lowest. Now I want to read this one to test the algorithm and see if it’s on the right track.
#7: See Match Percentage of Books Your Friends Interact With
On your Feed Page, you’ll see all kinds of activity from other readers. That includes answers to prompts, books added to lists, and (of course) what books people are reading, saving, and finishing.
You’ll also see a match percentage from any books we can calculate one for. I’m a lot more likely to investigate a book on my feed if I see that it has a very high match percentage.
I’d never heard of Cloud Cuckoo Land, but looks like it might be a good match. Thanks @gabby!
How is This Free?
Hardcover is bootstrapped, 100% free, and with no ads. We’re able to do that because we’re small. This feature alone will not scale very well.
As we grow and more readers join our expenses will no doubt go up. We’re relying on our Patreon Supporters to make this project a success. If you’ve been waiting for a Goodreads alternative, I hope you can support and help build the next generation book social network.
What’s Next for Match Percentage?
While we’re only showing it in a few places right now, we can show it anywhere (and everywhere!).
We’re not even showing you the books that have the top match percentage across the site! That’ll come next.
If there’s a place you’d like to see it, or you have an idea on how we could improve Match Percentage, join our Discord and let us know.
As of today, it’s been a year since we officially started working on Hardcover! I wanted to use this milestone to pull back the curtain and share what expenses look like for the first year of a bootstrapped startup. That also includes how we got here and what we’d do differently if we were starting from scratch tomorrow.
A look at our Geckboard dashboard.
I hope this article is a guide to how to build a startup you love working on during your first year. This isn’t about how to maximize revenue or optimize A/B tests–there are better posts for that. This is an article about how to build products people love, build a team you love working with, and set up your startup for long-term success.
If you haven’t been following Hardcover’s journey up to this point, here’s the tl;dr to get you up to speed:
We’re building a book tracking and discovery site for book lovers to replace Goodreads and cut one more Amazon service out of our lives. You can read why in our manifesto or dig deeper with our 13 Reasons Why We’re Building Hardcover article.
We’re not taking outside funding. Instead, we’re using the Slicing Pie model for equity to help spread ownership amongst those working on it, and plan to give away half of Hardcover’s after-tax revenue to causes that support reading (and yes, we do mean half of our revenue, not half of our profit).
We’re a team of 1-person full-time (me) and 5 people part-time putting in <10 hours a week. This averages out to about 50 hours a week of work on the project.
The team includes a Product Manager/Full-Stack Engineer (me), UX Researcher/Content Specialist, a Designer/Front-end Developer/Marketer, a back-end developer, and a front-end dev.
We’re funding the initial development from our own wallets and through Patreon (which we’re just launching today!).
It took us a year to get here. We’ve held bi-weekly team meetings, collaborated on video chat, Miro, Figma, and Discord, and pushed a little bit farther forward each week.
Looking over what would become Hardcover’s social features.
We’ve hit a bunch of milestones along the way:
Day -7: Jokingly Tweeted about creating a Goodreads alternative out of spite for Amazon. Decided to see if anyone wanted to build it with me and posted it on the /r/cofounder subreddit looking for people.
Day 0: With 5 people interested, we kicked off “Untitled Book Site Kickoff & Sprint” with a brainstorming session about what we’d like to do together.
Day 14: Decided on a name (Hardcover), registered a domain, put up a landing page, started collecting emails, and began growing our Twitter & Instagram audiences.
3 Months: Released a rough internal MVP with the ability to sign up, import books from Goodreads, change your status on a book, and manage lists.
6 Months: Released a more polished MVP to our Discord and newsletter.
9 Months: Released our public beta with social features (social feed, profiles, friends, private/public/friends-only books).
12 Months: Currently iterating based on beta feedback!
A look at the feed page today.
After 12 months the feedback we’ve gotten is that we’re a rough replacement for Goodreads. We’re missing a bunch of data, we lack a mobile app and there are limited ways to discover new books outside of the feed. But with each iteration, we’re a little closer. We don’t have a set date on when we want to be out of beta, but I’d hope within the next year.
You might be thinking: “Only 400 users in the first year? Sounds like a failure.” Well, here’s the thing: we have enough users that we’re getting a lot of great feedback, and we’re able to iterate on the product and continue building it out.
There’s a bunch of initial leg work to create a book tracking platform. Loading in data from thousands of books, authors and series, creating a Goodreads importer, and building the actual site. Not to mention a mobile app–something that we realized was needed from the start. This first year has been focused on building out those big pieces one by one.
If we had 10x the users at this point much more of our time would be spent keeping everything working with much less time building it out. I see why so many startups use invite codes to limit new users. Sometimes small is fast.
A Year of Spending
With that out of the way, let’s take a peek at what we’ve spent over the last year. Our Income & Expenses page breaks down what we spend each month, but not where that money is going.
Expenses By Category
So how does a bootstrapped company spend $9,207 in a year? Let’s break it down in a few different ways starting with a high-level category.
Category
Cost
Hosting & Site Operations Website, database, image hosting, API, etc.
$5,410.78
Services & Tools Figma, Noora, Typeform, Termly, email etc.
$2,253.81
Operational Expenses Toggl, Stripe Atlas LLC, legal, etc.
$1,020.00
Marketing Expenses Sticker giveaways, merch, etc.
$523.07
Payroll & Outsourcing Paying employees and contractors, etc.
$0.00
Total
$9,207.66
We haven’t spent any money so far on payroll, advertising, or legal fees. That will come in time, but there’s no need to do it yet. We’ve managed to create a lot from this.
Is this good? I have no reference. It’s the most money I’ve personally ever spent on a project. Every project is different and unique based on the skills and time of those involved. In our case, the skills of the team are focused on building user-focused products. We’re paying for services that help us learn and iterate.
Since we’re bootstrapped, these costs have all been paid by the team working on it. My wife and I have covered $8k+ of it so far, with the rest pitched in by the team.
Repeating the Common Startup Advice
When it comes to startups there are two pieces of advice that get thrown around often:
Validate your project as quickly as you can. This advice almost usually involves getting to a certain number of users or getting people to pay you money.
Don’t fund your own project. You’re already risking your time, let someone else risk their cash.
If you just look at the numbers ($9,207 spent and 400 users), we’re failing at both of these. In our eyes, we’re not. Here’s why.
Validate your project as quickly as you can
There’s a shortcut to validation: are others doing it successfully? If yes, then the idea is validated. The big question then is if you can do something different enough that people will switch.
That’s been our big question. It’s a difficult one to know you’ve answered it until you get overwhelming support. We have overwhelming support at the prototype level for at least one differentiator. We’re starting to build that one out and we’ll see.
Our initial prototype was mostly focused on discussions. We might bring that back later, but it wasn’t validated by our research at this time.
Competitors are another form of product validation. StoryGraph, another great Goodreads alternative, is set to hit 1 million users very soon! There’s no better validation than seeing a project with a similar vision do so well. Yet, when we talked to users from other Goodreads competitors, there was still something missing. Solving the problems mentioned in those discussions is what we want to focus on.
Side note: we’d all be extremely happy to see any site take market share from Goodreads. If that’s us, that’s great. If not, we’ll keep rooting for all the other underdogs until one breaks out as the clear winner.
Don’t fund your own project
There’s a huge difference between spending $9k on small expenses versus having employees on the payroll. The thought of paying people in cash from my pocket (as opposed to equity) to work on Hardcover while we’re still pre-revenue and without outside funding absolutely terrifies me. If we were going that route we’d take funding for sure.
There’s still an elephant in the room:
How long and how much money would we personally invest in this project before it starts making money or we stop paying the bills?
For a project like Hardcover with a slow path to success, lasting long enough to grow is key. One of the reasons why there aren’t competitors to Goodreads is because it takes years. We knew that going into the project. We weren’t going to launch an MVP and see people flock in. We knew it’d be a long game involving years, a struggle to find a differentiator, and a large focus on search engine optimization.
While this isn’t a question I know the answer to, I feel like we’re just getting started. I can’t imagine not giving Hardcover at least a few years of my life. To give some background as to why I need to share a little about myself.
👋 Hi, I’m Adam the founder of Hardcover. I’m 39 years old and live with my wife Marilyn (who’s a part-time co-founder on Hardcover) and our 13-year-old dog Lily here in Salt Lake City, UT.
Marilyn, Lily, and Adam at the Cherry Blossoms at the Salt Lake City Capitol Building.
I spent my 20’s and early 30’s working at enterprise companies and startups before joining Code School (Rails for Zombies, Try Ruby, etc) as an early employee helping to teach people how to code. I absolutely loved it there and learned a tremendous amount from Gregg and the rest of the team.
One thing I learned during this period was how amazing it is to work with people at the top of their game at a startup that’s both profitable and hasn’t taken funding. We were a team of developers building educational content for other developers and loving it! I mean, listen to this jingle from a course I worked on:
https://www.youtube.com/watch?v=gBnhe7JBovI
When we started Hardcover, my hope was to recreate that feeling. We would create an environment for book lovers, built by book lovers and owned by book lovers. It wouldn’t be owned entirely by me – it would be owned by whoever worked on it (proportionally to their work). It could outlast me on its own and wouldn’t be built with the goal of being acquired. One that was designed from the start to be user-centric years into the future without investors constantly nagging for a return.
When Code School was acquired in late 2017, my small slice of equity was suddenly worth something. I had a sudden ~$300k windfall and a bunch of equity in Pluralsight (a private company at the time). There were no golden handcuffs forcing me to stay, but I stuck around another 2 years to help the transition as much as I could.
Six months after Pluralsight went public in 2018 (after the stock trade embargo ended) those shares were worth something and I was able to cash them out. I decided to leave Pluralsight around then and slowly sold off most of my shares over the next year.
The total value of those shares ended up being a little under $1 million before taxes. It was the kind of life-changing startup story I had only dreamed of. It was the kind of money that would allow me to pursue other creative projects on my own.
After I left my job in 2018 I slowed way down. My main project was a blog that helped people learn how to invest confidently without being taken advantage of. I’d started it years earlier after a $100k inheritance when my mom passed away when I was 23. While trying to figure out what to do with those funds, I realized how many sharks there are in the financial world. I began writing about everything I wish I had known when I switched from living paycheck to paycheck to investing and gave it away for free. I’ve worked on Minafi for the last ~5 years and am still extremely proud of it (An Interactive Guide to Early Retirement and Financial Independence is my favorite).
All this to say two main things:
I’ve been extremely privileged from a financial standpoint. I don’t need Hardcover to be a major financial success (but it would be nice for it to make enough to pay for itself and to pay a liveable wage for those working on it).
What I love more than anything is creating products that people love using that allow them to be more successful in their lives. Hardcovers’ goal to “help people read life-changing books” is in line with that too.
Spending some of our own money to make this happen seems like a hobby more than a business at this point. I don’t want to gamble everything on a project where so many competitors have tried and failed (seriously, there are dozens of Goodreads competitors that haven’t made it). But at the same time, it’s rare to find a project that’s fun, exciting, and aligns so perfectly with my own values.
Ask me again in 2 years or when we’ve spent $50k. 😅 If our revenue isn’t at least covering expenses by that point then I’d be concerned about the long-term viability of the project.
Expenses By Payee
Let’s dig more into what we’re paying across the board next – sorted by cost – for all expenses above $100.
Payee
Category
Cost
Heroku
Hosting
$3,602.58
Hasura
Hosting
$1,110.49
Geckoboard
Services
$652.48
Toggl
Operational Expenses
$620.00
Vercel
Hosting
$570.18
Noora
Services
$413.00
Stripe Atlas
Operational Expenses
$400.00
Figma
Services
$395.95
Sticker Mule
Marketing
$282.31
Tuple
Services
$200.00
Termly
Services
$180.00
RafflePress
Marketing
$159.20
DataDog
Services
$154.21
Font Awesome
Hosting
$99.00
All other expenses are under this including $66 for email from Zoho, domain registration for $63 from Namecheap (did you know *.app domains have dynamic pricing ?), and mailing swag to contest winners.
We’re using Google Cloud with Imgix for book covers and user avatars, but so far the cost of hosting those is equivalent to a few coffees out per month. Those costs will automatically scale up as we grow.
Lessons Based on Hardcover’s First Year
Some of these expenses were well worth it; others not so much. A few of them were great, but not made at the right time. Here’s a look at what we learned from this so far.
Lesson 1: Don’t Reinvest the Hosting Wheel
Relevant expense: Hosting: Heroku ($3,602.58), Hasura ($1,110.49) and Vercel ($570.18).
We host the Ruby on Rails app and the database on Heroku. According to Heroku, our database is currently 155 GB (!) which is our largest expense at $250/month ($200 for production, $50 for staging).
Our production environment. Our staging runs a $50 database & cheaper dynos.
The thing about books is that they have a LOT of data. For each book, there are multiple editions, multiple authors, series, genres, subjects, time periods, covers–and that’s before we even get into user-related data.
We were extremely fortunate to stand on the shoulders of Open Library and use their data as a starting point. That helped us start with a bunch of data, but with a large database costs upfront.
With the recent security breach at Heroku along with slightly lower hosting costs elsewhere, we’re thinking about moving to Render. I’ve been using Heroku for more than a dozen years and know it very well. Even though Render does cost more, there’s the added bonus of knowing how it works.
While I don’t regret using Heroku, I’d recommend using whatever you know best – even if that means a slightly higher price tag. I’d rather use something that allows me to focus on building than optimizing our costs down to the penny.
I’d also love to move to a hosting provider that isn’t using AWS (Amazon), but right now Heroku, Hasura, and Vercel all use it. Our team currently lacks a DevOps expert, so maintaining environments isn’t something we want to take on. Fortunately, our three hosting providers are in the same data center.
We host the main hardcover.app website (which hosts everything visible to users) on Vercel. Hardcover is a Next.js app and Vercel is made by the creators of Next.js. They also have insane analytics built right into the platform:
When we first started, we would add people to the Hardcover team on Vercel. This was mostly done to use GitHub actions to check each commit and pull request was deployable.
Our 3 GitHub Checks running for each commit.
That ended up having a few issues. For starters, since I was the only one full-time, I was the only one deploying. We were paying $20 per person to run these checks. With 5 developers at one point, we were suddenly paying $100/month!
The only feature everyone used was the ability to pull in environment variables from Vercel (which is honestly great. If you know of another way to share environment variables for cheap, I’d love to hear it). I still use vercel env pull to get my environment variables locally, but now I just share those out with the team. It’s more work, but it saves the extra bucks.
We already had a GitHub action running npm run lint as well – which effectively told us the same thing: are we safe to deploy?
If you’re a small team using Vercel and don’t have money to burn, I’d recommend having one person be the deployer and give them access. Also, you don’t need to pay for insights ($10+/month) until you have users actively using your site.
Lesson 2: Focus on the API
Relevant Expense: Hasura, Hosting, $1,110.49
A year ago I’d never heard of Hasura. Now I’m one of their biggest fans, and tell people about them every chance I get.
If you’re not familiar with Hasura, it aims to be the single API for your application. Every API request for Hardcover flows through there. Hasura connects with your database and provides a GraphQL API with create, read, update and delete access. You can also use roles and permissions, to decide what tables and columns different users can access.
We allow readers to track what books they’ve read and want to read on Hardcover. But we also support privacy settings – allowing you to track a specific book with custom privacy settings. There are many use cases for this: not wanting to clutter your feed with books you read to your kids, reading a 🌶️ spicy book you’d rather keep to yourself, or just keeping your personal life off social media.
Hasura allows for this by controlling permissions down to the row level. I don’t need to worry about writing API endpoints that nitpick permissions – Hasura does it for me.
Not every action can be handled by Hasura. For those that can’t be, Hasura delegates the requests to the Rails app. To users, there’s only one API.
Later on, when we implement ElasticSearch to improve our current search, we’ll be able to integrate that with Hasura as well. That’ll mean we can create a single GraphQL API to everything we currently have plus ElasticSearch. Once we to a solid point down the line, I can’t wait to see what our readers build with this API.
Since we’re building a Next.js app with this API, we’ll also be able to use it for our mobile apps down the line. If our mobile apps need additional endpoints, we can create them there and only use them on mobile (ex: authentication).
Oh, and Hasura is also open source so you can run it on your own servers. We’re paying for hosting so we don’t need to worry about it.
Lesson 3: Let the Team See Everything
Relevant Expense: Geckboard, Services, $652.48
Since we’re a distributed team, I wanted everyone to feel involved in the project and have easy access to our data. Geckoboard connects to our database, Google Analytics, and a bunch of other sources to pull in data to a single place. Setting up this dashboard only took a few hours total over the last 6 months.
Hardcover’s Geckboard Dashboard
Geckoboard is $49/month, but we prepaid for a year which knocked that down to $39/month. If you’re working with a distributed team I’d highly recommend it. It’s been amazing for being able to quickly answer questions in a way that shares the data with the rest of the team.
If we weren’t using Geckboard we’d still want to make this data available somewhere. That could be a simple dashboard in your admin. If we weren’t using GeckoBoard, we’d probably add this to Active Admin, which we’re using on the Rails side.
Lesson 4: Figure Out an Equity Model that Encourages Collaboration
Getting equity perfect for a startup is impossible. I’ve yet to hear of a case where every employee said they felt properly rewarded. There are always going to be some people working harder than others and getting less equity.
Toggle breakdown of hours worked in the first year. Split 1,500 hours by me, 1,280 by the rest of the team.
In an attempt to make equity more equal, we’re trying something a little different and using the Slicing Pie equity model. Here’s the tl;dr of how this works:
Everyone starts with zero equity.
Instead of getting paid in cash, people are paid in equity.
Each person has an hourly salary based on their responsibilities.
People can also get equity in exchange for paying bills and a few other things.
That’s pretty much it – at least until you get into more advanced use cases (equity for equipment, real estate, sale incentives, etc).
The goal of this is to create a company structure where everyone who works hard and sticks around will be compensated the most. Even people who only chip in a few hours here and there can be compensated with a small chunk of equity.
If/when Hardcover makes enough to pay everyone working on it a decent salary then we’ll stop paying people in equity. Whatever the equity split is at that time is when it’s locked going forward.
At the moment I own about 75% of Hardcover, with the rest owned by those who have worked on it the most.
The only reason we’re able to control equity in this way is that we’re all tracking our time and we’ve built up a lot of trust in each other.
This hasn’t always been easy. During the last year, we’ve had ~10 people join the team and part ways. These are people who have been extremely excited to join, but for one reason or another it didn’t work out. When someone leaves the team (without vesting) they don’t keep their time equity, but they do keep equity for cash they put in.
This was a difficult decision, but I’m ultimately glad we settled on it. It allows us to always be ready to work with talented people who can help the project while maintaining control by those who are actively working on it.
If you’d like to know more about Slicing Pie, check out Gregg’s videos on it. My only regret is not tracking everyone’s hours from their first day – something we now do when we bring people on board.
Lesson 5: Get feedback until you start hearing the same thing over and over again
Relevant Expense: Discord, DataDog, Noora, Figma.
Getting feedback when you haven’t built anything and don’t have a huge following is tough. When we started Hardcover, my entire “audience” included a Twitter following of ~3k and ~2k subscribers to my newsletter. Since I’m not a book influencer, the overlap between Hardcover and my audience was relatively small.
That meant that in order to talk to people about this idea we’d need to hunt some people down.
The first thing we did was brainstorm a bit about who we’re aiming to build this for. That might sound obvious, but it’s not! There are lots of readers out there. Would this be for teachers and education professionals? Authors and publishers? Kids learning how to read? Only for readers in a specific genre? Casual readers? Ebook Readers? Audiobook listeners? Who do we want to build for?
Our brainstorm on Miro
As a distributed team we used Miro to brainstorm a bunch of questions to get to the person we wanted to build for. Here are some of the questions we brainstormed as a team:
Persona
Who is having the problem?
Who will benefit from our solution?
What do we know/assume about them?
What are some relevant facts about them?
How can you identify them?
Why?
When/Where is the customer experiencing the problem?
What is the problem from the customer’s perspective?
At the end of this brainstorm, we had a guess on who we were building for: serious readers. We had also brainstormed a bunch of places these serious readers hang out!
Once we had the who in mind, we drafted a discussion guide in Google Docs. This was a series of questions we wanted to ask serious readers. It focused on open-ended questions like “what book apps or websites do you use? Why?” and “Can you walk me through how you use <x>?”.
While it’s possible to turn these questions into a form and send that to people, at this stage we wanted to have conversations. People open up so much more when you’re talking with them compared to answering a form.
The first thing we did was tap all of our existing networks. That included about ~5k different people between everyone on the team. From there we only had a few that were up for a chat.
Next, we started scouring Reddit. We’d personally reach out to people who posted comments about Goodreads (both for and against) and scheduled video calls. Many more people than I expected agreed to these conversations: about 25% of people we messaged were up for a chat.
These conversations weren’t specifically about Goodreads or creating a replacement for it. The hope was to understand their problems and the problems with the tools they currently use related to reading.
A few things stood out:
The way people used Goodreads was very similar. Everyone we talked to used the same few features on Goodreads. Although there are a ton of features across the site, almost everyone used only a small subset of them.
People weren’t excited about it and they don’t like Amazon. There is growing anti-Amazon sentiment due to its takeover of the book industry, anti-union activity, and the wild wage gap between the CEO and workers.
They weren’t sure what was missing but wanted more. The last question we asked, after digging into their use of Goodreads, was about what was missing. Readers would pause, take a deep breath and take a moment to think about it. While everyone came up with an answer to this question, it wasn’t specifically clear. They felt it was underwhelming and not living up to the potential of what a social book site could be, but it was harder to pin down a single thing missing.
From there we distilled the feedback and discussed it more in our team meetings. We pulled out themes and came up with a hypothesis on what our “core” features would be and what our “differentiators” were.
For application designs and interating it’s hard to beat Figma. We’ve been using it for collaboration, brainstorming and even for creating interactive prototypes that we discuss with users.
I used to think I could just jump straight into code and create something amazing. That’s worked before, but only when I knew everything about the problem. With new products there’s so much we don’t know! Being able to iterate at this design stage is essential.
Step 1: We have a hypothesis on a problem facing our users or audience. This hypothesis only is possible because of past discussions and feedback from users. Starting this ball rolling often means having EXTREMELY open-ended discussions.
Once we’ve identified a problem, we come up with a Voice of the Customer interview guide. Crafting these questions correctly isn’t easy. They need to be open-ended enough without being too leading.
An example of our Voice of the Customer Discussion Guide for Social Features
Once we have this discussion guide, we’ll talk to at least 5-10 people asking them the same questions. We’ll keep talking to people until we start hearing the same feedback over and over.
Step 2: If you weren’t able to validate your hypothesis or identify common problems, it’s time to switch to a new problem. If you were able to, it’s time to create a prototype in Figma that solves their pain points.
Crafting a solution to a problem is one of my favorite parts. This isn’t about creating the application people ask for; it’s about solving the problems that they have. We usually discuss the top pain points from user interviews. Then we’ll do multiple rounds of crazy-eight’s sketching as a team, with dot voting on individual ideas.
Things we implemented from this so far: autocomplete search, storybook onboarding, Goodreads importer.
In the case of social, a bunch of people mentioned they didn’t add some books to Goodreads because they were too private (the privacy settings mentioned earlier). This feature came about because we talked to people and realized this was a pain point.
Step 3: Show the prototype to people and get their honest feedback on it. Doing this isn’t easy. People want to be nice to you. You need to create a safe space where they feel comfortable completely trashing your idea if it’s not something they love.
Much of this is body language, pauses, and enthusiasm. It’s a combination of listening to what they say and how they say it. It means asking the hard questions.
At Pluralsight, I switched roles from a software developer to a product manager. Rather than coding all day, I tried to have at least 5 user interviews a week (most weeks). As a quiet introvert t took me at least 100 interviews to get to the point where I felt confident. I still struggle to interrupt people to keep them on track.
If you’re not perfect at interviewing people you should still do it. You’ll get better at it, and start seeing themes just from talking to people.
If you’ve never conducted user interviews, my top piece of advice for you: don’t put words into their mouth. Avoid leading questions and avoid asking if someone likes or doesn’t like something. Here are a few sample questions we’ve asked in the past at the prototype step:
What is your first impression of this page?
How might you interact with this page?
Is there anything else you expected to see here?
What would you want to do next from this page?
None of these questions assume the user saw any particular feature. Sometimes we might want feedback on a specific part of the page, but we’d still start with the entire page at once.
If they don’t love it you can try to understand why then go back to step 2 and try again.
This is an abbreviated version of directed discovery, but it hits on the main points. We would often start coding while interviews were still in progress. Or iterate on the prototype between interviews rather than showing a bunch of people the same one. The end goal is the same though: by the time you’ve finished the feature, it’s been user-tested and approved.
Once a feature is out in the wild it’s time to get feedback from users. We did this through 3 channels:
Discord – This has been our primary way to get feedback while we’ve been building. We have a #feedback channel that anyone can chime in at, ask questions, or report bugs.
TypeForm – After some releases, or during discovery, we’ll sometimes create forms for feedback we couldn’t get elsewhere.
Noora – Noora is a user feedback & roadmap tool that lets your users recommend and upvote features they want to see. It also allows for single sign-on, which is amazing.
We haven’t leveraged the feedback from Noora much at this point. Honestly at this stage feedback from Discord and user interviews have been plenty. If we were starting again, I wouldn’t recommend setting up Noora until you have a solid-sized audience that you don’t have easy communication with on any other channel.
Lesson 6: Cover your liability with an LLC
Related Expense: Stripe Atlas
If you’re just beginning a project, you probably don’t need to register it. When we started Hardcover I wanted to skip as much of the legal side as possible. Since we’re not taking funding, spending $100/hour for a lawyer for a few days could be more than double our total expenses.
I’m a member of the /r/startups Discord and they have weekly free office hours with a few lawyers there. It’s an amazing group, and I’d recommend if you’re looking for an informal discussion with a lawyer (in public).
During one of these chats I received some great feedback:
If you’re working with other people you need an LLC.
Lawyer feedback about Hardcover
At the time we had a team of people working together with handshake agreements but no legal structure. The reason for this LLC makes sense:
If someone on the team commits a crime, all of the people working on the project may be held liable. With an LLC that’s not the case.
After using Stripe for another project, I knew I wanted to use Stripe Atlas for registering. It’s more expensive than some other options, but having it all in the same place within Stripe is beautiful. I’d register my next LLC through them too.
Lesson 7: Find Amazing People to Work With
For the first 9 months, we held a meeting every week. Every Saturday at 8 am MST, we’d wake up and jump on a call with this beautiful group of humans (with some different humans over time).
Most of my previous projects were ones I focused on alone. When I look back at all of those projects, they’ve been fun, but none have been successful or world-changing. They’ve been limited by what I could accomplish.
Once we settled on the equity side, we realized what a super-power it was: Hardcover would be similar to an open-source project, but with ownership. That would allow us to bring people on to help out in areas we needed help with. We debated making the entire project open source, but run into a problem with the database needing to be centralized. We’ve even looked into using blockchain for our database or building something decentralized on Mastodon, but decided against it.
Our team meetings have been packed. We try to keep them to an hour, but sometimes they’ll take two.
We start each meeting with a question to get to know each other. We want to enjoy building Hardcover! We want the people we work with to be friends we’re on a mission with – not capitalists optimized for maximum revenue.
We kick off each meeting with an ice breaker. It’s a question purely for fun to get to know more about each other.
A sample ice breaker from our Miro board.
Other ice breaker questions we’ve answered:
What’s a recent TV show or Movie you loved?
What’s a place you’d love to travel to in the next year or two?
What’s a Prompt on Hardcover you’d love to see answered?
If you could learn one new skill, what would it be?
What’s a goal of yours for the new year?
The point is just to have fun and get to know each other a little more.
During these team meetings, the main focus is always the same: setting a clear intention for the coming week. We focus on making sure everyone knows what they’re working on and that everyone is getting the help they need.
After this meeting, we release notes about it on our Patreon (we plan to start releasing these notes after our next meeting!). This will include a behind-the-scenes look at what we’re working on, how our research is going, and what we’re focusing on next.
This is also where we’d share some prototype screens that we’re still getting feedback on. If you’re interested in giving early feedback before something has been built, this is the place.
Lesson 8: Let an Ambitious Mission Guide You
This isn’t just startup advice; it’s life advice. Whether you call them goals, mission, or vision, the idea of the same: having a clear picture of what success looks like.
Back in 2020, I stopped going to CrossFit classes. Due to COVID, it was no longer safe and was closed for most of the year. I struggled with how to stay healthy during quarantine and put on more than a few extra pounds. It was only when I set ambitious goals–run a marathon and hike the Highline trail–that my exercise efforts took shape and gave me the motivation needed to put the work in even when I wasn’t in the mood.
An ambitious mission can also help you find great team members. An inspiring mission can bring like-minded people onboard.
When I say ambitious goals I don’t mean “get to 10,000 users” or “launch an MVP”. Those are ambitious, but they’re not a mission–they’re milestones.
Missions are less likely to change over time. Our mission on Hardcover is to help you find life-changing books.
Right now everything we do revolves around that. It’s not about optimizing how much money we make, taking funding from venture capital, or organizing Hardcover to sell to a bigger site. It’s all about helping people read.
If that’s a mission you can get behind, we’d love for you to join Hardcover! You can sign up today, and import your current books from Goodreads.
The best way to keep up while we’re building everything out is to join our Discord or the newsletter (below).
The best way to support us is to join our Patreon! I hope this post shows that we’re building Hardcover for the right reasons. Patreon is a great way to let us know you support the idea and want to see it succeed.
When we first started talking to readers, one of the biggest questions I had was around the role of editions in their libraries.
Was it important that each book tracked on Hardcover be the exact edition that they read?
How important was it to show the exact cover that the reader read
Was setting the edition a proxy for setting some other data about the book that was more important: like if it was an audiobook or text?
Do you read multiple versions of the same book?
Do you want to track ownership of your books at the book level or at the edition level?
After talking with dozens of people about this topic the results were all over the place. Preferences ranged from wanting to track everything down to the smallest detail, to just tracking the book and not caring at all about the edition.
Well, today we’re excited to share that editions are now on Hardcover! We still have more work to fully integrate these, but we’re on a path that should allow for (almost) every answer received.
Editions on Hardcover!
Here’s how we’re handling editions on Hardcover. Some of this is already released and usable today, some are still in the works. For both cases, feedback is welcome (join our Discord and let us know what you think!)
First, we want to only have one primary page for every book. Regardless of which edition you read, you should be able to see your rating and all of your friends’ ratings and reviews in one spot.
Second, each book has many editions. As of today, we have 437,108 books in our database with 1,036,129 editions. Many books just have one edition, while others (like Harry Potter and the Sorcerer’s Stone) have hundreds.
Third, whenever you track a book (want to read, read, add to a list, etc), you can track which edition of the book you want (or you will be able to. This feature is still in the works right now).
If you imported your data from Goodreads, we’re already saving the edition from there.
Lastly, you can skip edition tracking altogether and just track format if that’s what matters most to you. Just click on the book icon in the book button to toggle between different formats
You can toggle reading format within the book status button.
A book marked as read, and read.
A book marked as read and listened to.
Why not both?
When you do this, behind the scenes we’ll associate your reading of this book with the most popular text edition or audio edition of that book. You can skip searching for the exact edition if this is enough information for you.
Saving data at this level also makes it possible to have beautiful pages for book series–something we heard from the start as being important (and a feature I use on Goodreads all the time).
These all relate back to the book, not the edition. Whether you listened or read, these are the books that are part of the series. There’s still so much we can do on this page, but we’re excited that it’s gotten to the point of being usable for series discovery.
You can’t select an edition yet, but that’s near the top of our list. We’re still loading in data, but once that’s ready we’ll let you know!
How We Decided on This
There were common themes that almost everyone was interested in:
Readers want to see reviews for the book, not the edition
When I read a review about a restaurant and someone complains about the struggle to find parking on a busy street, I immediately skip it. While valet could make a better experience for a customer arriving by car, it doesn’t change the experience of those who walked to dinner.
The same is true for books vs editions. The heart of a rating or review is around the source material–not the platform by which it was presented. If edition mattered most, then reviewers reading advanced review copies (ARC’s) of books would constantly be talking about how bad the spacing and margins were (seriously, why does that always happen?).
All reviews and ratings on Hardcover trace back to a book. A book has many editions. Perhaps the original hardcover release, the first paperback, a 2nd edition paperback, a Spanish translation, an audio cassette tape, a CD audiobook, a digital audiobook version, another digital audiobook with a cast rather than a narrator, and enough ebook variants for every platform.
Our aim with Hardcover is to organize all of these into a single page that represents the book. When someone is looking at a review or rating for a book, the edition rarely matters. It may come into play if you’re comparing similar editions and looking for which to choose (abridged vs not, which audio narrator, etc), but most of the time that’s after you’ve chosen to read the book in the first place.
We’re focused on that step first: when you’re deciding if you’re going to read it now, read it later, or pass on it.
A Book Doesn’t Exist
Every book you’ve ever read is just an edition. In that way, there is no definitive version of a “book” outside the minds of readers and authors.
When we show a book on Hardcover, that book represents all editions of it. We’re doing the work of organizing together all similar editions into the same “book” that we show.
Since its release, there have been at least 71 different editions of The Handmaid’s Tale. Everyone that’s read this book has read one of these 71+ editions.
But looking at the reviews they’re the same. They all focus on content, not the cover. On the story, not the paper stock.
Back in 1964, Marshall McLuhan dug into a related subject. His hypothesis was that the medium is the message – later writing a book with the same name. His premise is that the medium for any media dictates more than the message itself. It determines who will read it, how they will connect with it, the associations we build with the content itself, and much more.
The content of the medium is a message that can be easily grasped and the character of the medium is another message which can be easily overlooked.
Anyone who’s ever read a book and listened to the audiobook knows this to be true. You experience both of these in different ways and make unique connections from both experiences.
On Hardcover we’re trying to do both. Today that means audio vs text. Later on, that could mean brail or other formats that readers can experience the same message in different ways.
This only goes so far. If someone converts a novel into a graphic novel, that’s not another edition of the same book – that’s an entirely new book. They both share the same source material but are different enough that we organize them separately.
Edition Next Steps
For now, we show all mediums (editions) grouped together when looking at reviews but plan to allow people to drill down to reviews specific to an edition if you’re so inclined.
There’s a lot still to do and a bunch still to research.
Allow readers to select a specific edition for their library and for lists.
Determine which covers to show where. Do we show the readers cover everywhere? Do we show the default cover everywhere?
Figure out how to handle when a reader reads multiple editions of the same book.
Understand if showing rating/reviews make any sense at an edition level, or if we want to stay with book-only reviews.
I’m optimistic about this setup so far!
Side note: if you’d like to help out, the best thing you can do today is mark any duplicate books, authors, or series on Hardcover. That helps us group editions into singular books on the site. Pick a favorite author of yours and check out how it looks!
It’s an exciting day! Today we’re announcing the beta release of Hardcover. What that means is that we think it’s to a point where it’s getting close to being ready for most people to make the switch from Goodreads, but we want to get more feedback from new readers and clean up a few things first.
Please help us out by upvoting Hardcover on ProductHunt. The additional exposure is helpful for us to continue trying to grow. We sincerely appreciate your support.
If you’re not familiar, ProductHunt is a platform for finding and launching new apps, websites, books, and tech creations. It focuses on getting early adopters to try out the products and get their thoughts–good or bad.
That’s exactly what we’re looking for right now on Hardcover: feedback! We want to know what people think about Hardcover today. Does it feel like an alternative to Goodreads that would allow you to switch today? Are there things missing that you’d want? Is there something else that’s preventing you from making the switch?
We’d love to find out! As part of this launch, we also created a new user survey that we send out to new users the day after they sign up. This survey targets your initial impression of Hardcover.
We plan to be around for a while, but first impressions are important. If you have 5 minutes we’d love to get your feedback.
Want Hardcover Stickers?
As part of the beta release, we’re excited to announce our first giveaway! On Discord, you voted for the top stickers and we made them! The three winners were Jules struggling with too many books (honestly: same), Jules with a lantern (searching for books), and Jules riding Pendragon (because sometimes you need help to carry more books).
We’re giving away a pack of all 3 Jules stickers, a Hardcover logo sticker, and a two-sided bookmark to 10 random members of the community as of midnight March 12th PST (next Saturday night/Sunday morning).
To enter, join Hardcover and mark at least 1 book as “Want to Read” to be eligible.
Also, you’ll get 5 additional chances to win for each person who joins Hardcover using your invite code. Invite a few people and your odds of winning go up!
These stickers came out so much better than we expected. I can’t wait to send them out.
We have some big news: we’re officially launching the beta of Hardcover in about 10 days on Wednesday, March 2, 2022! March second is National Reading Day–an annual event focused on getting more kids to read around the world. It’s also Dr. Seuss‘s birthday. What better day to launch?
I remember reading Dr. Seuss when I was young. I had a small stack of brightly colored hardcover books on my shelf well into my 30s. I only parted with them when we downsized from a house to an apartment with fewer bookshelves (it was not an easy decision to decide which books to keep!).
🚀 How You Can Help With the Launch
On Wednesday, March 2, we’re going to release on a few different platforms – mainly ProductHunt and Reddit. On that date, we’ll send off a message to you through this newsletter.
Here’s what you can do to help:
When we send out this email, I’m going to ask you to help upvote the release on ProductHunt and to upvote any posts we have on Reddit.
If you’re on social media, this is the date we’d love for you to share Hardcover with your friends! That could mean sharing a link to Hardcover, a link to your profile, a link to ProductHunt, or to Reddit.
Since Hardcover is free, this is the best possible thing you can do to support us. (side note: we have monetization plans down the line that involve working with authors and publishers directly, but for that, we need more people using Hardcover).
Having more readers on the platform makes it more fun! It means more activity in your feed, more answers on prompts, and more interesting lists to discover!
❓ What Does This Release Mean?
It means we’re ready for a lot more people to try out the site! It means we think we’re a usable alternative to Goodreads. Don’t get me wrong, there’s still more to do, but we think it’s a good time to check if people think we’re on track.
The goal of Hardcover is to help you find life-changing books. We think those can come from multiple places: seeing what others are reading, browsing lists, checking and answering prompts, and later on through other algorithmically generated ways (recommendations, match percentage, similar characters, etc).
To help you find those life-changing books, here’s a look at what we have today:
📓 Track what you want to read, what you’ve read, and what you’re reading.
🚚 Confidently move your library from Goodreads to Hardcover
👭 Follow your friends and share what each other are reading.
📰 Get a feed of your friends’ activities and activities for books you’re interested in.
🏆 Create book goals – either by the number of books or number of pages.
📚 Organize your books into lists and easily find what you’re looking for.
📈 Discover books through popular lists, prompts, and the feed.
📱 Optimized for a phone or a computer.
🔑 Members can invite 5 friends to join with an invite code.
This release doesn’t mean we’re open to the world just yet. We still want to polish the shelves a little more, complete a few tasks and iterate on a few pages.
If there’s a feature that you’re missing on Hardcover that would prevent any of the above for you, I want to hear about it. Please reply to this email if you’re reluctant to make the switch and let us know why. It could be anything from “too new” to “missing XYZ” to performance or bugs.
🎤 Creator Interviews
Last thing: we’re starting a new research phase for Hardcover where we’re aiming to talk to anyone who creates book content on a blog, website, TikTok, Instagram, Twitter, or any social media.
We want to see how we can make sure Hardcover supports people creating amazing content about books – wherever that content lives.
If you have a book blog/website, a book Twitter, a book TikTok or a book Instagram, we’d love to have you take this short survey.
We want to support the book community, and part of that involves understanding it more than we do. This survey helps us see what you’re creating in the book space and how to support you.
Here’s the thing: Every time you use Goodreads you’re making one of the richest men in the world even richer. Goodreads makes money through ads, partnerships to promote books, and payments from authors and publishers.
Goodreads also has a sizable team working on it. LinkedIn says they have 303 people. That’s a huge team! If the average salary matches San Francisco’s median salary, that means Goodreads need to make the following as a company to survive: $72,813 * 303 + hosting costs + benefits + services + rent + more expenses, which could easily mean they need to make $30 to $60 million per month just to break even.
Are they making that much? I have no idea. Goodreads could be a loss leader for Amazon, and they don’t need to make money when Amazon is there as a backstop.
Working in companies that have been acquired in the past, here’s my guess at what’s happened at Goodreads over the last decade:
Amazon acquired Goodreads in 2013.
They integrate with Amazon for data, Kindle and general book data.
Goodreads stays mostly separate. Hiring and funding is determined by how much Goodreads makes.
Since they’re tasked with new initiatives from Amazon, they have less time to improve Goodreads. They could hire more people, but they can’t hire more people unless they make more money.
Between these conflicting initiatives, Goodreads is stuck in a state of limbo where they’re struggling to be what Amazon and the book community wants them to be.
I tend to assume the best from everyone. I have no doubt that the people working at Goodreads absolutely love books with all their hearts and souls. The problem isn’t the people, it’s (likely) the organizational structure that incentivizes the wrong thing (profit) over enabling more people to read.
What Hardcover Is Doing About It
Comparing Hardcover to Goodreads is like comparing David to Goliath at this point. Hardcover is a tiny team of one full-time person (me), 6 part-time people and a growing Discord community (all are welcome!).
One thing we’re doing differently is we’re not taking any funding. This gives us a lot of freedom: We don’t need to make money for investors. We can also continue to focus on readers first and not split our time between readers and investors.
Our goal right now is to focus on keeping the team small and able to quickly adapt. Larger teams struggle with execution due to communication overhead. The longer we can stay small the better.
If Hardcover is successful, we’ll eventually start making some revenue. At first, any revenue will go towards paying employees a decent living wage with full benefits, hosting fees, legal fees and all of the other expenses that come with a business.
But what next? The plan is for Hardcover to be a B-Corporation.
B Corp Certification is a designation that a business is meeting high standards of verified performance, accountability, and transparency on factors from employee benefits and charitable giving to supply chain practices and input materials.
You’ve no doubt heard about initiatives from B-Corporations. Patagonia is one that’s focused on sustainability, advocates for public lands, and is doing their part to help save our planet. Bombas, famous for their socks, have donated 48+ million socks to homeless shelters using their “buy one, give one approach”. Toms of Main does something similar with their shoes.
If/when Hardcover gets to the point where we’re making a profit, we intend to do the same. We love initiatives like Dolly Parton’s Imagination Library, Bookshop.org‘s mission for local book stores and the recent trend of helping banned books make their way to school districts with authoritarian school boards.
Since we don’t need to answer to investors, our hope is to put over 50% (ideally 90%+) of our profit towards these initiatives as we can.
On the sliding scale between a non-profit and a completely capitalist company, we’re aiming to be very close to the non-profit side.
#2: Amazon is bad for the book industry.
Let’s face it, Amazon is the largest player in the book industry. Between Amazon.com, Audible, Kindle and Goodreads, Amazon owns the top distribution channel for physical books, audiobooks and ebooks.
Why is that a bad thing? For one, it means Amazon is the main gatekeeper. They can decide which authors to sign and which authors to promote. This tends to result in less diversification, less money going to authors and less money going to local bookstores:
Research released last year showed that most writers work a second job and those in the top 25% of authors earn low amounts: education authors, $16,500; children’s authors, $14,000; genre fiction authors, $11,000; and poets, $4,900. Note that these are the top-earning authors—75% of authors earn less than these amounts. None reaches the level of taxable income.
We live in a time when anyone can become an author, yet the price of books has been driven lower and lower.
What Hardcover Is Doing About It
Whew, what a problem.
By integrating with local libraries we can encourage libraries to buy books you’re interested in, which better supports authors.
Partnering with Amazon alternatives like Bookshop.org, Libro.fm and OpenLibrary, we can help direct your spending dollars to other services.
By showing author demographics—gender, sexuality, race/ethnicity, we can help people reach outside the typical recommendations and find new points of view.
This is a problem that’s larger than any single player can solve, but we hope to help authors and book stores thrive while also helping readers find unique books they love.
#3: Goodreads limits book discovery.
It amazes me that a company as huge as Amazon and Goodreads hasn’t made it simple to discover new books.
There are interconnected links to Listopia (Goodreads lists), recommendations and more, but something is missing that’s difficult to put a finger on.
The more we’ve talked with readers about how they use Goodreads, the clearer it became to us: Most people don’t discover new books through Goodreads. Of the people we talked to, no one mentioned recommendations on Goodreads as a place to find new books.
This is a huge missing piece for a platform as pivotal to reading as Goodreads.
What Hardcover Is Doing About It
We want to help people find books in three ways:
Social Discovery. What’s popular with people you follow, mostly through the social feed.
Curated Discovery. Readers can create lists and prompts to organize books together manually. We’re making is shockingly simple to browse these lists.
Personalized Discovery. The more data a site knows about you, the easier it is to make recommendations. We’re building a number of TensorFlow.js recommendation models that will be useful in different situations.
There’s so much that can be done with recommendations that it gives me chills. Here are a few examples we’ve brainstormed and want to explore:
If you like a book, Hardcover can recommend books that are similar.
If you like a specific character in a book, Hardcover can recommend similar characters and their associated books.
If you enjoy a specific setting or time period, Hardcover can recommend similar settings or time periods.
If you love a specific combination of traits (genre + genre + setting), Hardcover can find other books that are similar.
We can do the same for finding new authors, other readers to follow and so much more.
#4: Goodreads doesn’t help the book decision-making process.
Tell me if this sounds familiar. You hear about a book—maybe from a friend, Twitter, the NY Times, a blog post, or BookTok—and search for the book. Google or DuckDuckGo shows the Wikipedia page and the Goodreads page for the book.
You visit the Goodreads page for the book and scan it. You’re trying to figure out, “Does this book interest me enough to save it for later?”
How does Goodreads help you answer that question today? Well, they give you an average star rating for the book that’s between 3.8 and 4.2 for almost every book. They give you a cover, description and user-driven genres for it. You’ll see which friends have read it, and a ton of reviews to sort through if you want more info.
Aside from friend activity, everything on this page could be found on Amazon.
What Hardcover Is Doing About It
Hardcover book pages will be based on your reading preferences. When you visit a book on Hardcover, that page will be tailored to your reading history. We’re still building this out, but there’s so much that can be done! Here are a few things we have planned.
Generate a Match Percentage for every book. We’ll generate a score from 0% to 100% based on how likely we believe you are to enjoy this book. Even if you don’t look at anything else on the page, you’ll have an at-a-glance way to see if this book fits in with your preferences.
Generate a reviewer similarity score. When you’re looking at reviews for a book, how do you know if a reviewer has similar taste? Librarians and book reviewers are jumbled together with high school students. We’re hoping to make it easy to understand who’s writing reviews so you can pick out the ones that will be most meaningful to you.
Show book interest based on badges earned. This one is just at the idea stage at this point and may be difficult to explain so bear with me. As you read a book, you’ll level up your reading level in various genres for genres you revisit. This allows you to show things like “read 50 fantasy books” or “read 100 romance books”. Instead of just showing a rating across all readers, we can show a score of other people that have also “read 50 fantasy books” or “read 100 romance books”. We can also show these metrics next to reviewers.
There’s more we can do here, but this is a good start!
#5: Goodreads lacks library integration.
It should come as no shock to anyone that an Amazon-owned company like Goodreads’ main goal is to sell you books. Amazon started as an online book store after all. What incentive do they have to encourage checking out books from your local library?
None.
What Hardcover Is Doing About It
Our goal at Hardcover is different. We want to help you read life-changing books. Where those books are from doesn’t matter. What matters is access to those books.
Libraries across the world offer books, movies and music in many different formats. These aren’t physical card catalog libraries of old, these are digital-first libraries with audiobooks, online checkout and app integrations.
We want to deeply integrate with your local library. Imagine being able to sort your “want to read” list by what’s available now, or even have Hardcover automatically place holds ahead of time so you’re not always waiting months.
While we don’t yet know exactly what library integration will look like, we think it’s an essential piece to the user experience.
#6: Goodreads discontinued API access.
As a software developer, one of the things I loved about Goodreads was their API. While it wasn’t perfect, it had a lot of great things going for it. Over the years, I built a bunch of personal apps using it. One of them, Scribe, allowed people to embed what they were reading on their blog.
Then one day I logged into Goodreads and saw this:
As of December 8th 2020, Goodreads is no longer issuing new developer keys for our public developer API and plans to retire these tools.
We’re designing Hardcover using the same API that developers would be able to use. The website and future mobile apps will all have the same permissions to your data that developers will be able to access.
In other words, you’ll be able to do the same thing with your Hardcover data that we can.
You’ll also have the ability to export or delete all of your data whenever you want without needing to write any code.
Later on, we have plans to expand on this data access in other ways: Webhook/Zapier integrations to further extend access, and Oauth access for people to create apps that build on Hardcover.
Want to have a constant backup of your book data in an AirTable or sync it to a Google Sheet? We want to make that possible.
We need to get the basics down first, but your data should be usable however you want it.
#7: Goodreads’ style is out of date and contains bugs.
Let’s face it, Goodreads needs a facelift. They’re in the middle of one right now they’ve been working on for a while, which is some good news. Yet, Goodreads still feels like a relic from an older age of web design.
Talking with Goodreads users we also heard that people sometimes encountered bugs and often found slow-loading pages.
Having an old interface isn’t a bad thing by itself. Craigsist continues to thrive despite few interface updates. Reddit’s interface is similar today as it was a decade ago.
Both Craigslist and Reddit haven’t seen the same amount of major industry changes as the book world. People used to have to get physical CDs or tapes. In the last decade, we’ve seen the rise of ebooks and digital audiobooks.
Having an out-of-date style with major industry changes shows a lack of investment.
What Hardcover Is Doing About It
When people say something is out of date, what they often mean is that it doesn’t follow the usage pattern they expect.
We’re focused on creating Hardcover with input from readers. We’re constantly interviewing readers to further understand their problems and design solutions around them.
This starts before a single page is designed. Once you understand the problems users have, you can hypothesize a solution. Once you have a hypothesis, you can test it.
That’s Hardcover’s approach: User testing, surveys, and collaboration. The end result is a product that doesn’t feel out of touch because it’s created with the community.
#8: Goodreads allows rating and reviewing before books are released.
Goodreads allows for reviews on books before they’re released. This allows authors to send out advanced reader copies (ARC) of books to readers who can rate and review the book before it comes out. This helps the book release gain traction.
If everyone was honest, this wouldn’t be a problem. Unfortunately, that’s not the case.
For example, take the final book in the Game of Thrones series. We all know the final book hasn’t been published, yet it has 9,364 ratings on Goodreads with 461 reviews! What in the world are these people rating and reviewing?!
Take a look at any book that hasn’t been released and you’ll see the same thing—it makes zero sense and only dilutes the value of reviews and ratings on the platform.
What Hardcover Is Doing About It
This problem is harder to solve than you might think. The easy solution is to not allow rating or reviewing a book until it’s released. Yet, authors want to start promoting their book before its street date.
How do we support authors but only allow real reviews?
The easiest solution is to not show reviews until a book can be preordered, which would at least limit the spread of speculation and misinformation.
A next step is to allow authors and/or publishers to whitelist users who receive advanced reader copies. This takes a lot more work but could be a path down the line.
#9: Goodreads enables author bullying.
Over the course of the past year, a few authors have been very publicly canceled. People swarmed to those authors on Goodreads and rated their books 1 star. Many users left ratings without ever reading the books.
Whether you agree with the reasons why someone was canceled or not, bullying is bad. That shouldn’t be a hot take.
Growing up I was a quiet, slightly overweight short kid with glasses, braces and acne. I still remember the times I was picked on; they leave a lasting memory that’s hard to forget.
Creating a platform that prevents bullying—both for authors and readers—is top of mind from the start.
What Hardcover Is Doing About It
The ease of connection that makes social networks powerful also enables bad actors. We’re taking steps to try to prevent abuse, but we’ll no doubt need to take additional steps as we add new features and bullies find new ways to pick on people.
Here are a few things we’re doing to start:
Not showing an average rating for books. If every book has a rating within one point, it’s not very useful. Instead, we’ll show a match percentage just for you based on your reading history. Bullies will see a match percentage similar to other bullies. Passionate readers will see a match percentage similar to other passionate readers.
Public, private and followers-only privacy. For anything you do on Hardcover, you can set a privacy level. This means you can track all of your books publicly, but decide to make a single book private. Likewise, you could set everything to followers only and control exactly who can see your activity across Hardcover.
Flagging and reporting for users. We take this seriously. People should be able to report any abuse that goes against our Code of Conduct and get immediate action. We also want to show if users have been previously reported (with verified bad activity) on their profile for anyone not outright banned. This is a huge issue but the tl;dr is that we have no problem kicking people who are bullying others off Hardcover.
Block users. Do you want to completely hide everything about a user? You can block them and they won’t exist to you on the platform. You also won’t exist to them.
#10: Goodreads lacks a cohesive community.
There is more of a book community on Reddit than Goodreads. Somehow the largest book social network on the planet isn’t a destination for discussion about books! Why?
Much of the discussion on Goodreads happens in book reviews, book clubs and social feed comments. Goodreads feels like walking into an office building and trying to find a book meetup. Maybe you’ll find the book meetup, but most people don’t.
What Hardcover Is Doing About It
Hardcover’s long-term goal is to build a community, but what that will look like is still to be determined. More research is needed to decide the look and feel of Hardcover’s book community. We love what Letterboxd has done for the film industry and we want to follow in their footsteps in some ways. We don’t have a clear plan yet, but we know it’s an important question to answer.
#11: Users don’t have a clear way to know if a review was paid or incentivized.
There are a bunch of sites out there where you can pay for people to review a book. Some of these allow for buying reviews in bulk and users go to Goodreads to make a few bucks.
For honest reviews where with an actual reader, this is a great way to have some data about the book available before launch. There are two problems with this approach:
No way to know if a review is paid or incentivized.
No way to know if a reviewer actually read the book!
On Goodreads, all paid reviews sit equally alongside passionate reviews by people who actually chose to read a book.
What Hardcover Is Doing About It
We plan on adding a checkbox to indicate if a review is paid and/or incentivized, but the bigger challenge is getting people to use it.
An optional paid/incentivized checkbox will allow people to filter reviews and only see the ones they’re only most interested in.
#12: Goodreads can’t quickly adapt to community needs.
Having a team of 303 people means it’s very difficult for Goodreads to change course. I’ve worked at companies from under 10 people up to 2,000 and 5,000 people before. The times when I felt the most productive were with teams under 30.
The larger the team, the more time is spent coordinating features across teams, communicating requirements, shifting priorities and putting in gap fixes just to get things done.
What Hardcover Is Doing About It
Keeping our team small is our goal. We have no desire to be a mega-company with an office (*shiver*). Our plan is to stay a distributed team of people who love books and are able to actively work on Hardcover because it’s fun while positively impacting the book industry.
This will no doubt mean at times we break things and need to regroup. I’d rather we move fast and occasionally break things than move at a snail’s pace.
#13: Goodreads is not the platform readers deserve.
In almost every industry, amazing platforms for communities exist. Look at any industry and you’ll see an abundance of communities. Due to timing and initial execution, Goodreads became the shining light where readers gathered together.
All of the above reasons show that Goodreads is not living up to its potential.
What Hardcover Is Doing About It
Over the years there have been dozens (hundreds?) of attempts to create an alternative. A few are actively in development today and look amazing.
To us, the goal isn’t for Hardcover to become the only platform—the goal is to be an option for readers that aren’t Goodreads. The more communities that spring up, the more innovation there will be in the book community, which is great for everyone!
We don’t see other book startups (StoryGraph, Literal, Oku, Readerly, etc) as competitors, as much as other startups giving people more options besides Goodreads.
What this model looks like long-term is still to be determined. Maybe we’ll add a blockchain-driven database of book data that anyone can use as a foundation to build other projects, one where readers can move their data between platforms.
We don’t yet know where this model will go, but we’re committed to helping take those steps to help make data freely available.
Wrap Up
Whew, that was a lot and it’s still not everything! We have a lot of work ahead of us to execute on everything listed here. As much as I wish we could wave a wand and solve all of these problems, many of them are very large tasks and the reason why Goodreads hasn’t solved them already.
If they do solve some of these issues, we’ll be the first to applaud. They could prevent ratings and reviews from books until there’s a release date tomorrow. They could keep their API around today. They could create new ways to explore and discover new books.
But at their core, Goodreads is still owned by Amazon and that won’t change any time soon.
Today we’re launching a new area of Hardcover called Prompts. To put it simply, Prompts are polls. Someone from the community can ask a book related question and anyone can answer it.
Once someone asks this question, anyone can go in an answer it. Once you’re logged in, you can answer this prompt with any number of books. Whether one book comes to mind or a hundred, you can fill those in.
By default, the answer form will filter for only books you’ve marked as “read” on Hardcover (notice the little “Only show books you’ve finished” checkbox). This is helpful if you’re already tracking all of your books on Hardcover and want to see limited search results.
Add your answers to this prompt.
Once you’ve selected a book as an answer to this prompt, you have the option to write why. This will show up for anyone who looks into why this book is an answer.
Redwall is the first book that got me excited about reading.
Your answers to this will show up on the All Answers page for the prompt, but also on a page within your profile. You can link back to just your answers to this prompt if you want to share it, or check out someone elses prompt answers.
My answers to this question as shown on my profile.
By collecting a bunch of answers to this prompt from the community, Hardcover is able to see which books are answered the most often. This means we can show the top results from the across the community.
In this case we’ve only just launched the Prompts, so there are only 3 readers so far (from those of us working on Hardcover). As more readers fill out their answers the overview will change.
The overall results shows the top 10 most answered books for this prompt.
What’s most exciting about this to me is that this will be useful tomorrow, a year from now and beyond. For those who want a deeper dive into the answers, they can head over to the Books tab and see the top 100 answers.
There are always people looking for answers to this question, and the community as a whole can help people find an answer in a way that an algorithm can’t.
This is just the beginning of prompts right now. We have a bunch of ideas on what to do next. Show the most common answers in the last 10 years? In the last year? Books written by women? By POC? By LGBTQ+ authors? What about showcasing peoples explanations of why they added a book in more places across the site?
Today we’re launching Prompts! Each week we’ll have a new Prompt of the Week that shows up at the top of the Prompts page.
As with any beta feature, I’m sure there are going to be some issues with this. 😅 If you run into a bug, find anything annoying, or have any thoughts on how to make Prompts better, feel free to email our team at jules@hardcover.app.
So, is Hardcover a Social Network? Yes – or at least it can be. We’re building Hardcover with three different social options for you to choose from:
Public – Your account is completely public. Anyone can see what books you’ve read, are reading, lists you create and activity on the platform.
Followers Only – Only people you follow can see your activity on Hardcover.
Private – No one can view your activity. You’re effectively a ghost. You can still follow people and see what they’re reading (if they let you), but no one will be able to see what you do on Hardcover.
These settings will also be available at an individual book or list level. If you’re reading a book you don’t want to show off publicly, you can mark it as private and no one is the wiser. (Side note: When it was crazy popular I read “50 Shades of Gray” but didn’t track it on Goodreads. On Hardcover I’d track it as a “followers only” book).
This is a similar social approach to Twitter, Instagram and TikTok. This isn’t a 2-way friendship like Facebook, but a follower model where anyone can follow anyone and see their public activity (or followers only activity if that user follows you).
We’re building a second setting as well that determines who can interact with your activity on the platform. You may decide to have a public account, but only allow comments and likes from your followers (or disable that altogether). We hope these settings, coupled with a code of conduct, a robust flagging system and enforced community standards will give people the security they need to feel safe.
Want a Sneak Peak at our new Social Features?
We’ll share them soon, I promise! In the meantime, we are ready to share these with a few readers who have time to chat with us! These chats will be entirely focused on the social side with prototypes – the new activity feed, updated profiles and a few more reader to reader interactions.
In these 1-hour chats we’ll share these new pages and chat through them together. This helps us understand what’s working and what still needs more thought (or needs to be scrapped altogether. 😂). If you’ve talked to Marilyn or Adam before, feel free to sign up to chat with us again – this is a whole new experience and we’d love to get your feedback!
Want to contribute your voice to what we’re building? Book a chat with Marilyn to share your thoughts!
Social Features on Hardcover
After talking to dozens of people to understand what Hardcover’s social features could be, we’ve landed on a a few new things I’ve never seen done in a book website before. We even have a full out design that makes this scrappy project look like a major contender!
For the majority of people we talked to reading is a social activity. While relatively few people attend real-time book clubs, it’s much more common to browse thoughts from other readers for books that resonate (or don’t) with you.
Did other readers also love the chapters you loved? Did they resonate with the same characters? What did they think of the ending? Did others interpret that ambiguous part the same way as you? What happens next?!
One of our hopes with the social side of Hardcover is to provide a place for you to have these discussions with other passionate readers. The first steps to that are what we’re working on now.
Team Update
We kick off most weeks team meetings with an ice breaker question. This weeks question? “What’s a winter movie you watch each year?“
And of course someone always says Die Hard. 😂 What’s a winter movie you rewatch each year?
This ice breaker activity combined with feedback from readers has led us to an idea we think is going to be amazing that we’re calling Prompts. This is one of the features we’re chatting with readers about before sharing the details. To see a sneak peak of Prompts, book a chat with Marilyn. 😉
Whether you’re a seasoned horror veteran looking for a new scare this season, or a neophyte just dipping your toe into creepy tales for the first time, there’s a little something here for everyone. From genetically engineered vampires to paranormal fantasy romance, these 5 books will guarantee to spook you this Halloween.
“We Have Always Lived in the Castle” by Shirley Jackson This short chilling read is about an 18-year-old girl named Mary Katherine and her sister, Constance, who haven’t left their home since a terrible tragedy six years ago isolated them from their village.
“Practical Magic” by Alice Hoffman In this bizzare book that later became a movie, the Owen family has been accused of everything that goes wrong in their town for over 200 years. But, the Owen sisters, Gillian and Sally, are frustrated and try to leave — but cannot resist the magic that draws them.
“The Graveyard Book” by Neil Gaiman Nobody Owens (“Bod”) is a normal boy who lives in a graveyard and is being raised by ghosts. “The Graveyard Book” is a spooky fable full of adventure as the man who has already killed Bod’s family creeps outside the graveyard.
The Burning Girls by C.J. Tudor Flo Brooks and her father move to Chapel Croft looking for a fresh start. But when Flo starts seeing visions of burning girls and receiving terrible messages, it’s clear that there are deep secrets lurking within their new home.
“Fledgling” by Octavia E. Butler Beautiful blend of horror and fantasy, “Fledgling” is about a young woman with inhuman desires who discovers she’s a genetically engineered vampire. A haunting look at vampire mythology, this chilling read is an original vampire story as the girl composes together her past and the mystery surrounding herself.
After 5 months of building a team, user research, and book data, we’ve reached a big milestone – our internal MVP!
This phase is a big step for us. It means that the application is in a state for the team to use it. Right now it’s still very rough, with plenty of bugs. The goal of this internal MVP release is for the team that’s been working on Hardcover to hit it with everything they have – and create bug reports in GitHub for everything that doesn’t work as expected.
So far all of the bugs have been quick ones to fix. Like most products at this phase there are also some interactions we realize didn’t “feel” right once we started using them.
One example of that is our List page. A reader can make a list of any books organized into a list. This can be favorites, books they want to read in a genre – any grouping the reader wants.
To simplify things from a code standpoint, we created a separate edit page for lists. You head to the edit page, make any changes and can reorder the books in the list from here.
Using this though, we quickly realized that this should all be on the list page readers see, but with additional options for the list owner.
Those recommended enhancements are relatively few – something I credit our awesome research and design initiatives with.
What’s in the MVP?
We’ve tried to limit the scope of the MVP to only the basics. There’s still a ton we want to do, but this is a good foundation to build on. Here’s a list of what we’re including in this first release (all on the website):
User accounts – Basic ability to sign up/in (Google, Apple, Facebook, Email), reserve a username, set your avatar – the basic account setup you’re used to.
Import from Goodreads – Upload a CSV from Goodreads to import every book from there. Our aim is to map every single book you’ve ever entered in there into Hardcover. You can even flag individual book imports as incorrect and we’ll use whatever was in your file.
Your Book Statuses – Ability to set a status on any book – Want to Read, Read, Currently Reading or Did not Finish. We’re also enabling you to track how you read a book (read vs listen).
Book lists – You can organize your books into lists based on whatever strikes your fancy. Within a list you can sort and filter however you want.
List stats – Elaborate stats on your lists based on genres, release years, formats, author info and more.
Book Ratings & Want more – We’re using a 5 star rating system with the ability to set half stars. The lowest score is half a star, the highest is 5 stars. We’re also pairing that with a “want more” option that indicates if you want more books like that or not.
Reading Goals – Create reading goals for yourself based on reading a set number of books or reading a set number of pages.
More than 400,000 books and growing – To kickstart our database we have almost 400k books, with more added every time someone imports a new one. Our hope is to have every single book you want to track in every language and every format.
As we move into a Public Alpha release, we’ll share more screenshots soon. This phase has been all about basic organization – being able to track what you want to read, what you’re reading and what you’ve read.
So what’s next? We’re hoping to fix all bugs in the next week or two then start letting people use the app! For now we’re going to allow anyone to sign up to use Hardcover, but require a promo code to unlock the app after signing in. This is simply to limit the number of people using it until we can work out the most pressing bugs and make sure it’ll be an experience we can be proud of – or at least one that actually works.
If you’d like be notified when we open up, please join the Hardcover mailing list down below!
Frustrated by inconsistencies every time we used Goodreads, and out of spite for Amazon, we decided to do something about it. We set out to talk to readers from all around the world with a few simple questions: What is Goodreads doing wrong? Why does Goodreads fail to deliver on their potential? And what would your dream book platform look like?
What we heard was grim. Reader after reader wanted more. They wanted a platform that wasn’t stagnant, better recommendations, more stats on their reading history, less spam and fewer bugs. They wanted to escape Amazon and find underappreciated books by underrepresented authors.
They wanted a place that felt as warm as a familiar library, but as exciting as a midnight book launch party.
We decided to form a bootstrapped team and create a new social discovery platform for book lovers of all kinds! Whether you read or listen, we want to make it shockingly simple for you to discover new books, organize the books on your shelf, and make lasting connections with other readers.
In the first round of research and development on Hardcover we focused on creating the baseline functionality that we’ll need for a book website. Things like a lot of books, the ability to track what you’re reading, write and read reviews, and to import your books from Goodreads.
Reading Goals
One feature I wasn’t expecting to be on that list? Reading Goals.
Turns out people reallllly love using the Reading Challenge feature on Goodreads. Almost without fail everyone we talked to sets a reading challenge for the year and works towards it.
After hearing this for about the 50th time, we realized we should try to get that feature into our earlier MVP. At least that way we could iterate on it.
On Goodreads, reading goals are simple. For the year, you specify how many “books” you want to read in the current year. As you mark books as read during the year, you’ll make progress on it. If you complete that number of books, it’s complete. That’s it.
As someone who reads books, listens to books, and reads comics, manga, and short stories, this hasn’t worked well for me. “Rhythm of War’ (1,232 pages) counts the same as a single issue of comic like “Monstress” (which is an amazing comic by the way).
We knew we wanted to do something a little more advanced – but while keeping the simplicity of Goodreads approach.
Here’s what we’ve currently landed on for our initial MVP:
Just like Goodreads, you can just specify a single field – the number – and create the goal.
The feature readers wanted the most for Goodreads goal system? The ability to set a page number goal. Many readers were having my same issue. What they really wanted was a metric that couldn’t be gamed by picking shorter books. Having a page goal makes it more accurate.
Within that date drop down there’s also the option to specify a date for a goal. While we believe most goals will be for the entire year, teachers could use goals for giving students summer reading, setting your own monthly (or semi-annual) goals, or if you have a goal that’s going to take more than a year to get to.
Let’s Talk Advanced Goals
These couple of options will likely cover the vast majority of readers. But we’re building Hardcover for serious readers. The readers we’ve talked to want to do more than just read a lot of books: they want to read books outside of their comfort zone, discover new voices and genres, and even be reminded to challenge themselves.
I decided to have a little fun and create the system I always wanted. Something that will allow setting much more in depth goals based on exactly what I’m trying to read more of. Here’s a sneak peak:
There’s a lot to unpack here. Initially I shared this screen in the Hardcover Discord and people were very rightly overwhelmed. Having the “basic goal” setup to fixed that. But for people who want the full kitchen sink they can jump in and create a goal that’s just right for them.
Some of these drop downs are doing a lot of work. For example: the “From” option allows for choosing books from a list you’ve created (Summer Reading List?) or multiple genres.
The “Written By” option allows for filtering characteristics of the authors. This would have been helpful for me back in 2018 when I realized fewer than 10% of the books I read were by women (that was up to 30% in 2019 after I realized, which is a good start but there’s more room to go).
We’re still working on the wording and options in these fields. All of these would allow selecting multiple – multiple genres, multiple races/ethnicities and multiple sexualities.
There’s a lot to it, but we’re really excited to see how people use this!
Here are some examples of goals that you could set on Hardcover:
Read 12 books in 2021.
Read 10,000 pages in 2021.
Read 50 books on “NPR’s Top 50 Science Fiction and Fantasy of the Last Decade” by the end of 2022.
Read or listen to 25 books written by women in 2021.
Read or listen to 10 poems written by black authors in 2021.
Read 100 graphic novels by the end of 2022.
Listen to 10 books by LGBTQI+ authors in 2021.
While there’s an option to create multiple goals, we don’t think most people should need to create more than 2-5 at most. After that it can get a little stressful. Just remember: your time is limited, so setting a clear goal is better than setting 10 goals you’re not working towards.
That’s our biggest concern with this goal system: that it’ll distract people from finishing 1 goal and instead spread attention across multiple.
For now, we’ll trust the users and research we’ve done and iterate accordingly!
Something we’ve been brainstorming more about lately is book stats. This is different than information about a specific book – this is rolling up details about a bunch of books and presenting that data in a way that makes sense.
This is a common practice on just about every service you probably use. Many services don’t do this because knowing your stats might cause you to reflect and realize just how much time you’re spending browsing Reddit or watching The Bachelor on Hulu.
For books though, seeing your stats can be motivational! It can remind you of favorites and cause you to read more… if done right.
How we group these books and what data we show is where is gets tricky. There are almost as many “book groupings” as book stats.
Every book you’ve ever read
Books you read in a specific time period – like “2021 books read”
Books with a specific status (Want to Read, Read, Did not Finish, etc)
Manual lists
Lists created by other people
All of the books on Hardcover based on usage
Books by a specific author
What people have read in the past year for an author
Books in a genre
New or popular books
And so many more. For now we’re starting on a few specific pages: list stats, user stats and yearly stats.
But what’s important about stats? Why is this worth focusing on?
A Celebration
At the beginning of every year I see a bunch of Tweets that look like this:
I need to chill out with listening to @boburnham’s Inside soundtrack on loop or my Spotify Year-In-Review is going to be an embarrassment again….just like last years Hamilton incident: pic.twitter.com/mTHn42ItQa
January is the month for people to share a celebration of their past years music, books and more. Spotify Wrapped has taken the lead on the music front here, giving people insight into their last year in a much more satisfying way than simply sorting by play count.
Side note: now that Bo Burnham’s Inside is on Spotify, my 2021 Year In Review is going to way more than depressing than usual too.
Many other platforms have taken on the same thing. Nintendo recaps your most played games and your total hours played.
Duolingo, the language learning app, celebrates your effort over the last year. Spending an hour a week on any self-improvement is reason enough to look back in awe.
My favorite celebration of the past year of them all is Letterboxd, a site for film buffs to track what they watch and discover hidden gems (sound familiar)?
Letterbox’d yearly stats for a user are ?? ?
This is just the above the fold part of the stats page. Pro users will have a more elaborate review that breaks down favorite films by genre, country, favorite stars, directors, and a bunch more.
These stats help understand where your taste in movies lie. You may think you love one genre, only to notice you’ve barely watched any movies in it.
Letterboxd also doesn’t wait until the end of the year to show you your stats. You can view them at anytime for the year up until today.
In a lot of ways, I see Letterboxd’d (say that 3 times fast) relationship to IMDB as similar to Hardcovers relationship to Goodreads. Letterboxd didn’t try to be a complete replacement for IMDB. They aimed at being a place for movie lovers to go to be around other serious film buffs and people that love movies. We’re aiming to do the same thing with Hardcover.
All of of these stats pages have one thing in common: They’re specific to a single user and over a time frame.
As far as year in review pages go, Goodreads actually does a decent job here. My 2020 year in review page goes into a few high level stats – books read, pages read and a few more.
After talking to potential Hardcover users, readers like this, but want a lot more. We have more work to do on this, but we’ve already heard a few more things that readers want to see:
Author gender – A breakdown of the gender of the authors a user has read over the past year. This one has come up a lot. This is something that helps readers understand if they’re unconsciously (or consciously) picking books from a wide number viewpoints or not.
Author race – Like gender, it’s easy to fall into a loop of reading authors you love and then reading similar authors to those. That can be fun, but it can be difficult to break out from that space into voices that are drastically different. Add to this recommendation algorithms that favor similar books and it’s less likely you’ll be exposed to drastically different points of view.
Book age – Some way to see what time period you’re reading books from. Are you focusing on recent books? Books from the last century? Classics from 100+ years ago?
Ratings breakdown – A grouping of your ratings on any number of dimensions. This could be as simple as a bar chart of your ratings, or an advanced look at your ratings comparing two groups. Do you rate new books higher? How about books in a specific genre? Just knowing that can help you (and us) pick future books that you’ll love.
Reading format – Whether you read the book, listened to it or both. We’re building different reading formats into the DNA to support audiobook listeners as well as traditional readers.
Book type – Novel, short story, graphic novel, comic book – there are many types of books out there. This plays into goals as well. If you’ve set a goal of reading 52 books in a year, do you want to count 30 page comics? Maybe. Maybe not.
We’re still figuring this out, but we’re excited by what it could enable: for you to find more books you love and expand your horizons. We’re starting with list stats – something that would show for any list you create. Many of these same stats could make their way to a “year in review” page later on.
A prototype of a user stats page for a list.
Any breakdown of a users activity has two big dimensions of data: user data and book data. The above prototype focuses mostly on user data. It’s a quick look at the progress towards a list, how they got there (read? listened?) and what they thought of those books.
Book data on the other hand doesn’t change per user. This is data grouped by the books themselves. If two people created the same list this data would be the same.
Where things get really interesting is when you start combining both of these datasets. What genres do you rate the highest? Do you want more books by men or women? Are the unread books on this list longer or shorter?
There’s a word for this – insights. It goes beyond just showing data to showing practical takeaways based on behavior. Pulling insights out of your book data is a dream of mine – even if I don’t yet know what that looks like.
Exist.io, a mood tracking app that I use, does a good job of this by correlating some data. It’s a good start, but there’s a lot more we can do with book data.
It completely makes sense that the days that I give the lowest mood score for are after a vacation or an adventure. That’s neat data to see, but I can’t see it’s going to help change in any way. Seeing the relationship between consuming sugar and cholesterol is something I can take immediate action on to be happier.
I’d love to figure out how to do something similar for books. We could correlate on similar dimension with your ratings, but with various other book criteria on the second dimension. Maybe you actually love books set in a particular location or time period and you don’t even realize it?
There are a bunch of questions you could ask, and our hope is to give you the tools to be able to answer most of them on your own.
It takes much more commitment to read a book than to watch a movie. Add on to that peoples different reading speeds and a “reading a book” could take from hours to months. When I commit to reading a book, I’ve decided it’s the most important book that I should read at that moment. That’s a lot of trust in an author, but also in whoever recommended it for me.
Like a lot of people, I track what books I want to read on Goodreads. This helps me choose that next book carefully. If I’m going to be spending days or weeks with a book, I want to know I’m not using my limited reading time on something that I’ll regret.
One thing that plays strong into this decision is lists. We’ve been thinking a LOT about lists on Hardcover. In fact it’s going to be one of the core features. The more research and brainstorming we’ve done on this topic, the more excited I am about it! We’ve talked about status lists, manual lists, smart lists, request lists – just to name a few I’ll go over in this post.
In fact, if Goodreads were to disappear tomorrow, this is the top feature that most people would miss the most – according to a recent poll on Reddit.
From the readers we’ve talked to when starting up Hardcover so far, this completely matches up with what we’ve heard. Most people use Goodreads to keep an ongoing list of what they want to read. Eventually they move those books from “Want to Read” to “Read” (maybe through “Currently Reading” as well).
In the Goodreads world these are called “Exclusive Shelves” (something only about 1 in 5 people we’ve talked to knew). On Hardcover we’re calling them what they really are: your status on a book.
Your Status for Every Book
For every book out there, there’s some status that fits for your relationship with it. These include what you’d expect – “Want to Read”, “Read” and “Currently Reading”. It goes beyond that though: “Did not Finish”, “Ignore this book”, “Paused”, “No Interaction”, “Saw on a shelf but haven’t expressed interest in” and tons more.
When you go to your “Want to Read” list, it should show every book that is currently in that status. As soon as you move it to a new status, it’ll remove it from that list and move it to the new one. Every book will be in exactly one status – or none if you’ve never interacted with it.
We’re building Hardcover with the intention of having a few set statuses that anyone can use – including a “Did Not Finish” status that is sorely missing from Goodreads. Readers can decide which ones they want to use and (eventually) hide the rest. If you never track what books you’re “Currently Reading”, you can disable that option and you won’t see it anywhere on the site. Just want to use Hardcover as your “Want to Read” list and nothing else? We got you.
Others want much more fine grained control over what they read. They want to move books into “Currently Reading” and be able to calculate how many pages they read per day on average. Those who love stats and want to further use them to understand their own reading habits. As someone in this group myself, we got you there as well.
By having these statuses systemwide, it does allow us to better improve the experience. Let’s say we create an “Ignored” status that hides that book everywhere on the site. Having that deeper level of connection between the status and how it is shown on the site should enable a really personalized experience that the OCD book tracking nerd in me is super excited about.
Your Personal Lists
Manually created lists are exactly what you would imagine. These are lists created by a single person. They can have any number of books, and can include books across different statuses.
When talking to people who use Goodreads today, we were surprised to see how few people use manual lists. Status lists were widely used of course, but manual lists were a distant second. But why?
That’s something we’re still trying to figure out. We have a bunch of theories about why. For many readers, the “exclusive shelves” are enough to solve their biggest use case. They have their “Want to Read” list, and don’t need to much else.
Secondly, there’s not much you get by creating a list. How many books on this list have been read? What percent of pages have been read? Is this list from some outside source – a blog, news article or a TikTok video? Who knows?
That’s not to say lists aren’t used! What we suspect is that they’re used less for what people want to read, and more for sharing what books they’ve read in an organized way – or track books towards a goal. We also suspect there’s a LOT of possibilities here for people to show off what they’re reading, share favorites and discover books from other readers.
Looking at some of my lists in the above image, a lot of these are jumbles that I’ve mostly forgotten about. I share my “Recommendations” list when people are interested in my all-time favorites. I’m currently working through NPR’s Top 100 Science Fiction and Fantasy books of all time and would love a way to easily track what percentage of that list I’ve read – a feature missing for lists on Goodreads.
Lists are used in so many different ways! You can have a ranked list – where order is important. You can have a private list of books you don’t want to share with other people. You can use them for organizing books you want to read, or for those you’ve already read. They’re versatile, and limited mostly by imagination.
One aspect of lists that I’m excited about is a Letterboxd feature we’re planning to adopt – the ability to copy a list. Did someone create a list that you really love? Copy it to your account so you’ll always have it handy.
This will be an amazing way to discover new books. We’re already planning dozens (hundreds?) of lists for launch. Things like “Hugo Award Winning Science Fiction Books”, “NY Times 50 Best Memoirs of All Time“, and even using lists as a way to elevate underrepresented authors.
We want Hardcover to be The Place you go for organized lists of books, whether we created the list, or we’re just organizing it.
Status lists and your personal lists are on our roadmap and are currently being worked on. The next two lists – smart lists and requests lists – are farther out, but are ideas we are crazy excited about.
Smart Lists
This is an idea we’re still batting around. The concept is simple: a smart list is a saved search of your books with any filter criteria you want. Here are a few easy example:
Books you read in 2021
All your 5 ⭐ books
Books on your “Want to Read” list with the genre “Fantasy”
Books released before 1950 that you’ve read
And a bunch more!
Let’s say you’re trying to figure out your next Nonfiction book to read is from your “Want to Read” list. On Goodreads you’d need to go to this list, and manually scan over everything to find books with that genre – without that genre ever being shown.
Being able to filter the books on a list is a great next step, and one we’re working on. It should be easy to filter your “Want to Read” books down to just the ones you’re interested in. The next step is to be able to save this search as a new “Smart List” and pull it up quickly and easily.
There’s still a lot to figure out about this. Would you only be able to create a Smart List with books that you have a status for? Or would you be able to create a Smart List across all books on Hardcover? To be determined.
Request Lists
This is firmly in the “idea” category, but it’s an exciting one. The idea is to be able to create some way for people to ask for book recommendations and get organized feedback. In a lot of ways this is similar to the /r/SuggestMeABook subreddit.
Another place that does this well is Facebook with their recommendations feature. You ask a question and people can respond with recommendations that show up on a map.
What about something like this for books? Something that allows a reader to ask for recommendations with a specific question and see organized recommendations with the most popular ones elevated to the top. If one book is recommended 10x more than all the others, that’s important information!
We have a lot of research and planning to do on this one, but it’s one we’re lining up work on.
There’s more we want to explore as well. Featured lists, author favorites and occasionally showing people lists that they might not otherwise discover on their own.
The last 2 months since starting work on Hardcover have flown by faster than anything time in recent memory (and a lot faster than all of 2020 ?). What started as a 3-month experiment is reaching it’s last month! Where we end up? Will will launch something in that time? Will we realize this project will actually take years?
We’ll see soon enough!
My plan right now is to get to an alpha release by the end of July. The goal is to get to a point where people can use the app:
Import their books from Goodreads, StoryGraph or their own CSV export.
View general information about a book and be able to explore books on the platform.
Track what you want to read, what you’re reading and what you’ve read – along with ratings, reviews, and dates read.
Earn badges baesd on what you’ve read and see what people who have earned each badge think of each book.
Create lists, add books to a list and view books by status (currently reading, to read, etc).
That might not seem like a lot – but it covers a surprising amount of most peoples Goodreads usage!
Just yesterday we launched our new landing page showcasing what we’re hoping to build. You can check it out now at hardcover.app.
My favorite part is the anti-Goodreads manifesto with the header: “Finding Good Books Shouldn’t Be a Slog through the Amazon“. It’s a fun read – I promise. ?
On the technical side, I wrote up a longer blog post detailing some of the programming behind the scenes – languages, frameworks, services, hosting and all of that. It’s a fun look behind the curtain of how we’re building Hardcover
A request for you! If you have an account on Hacker News, could you help me out by upvoting this blog post too? It helps more people find Hardcover and get the word out. Just head over here to help out.
What’s Next?
One of the next steps after this I’m most excited about is generating a match percentage for you for every book – a score from 0% to 100% indicating how likely you are to enjoy it based on your reading history and others history. For that we’ll need a bunch of user data, so we can’t roll that out until we have a bunch of users.
We think this match percentage is going to be a killer feature. Just imagine looking up books that have been recommended to you from Twitter, friends or elsewhere and then being able to quickly see if Hardcover thinks you’ll enjoy it. Seeing a match percentage of 32% is going to feel completely different than a 98% match. It’s something I’d use and I can’t wait to see it in action!
For those of you we’ve talked to and shown our first prototype, we’re now iterating on it based on feedback. So far here’s what stood out the most to me from our ~30 user interviews.
The most important lists are your status lists (to read, currently reading, read) more so than manual lists (favorites, recommendations, etc).
Most people find books to read outside of Goodreads, then head over there to learn more about it and decide if it’s worth reading.
The match % resonated really well, but people wanted to know how it worked and what actions impact it.
We initially wanted to use upvote/downvote for books in order to power our algorithm. After talking to more users we’ve changed that to rating (0.5 stars to 5 stars) and a thumbs up/down based on if you want more books like this one.
Here’s a look at what all of this could look like when put together. You can try out a prototype versin of this button on hardcover.
I’m surprisingly excited about the “More Like This” option. It’s possible for a book to be bad and for you to want more like it – or for a book to be amazing, but not be interested in similar books.
An example I’ve been using for this is The Diary of Anne Frank. I still remember the impact this had on me when I read it in high school. I’d no doubt rate it as 5 stars. Buuut, I don’t think I want my recommendations filled with similar books. I’d rather seek those out myself when in the mood than rely on an algorithm.
There is no “perfect tech stack”. I’m sorry you had to find out this way. Every startup is different. Some ideas can be turned into multimillion-dollar companies using only a spreadsheet and phone calls. Others require machine learning, big data, and years of research.
Hardcover is somewhere in the middle. We’re building a platform focused on social discovery and organization for serious book lovers. For that, we need a huge database of books – hundreds of thousands to millions of them.
If someone wants to track what books they want to read, they need a reliable place to find all books. This database has long been one of Goodreads primary advantages and one of our uphill battles.
We’re also a distributed team mostly working on this part-time. We span 4 time zones across 3 countries. The tools we use to work will be different than a group of friends collaborating in person.
With all of that out of the way, here’s a look at our perfect tech stack. It’s focused around a few important points:
Price – We’re bootstrapped, so free is better.
Distributed – Everything should allow us to work remotely.
Scalable – Finding the right balance of being scalable, but still able to go fast.
These are the tools and systems we’re using to build Hardcover today – after less than 2 months since we started.
Management & Organization
Miro – $0. Next tier up: $96/mo. Miro is an amazing group whiteboard application that makes collaboration super-easy (barely an inconvenience). It allows us to do brainstorming exercises, dot voting, presentations, and more remotely all from the same application.
We’ve chosen to have one big whiteboard that we add to each week. As new members are added, they’re able to look back and get an idea of what got us to where we are today. We’ll likely create a new board at the beginning of every sprint.
The basic plan on Miro is free for unlimited users so long as you stay within the 5 boards limit. Since we’re using the same board for every meeting, that’s worked out so far.
Google Sheets & Docs – $0. Next tier up: $5/user/month. – Google used to have a free “Apps for Your Domain” service that age free email addresses and GSuite access to everyone. A few years ago Google switched to charging $5/user/month.
Luckily there’s a way around this: just use your regular Google accounts! You can collaborate together using this without the added fee.
Notion – $0. Next tier up: $8/team member – I love Notion. I’ll head over to YouTube and just watch videos on Notion for fun. I’ve even used it to track books I’ve read or want to read.
For project management and organizing what people are working on, Notion is works. It’s not as feature-rich as Asana, Monday or Clickup, but a startup in the earliest stages doesn’t need half of those features.
In fact, I’d recommend skipping it altogether until it’s a problem. We only started tracking what we’re working on this past week at the 5-week mark. Even that seemed too early.
GitHub – $0 – $4/user/month for advanced features. Like just about every development project, we host our code on GitHub. For past companies I’ve worked at (Pluralsight, Code School), we’d organize issues within a single repository. Each repo is a central location for all tickets.
For startups, it’s even easier. At the organization level, you can create “projects” that span multiple repositories. In our case, we have 2 repos now (the front-end and the backend-end apps), and the project at the organization level allows all work to be represented in one place.
Current Management Cost: $0 for now
Services
The Sendy Dashboard makes it super-easy to send emails to your list.
Sendy – $69 + pennies a month – Newsletter software that’s super cheap but scales well. You could use Mailchimp for your first 1k users for free, but it’s more expensive after that. I’ve been using it with another project for a while, so it was easy to use it here with the same account. I’m only hosting one instance of Sendy, but I can use it for multiple projects.
WordPress – Free – The blog portion of Hardcover is WordPress. Behind the scenes, Next.js uses GraphQL to pull in the latest posts and show them. End users never know it’s WordPress. There’s a great Learn With Jason episode that helped me build this out.
Dreamhost – $2.59/mo – I host both Sendy and WordPress here for Hardcover. It’s all on the same account as Minafi’s (another project of mine) Sendy and WordPress, which has made this free. The next site I work on will also be on here for these services.
Current Services Cost: $0 for now
The Code
Time to get into the fun stuff (well, for me at least). I’ve been building websites since 1998 when I created one my first site ever (an anime fan site).
Over the years my preferred tech stack has changed more times than I can count. From straight HTML & CSS to PHP & MySQL to ColdFusion to Flex & Java to Ruby on Rails (can you tell I switched from the enterprise to a startup?).
For the last decade Ruby on Rails was my life. It was part of Code School’s DNA since launching with Rails for Zombies – an interactive course to learn Rails, built on Rails. The Course Team (which I managed and coded on) was also a Ruby on Rails app. Most of our services were Rails apps. It was Ruby all the way down.
Since then I’ve typed rails new more than a hundred times. Each time I got a little faster at building with it.
When it came time to decide what technology to use for Hardcover, I assumed I’d just use Rails again. It keeps everything organized, it’s fast (enough) and there are libraries for just about everything you could ever ask for.
Over the last year I worked on two smaller-scale Ruby on Rails applications – each with a JavaScript front end. One used Vue.js and REST, the other Vue.js and GraphQL through Rails. While these apps were fast, building out every GraphQL endpoint was a pain. I was also missing out on one of the most important parts of speedy apps: server side rendering.
For these apps that I built with Rails + a JS framework, the first page load would involve a blank page that would then be hydrated with data. It wasn’t exactly what I wanted for every page, but it was all I had. I couldn’t precompile Vue.js components on the server side.
When it came time to choose a tech stack for Hardcover I knew I wanted server side rendering from the start. I had a few other things on my list too:
Server Side Rendering
React – specifically for React Native down the line
Easy integration with TensorFlow (Python or JavaScript)
It was looking clear to me that this would be a JavaScript project – and not just because I know barely any Python.
JavaScript would also have the added advantage of being able to stick to just one language on the front-end and back-end, while even sharing code libraries between the two.
It would mean breaking away from my comfy blanket that is Ruby on Rails, but the payoff could be big. So with that in mind I began researching out what the tech stack should include. Here’s a look at what I landed on so far.
Next.js & React – I’m loving both of these for building it. React should allow for using React Native later, which means native iOS and Android apps down the line.
I’ve used a lot of frameworks over the years, but Next.js is without a doubt the easiest one I’ve ever seen. There are no routes and no configuration you need to setup. Just create a file at a specific location, have it return a React component and bam, you have a webpage. I’ve honestly spent more time getting Webpack working with Rails than building major pieces of Hardcover.
Vercel – $20/mo for team hosting, free for individuals – We’re hosting the Next.js app on Vercel – a cloud hosting platform built by the creators of Next.js. Their obsession with speed has made me smile.
PostgreSQL – $200/mo – My goto database for anything now a days. About a decade ago I was working on a MySQL project. I added a new column to a table with 10 million rows. It ended up locking the table for over 30 minutes, assuring no one could access it. The worst part? It was the users table. Now I just use PostgreSQL for everything.
Wait, $200 a month? It turns out creating a database to hold 20,000,000 isn’t cheap. So far this is one cost we haven’t been able to defer or skip. On Heroku, $200 gets you a database with 8GB of RAM, 256 GB of storage, automatic backups, followers, forks and 400 connections. Eventually we’ll want to look into other hosting. I’m not a DevOps expert, so having this managed saves me a lot of stress and helps me sleep better at night.
Hasura & GraphQL – $0 to start, $99/mo for Hasura Cloud – I only learned about Hasura in April and I’m completely in love with it. It’s software – either cloud hosted by them, or hosted on your own – that creates a GraphQL API to your PostgreSQL database. You can setup permissions per user that go all the way down to the row and column level.
What’s been amazing about Hasura is that we’re able to focus on filling our database with books and building the team, not focused on creating a GraphQL API for everything we might want to use. Instead, we can just use what Hasura offers, or fallback on our Express.js server (next) if it’s beyond it’s capabilities.
Express.js – Our backend for code we don’t need available to the client. This API is never hit by the end user, but does handle a bunch of heavy lifting (importing people’s lists, keeping books up to date, etc). We’ve setup a number of triggers in Hasura that will hit Express.js endpoints.
The Express.js app also has a GraphQL endpoint that’s federated with Hasura. Let’s say the front-end wants to get a user and 10 recommended books for that user. We can issue a single GraphQL call to Hasura, but request data from the Express.js side. This allows us to use TensorFlow.js on the backend to generate and return these recommendations to the user with a beautifully-simple front-end coding experience.
Bull – Not everything can be handled via a web request. For background processing and anything that happens outside the browser we have a Bull queue backed by Redis. This handles any long-running tasks. Since Node.js is amazing at this kind of work, we’re able to run 50 jobs per worker, with 2 workers per process. That’s 100 jobs at a time.
Think of it like this: With Node.js there’s only 1 thing that’s actually happening at a time per process. But when that thread is waiting – like when it’s waiting for a database query to complete – it can start running code from another job. Node.js repeats this process until it has 50 things waiting, or until some of them complete. Whichever one completes first continues on. When it pauses again or completes, work resumes on another job.
This allows things like our Book Importer to process 100 books at a time per worker – and we can scale up our workers to handle up to about 10,000 a time if needed before we hit our database connection limit.
TensorFlow.js – open source – I am no expert in TensorFlow, but I’m in awe of what it can do. I’m reading through Deep Learning with JavaScript: Neural networks in TensorFlow.js right now, and it’s been mind-warping. So far we’ve done some proof of concepts to test out ideas, but we’re still a ways away from using this yet. Once we get some users we’ll start creating TensorFlow models for the most important bits (Match % and Recommendations) come to mind.
Heroku – $260 – The Express.js app, Bull worker queue, Redis and Postgres are all hosted on Heroku. None of those are directly accessed by the end user, so this piece is all behind the scenes.
Heroku isn’t cheap. The total hosting cost to get started with this is around $260/month. $200 for the database, $25 for Express, $25 for Bull and $10 for Redis.
When/if someone joins the team with DevOps experience I’m sure we’ll be able to lower the cost on this. Luckily this is our only bill for the moment, so it’s not an emergency.
Server Architecture
That was kind of a lot. Recently I was onboarding a new team member and drew up this quick diagram of how it all works together.
Yes, I somehow spelled “Server” wrong. There should be a Redis instance that Express.js and Bull can access too.
Here’s the thing with this diagram: it could have all been built as a single Ruby on Rails app with a PostgreSQL database. We could have gone that route to build out a quick prototype and go from there.
Let me be real for a moment here: I think we’ll be able to move faster with this setup. Even though I’m needing to learn Next.js and Hasura as we go, being able to have most of the API created for free is a game changer. Instead of writing API endpoints non-stop, I’m able to focus on user research.
The advantages don’t stop there. It already looks like we’ll be able to scale up with an easier path as well:
Quick access to a full GraphQL API (Hasura)
Easily iterate into a React Native App (React, Hasura)
Easily scale the API (Postgres Followers + Hasura distributed over them)
When I tried to look into the future to see what we’d need to launch publicly – not just a proof of concept – it went beyond the basics. It’s tough to have a book website that can’t import all of your existing books. For that you need a seriously big database or a long import process that abuses Google Books API.
While it’s still in the wheelhouse of what Ruby on Rails offers, I’m excited to try something new. More than anything else, I think this stack offers some of the fastest load times for users. A typical page load might look something like this:
User downloads a pre-rendered HTML page for a book.
Client side JS jumps in and fills in any user-specific parts of the page.
The only API hit in this process is Hasura, which in turns hits the PostgreSQL database directly.
That’s really about it. There are a lot of parts we’ll use down the line, but 99% of page requests will be this simple. While it’s sometimes fun to dream about how a project could scale, getting the user interaction side as fast as possible while optimizing for developer productivity is the technical goal in all of this. Keep that in mind when planning your perfect tech stack.
For years – decades even – I’ve read stories about people building startups. That included popular articles on Digg, founder stories on Hacker News, growth stories on IndieHackers, episodes of Shark Tank, Gimlets StartUp Podcast, and the occasional post that makes the rounds on Twitter or Reddit.
I read them all. (Canny.io’s blog was one of my favorites during their early days).
There’s something that resonates so well about blogs during this scrappy state. I could put myself in their shoes and live vicariously. “Yeah, that’s a good decision”. “No! Why are you focusing on that? There’s so much more potential with that other problem!”
It allowed me to have some of the feel of being in that phase of a project with none of the risk.
During most of that time, I was working at a startup myself – Code School. I joined as an early employee back in 2012 a few months after the first lines of code were written. Over the next 3 years (until we were acquired) I got my first real taste of being an early startup employee.
What I loved most was how much you could learn! Every new avenue or problem for the company meant a new problem to solve. The technical problems are obvious ones. How do we run code in the browser in the time before Docker? How do we secure it and prevent server crashes? How do we check people’s code?
Besides those niche-specific topics, everything else was new too. How do you organize teams around innovation? How do you develop a company culture of growth and collaboration? How do you ensure you’re working on the right thing.
Do we use a Mom Test approach, or do we use a Sprint? Do we issue blocks of equity to founders, or do we use a dynamic equity split with the Slicing Pie model?
We’re tackling those questions one at a time as a team. This blog will be the place to share those updates and keep you (who I can only assume is interested in startups at this stage) up to date.
Where We’re Focusing Right Now
After about ~20 interviews with people to understand how they used Goodreads, we’ve started to see a handful of themes stand out. As vast as Goodreads is, there are only a few features that just about everything uses:
Research books that are mentioned elsewhere (Twitter, Reddit, Facebook, NY Times, etc).
Track what books readers want to read (To Read Shelf)
Track when they started or finished a book.
Rate and possibly review the book when they’re done.
See what books their friends are reading – and if they enjoyed them.
That’s pretty much it. Goodreads has about 7,465 other features, but the vast majority of people are using some subset of these features.
That doesn’t mean Hardcover will be just this. There are other problems readers face that Goodreads doesn’t solve – book discovery, finding your next book to read, and social validation of books just to name a few.
Armed with both those problems and the most commonly used features, we’ve created a prototype and begun showing it to users. As much as I want to share it here, we want to see peoples reactions when we show it to them for the first time. If someone sees something and has time to think about it, their reaction is going to be completely different from a first impression. Part of good product research is nailing that first impression.
Once we’ve iterated on our prototype and have a clear direction in mind, we’ll definitely share some screens here.
If you’re interested in seeing it before that, the best way is to sign up for our email list! We’re always looking for new people to talk to, and it’s your feedback is what will help us build a better product.
We’re still just getting started on user research, but one thing has stood out from ~10 user interviews: it’s not just us who has problems with Goodreads.
The hunt for a name started. Something that would resonate with avid readers, but not be a turnoff to audiobook listeners, Kindle readers, or anyone else who considers themselves a reader.
One site whose name inspired me is Letterboxd. Letterboxd is a social network for movie fans where you can track what you watch and see what your friends watch. The name itself has roots in film history that not everyone will know immediately.
We explored some similar ideas for books. BookEnd? BookBee? Pagely? BitLit? We had a long list. None of them resonated with us, and we doubted serious readers would be attracted to them either. Then we stumbled on one that worked:
Hardcover.
A nice single dictionary word, no established brand, and an available .app tld. I registered it immediately and put up a landing page (thanks TailwindUI for the template for saving me time).
Our initial landing page for Hardcover!
Although there’s not much to see yet, there is a place to sign up for the newsletter to be notified when we launch (and get updates we progress).
We’re using Sendy to manage the newsletter – which is basically free since I already had it set up for another site. If you’ve never used Sendy, it’s an insanely good platform for sending emails. You host the code and can manage multiple brands (on multiple domains) from a single installation. That allows your newsletter readers to only see your domain in their links.
This next week looks like more of the same: user research, competitive research, and data research. I have 4 interviews scheduled, and the rest of the team has a few as well.
We’re also starting to research the data side of this project. Getting a clean database of millions of book editions will be no small task. I’m working through how we might manage this to understand the costs and people required to have the data we’d need for this project.
Site note: if you know of any good recommendations for book data, please reach out to me: adam at hardcover.app.
About a dozen people replied or messaged me saying they were interested. I got on a call with a few of them and was surprised to find 3 people that were perfect for an initial founding team. Along with my and my wife, we have a solid 5-person foundation.
We all met up on May 1st to officially kick off this project. Nathan, our UI/UX designer, led us through a user journey exercise. The result of which was a direction for us to head with our initial round of user research.
Our tool of choice for collaboration is Miro. If you haven’t used Miro (and I hadn’t up until this point), it’s honestly amazing. We’ve been working through a Sprint-style exploration that helps us narrow our focus down to the smallest units of work. We’re not building a “Goodreads Clone” after all, we’re building something better.
A look at our Miro board after a few meetings.
With that in mind, the 5 of us are reaching out to Goodreads users to conduct user research this week. If you’d like to chat with us, please join our mailing list. We occasionally reach out to the list to find people to chat with, so that’s the best place to help out.
As a joke, I tweeted out a random thought: that I was annoyed at Goodreads and should make a competitor out of spite for Amazon. A “spite site”, as Larry David would say.
I'm considering making a Goodreads competitor (or more aptly a Letterboxd for books) out of spite for Amazon.
I’ve used Goodreads since 2009. Every book I’ve read since then has been tracked, as well as over 400 books on my “to read” list that I’ve added over the years. During that time Goodreads has barely changed – at least for anything I use. The only change that’s impacted me in the last year has been the removal of their API which further locked in people using their service.
One of my personal goals for this year is to give less money to Amazon. We’ve switched to buying local or direct when we can, canceled Amazon prime, and even moved some web hosting off EC2/S3 (that was the most annoying). As an avid reader and audiobook listener, moving off of Amazon for books has been the hardest part. That would even mean switching off Goodreads – if I even could.
I began searching for alternatives. There are a LOT of sites out there trying to be the next Goodreads. A look at Product Hunt and Indiehackers shows there’s no shortage of people who have attempted this exact same idea.
Some are seriously impressive, but so far none have taken over. By my calculations, the total market share of all non-Goodreads book organization sites is maybe 2% of GR’s total monthly visitors – and 1.5% of that is LibraryThing. That last 0.5% is where all the innovation in the online book community is happening!
I’m just spinning up on this idea, but I’m excited to see where it goes.