├── .eslintrc.json
├── .gitignore
├── README.md
├── comics
├── 2500.json
├── 2501.json
├── 2502.json
├── 2503.json
├── 2504.json
├── 2505.json
├── 2506.json
├── 2507.json
├── 2508.json
├── 2509.json
├── 2510.json
├── 2511.json
├── 2512.json
├── 2513.json
├── 2514.json
├── 2515.json
├── 2516.json
├── 2517.json
├── 2518.json
├── 2519.json
├── 2520.json
├── 2521.json
├── 2522.json
├── 2523.json
├── 2524.json
├── 2525.json
├── 2526.json
├── 2527.json
├── 2528.json
├── 2529.json
├── 2530.json
├── 2531.json
├── 2532.json
├── 2533.json
├── 2534.json
├── 2535.json
├── 2536.json
├── 2537.json
├── 2538.json
├── 2539.json
├── 2540.json
├── 2541.json
├── 2542.json
├── 2543.json
├── 2544.json
├── 2545.json
├── 2546.json
├── 2547.json
├── 2548.json
├── 2549.json
├── 2550.json
├── 2551.json
├── 2552.json
├── 2553.json
├── 2554.json
├── 2555.json
├── 2556.json
├── 2557.json
├── 2558.json
├── 2559.json
├── 2560.json
├── 2561.json
├── 2562.json
├── 2563.json
├── 2564.json
├── 2565.json
├── 2566.json
├── 2567.json
├── 2568.json
├── 2569.json
├── 2570.json
├── 2571.json
├── 2572.json
├── 2573.json
├── 2574.json
├── 2575.json
├── 2576.json
├── 2577.json
├── 2578.json
├── 2579.json
├── 2580.json
├── 2581.json
├── 2582.json
├── 2583.json
├── 2584.json
├── 2585.json
├── 2586.json
└── 2587.json
├── components
├── Footer.js
├── Header.js
└── Layout.js
├── context
└── i18n.js
├── jsconfig.json
├── next.config.js
├── package.json
├── pages
├── _app.js
├── _document.js
├── api
│ └── search.js
├── comic
│ └── [id].js
├── index.js
└── search
│ └── index.js
├── postcss.config.js
├── public
├── favicon.ico
└── vercel.svg
├── services
└── search.js
├── styles
├── Home.module.css
└── globals.css
├── tailwind.config.js
└── translations
├── en.json
└── es.json
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "next/core-web-vitals"
3 | }
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # next.js
12 | /.next/
13 | /out/
14 |
15 | # production
16 | /build
17 |
18 | # misc
19 | .DS_Store
20 | *.pem
21 |
22 | # debug
23 | npm-debug.log*
24 | yarn-debug.log*
25 | yarn-error.log*
26 | .pnpm-debug.log*
27 |
28 | # local env files
29 | .env.local
30 | .env.development.local
31 | .env.test.local
32 | .env.production.local
33 |
34 | # vercel
35 | .vercel
36 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
2 |
3 | ## Getting Started
4 |
5 | First, run the development server:
6 |
7 | ```bash
8 | npm run dev
9 | # or
10 | yarn dev
11 | ```
12 |
13 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
14 |
15 | You can start editing the page by modifying `pages/index.js`. The page auto-updates as you edit the file.
16 |
17 | [API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.js`.
18 |
19 | The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.
20 |
21 | ## Learn More
22 |
23 | To learn more about Next.js, take a look at the following resources:
24 |
25 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
26 | - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
27 |
28 | You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
29 |
30 | ## Deploy on Vercel
31 |
32 | The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
33 |
34 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
35 |
--------------------------------------------------------------------------------
/comics/2500.json:
--------------------------------------------------------------------------------
1 | {"id":2500,"img":"https://imgs.xkcd.com/comics/global_temperature_over_my_lifetime.png","height":636,"width":740,"month":"8","link":"https://www.documentcloud.org/documents/2805576-1982-Exxon-Memo-to-Management-About-CO2","year":"2021","safe_title":"Global Temperature Over My Lifetime","alt":"I was really impressed by the accuracy of some of the report's predictions about fossil fuel consumption. Then I realized, oh, right, of course.","title":"Global Temperature Over My Lifetime","day":"9"}
2 |
--------------------------------------------------------------------------------
/comics/2501.json:
--------------------------------------------------------------------------------
1 | {"id":2501,"img":"https://imgs.xkcd.com/comics/average_familiarity.png","height":480,"width":295,"month":"8","link":"","year":"2021","safe_title":"Average Familiarity","alt":"How could anyone consider themselves a well-rounded adult without a basic understanding of silicate geochemistry? Silicates are everywhere! It's hard to throw a rock without throwing one!","title":"Average Familiarity","day":"11"}
2 |
--------------------------------------------------------------------------------
/comics/2502.json:
--------------------------------------------------------------------------------
1 | {"id":2502,"img":"https://imgs.xkcd.com/comics/every_data_table.png","height":307,"width":243,"month":"8","link":"","year":"2021","safe_title":"Every Data Table","alt":"I'm hoping 2022 is relatively normal because I don't know what symbol comes after the asterisk and the dagger.","title":"Every Data Table","day":"13"}
2 |
--------------------------------------------------------------------------------
/comics/2503.json:
--------------------------------------------------------------------------------
1 | {"id":2503,"img":"https://imgs.xkcd.com/comics/memo_spike_connector.png","height":262,"width":262,"month":"8","link":"","year":"2021","safe_title":"Memo Spike Connector","alt":"Backward-compatible with many existing cables, and can connect directly to phones or tablets if you press them down hard enough.","title":"Memo Spike Connector","day":"16"}
2 |
--------------------------------------------------------------------------------
/comics/2504.json:
--------------------------------------------------------------------------------
1 | {"id":2504,"img":"https://imgs.xkcd.com/comics/fissile_raspberry_isotopes.png","height":290,"width":559,"month":"8","link":"","year":"2021","safe_title":"Fissile Raspberry Isotopes","alt":"Grandma's shelf-stable blackberry pie meson recipe was a huge seller until her farm was shut down by a joint FDA/NRC investigation.","title":"Fissile Raspberry Isotopes","day":"18"}
2 |
--------------------------------------------------------------------------------
/comics/2505.json:
--------------------------------------------------------------------------------
1 | {"id":2505,"img":"https://imgs.xkcd.com/comics/news_story_reaction.png","height":416,"width":305,"month":"8","link":"","year":"2021","safe_title":"News Story Reaction","alt":"Unless the next line is, \"After we broke up, she blamed the painting and spent years planning her revenge, so my sorrow is mixed with relief that the dogs at least denied her that triumph.\"","title":"News Story Reaction","day":"20"}
2 |
--------------------------------------------------------------------------------
/comics/2506.json:
--------------------------------------------------------------------------------
1 | {"id":2506,"img":"https://imgs.xkcd.com/comics/projecting.png","height":216,"width":208,"month":"8","link":"","year":"2021","safe_title":"Projecting","alt":"This is something we all need to work on, but especially you all.","title":"Projecting","day":"23"}
2 |
--------------------------------------------------------------------------------
/comics/2507.json:
--------------------------------------------------------------------------------
1 | {"id":2507,"img":"https://imgs.xkcd.com/comics/usv_c.png","height":217,"width":231,"month":"8","link":"","year":"2021","safe_title":"USV-C","alt":"Ultra-Serial Violet C light is unpolarized, so you don't have to flip the polarizing filter over when you get the orientation wrong the first time.","title":"USV-C","day":"25"}
2 |
--------------------------------------------------------------------------------
/comics/2508.json:
--------------------------------------------------------------------------------
1 | {"id":2508,"img":"https://imgs.xkcd.com/comics/circumappendiceal_somectomy.png","height":326,"width":268,"month":"8","link":"","year":"2021","safe_title":"Circumappendiceal Somectomy","alt":"Some personal news: After treating my first case a few years ago with antibiotics, I can report that I have now had appendicitis for the second and--unless something extremely unexpected happened with the surgery--final time.","title":"Circumappendiceal Somectomy","day":"27"}
2 |
--------------------------------------------------------------------------------
/comics/2509.json:
--------------------------------------------------------------------------------
1 | {"id":2509,"img":"https://imgs.xkcd.com/comics/useful_geometry_formulas.png","height":338,"width":300,"month":"8","link":"","year":"2021","safe_title":"Useful Geometry Formulas","alt":"Geometry textbooks always try to trick you by adding decorative stripes and dotted lines.","title":"Useful Geometry Formulas","day":"30"}
2 |
--------------------------------------------------------------------------------
/comics/2510.json:
--------------------------------------------------------------------------------
1 | {"id":2510,"img":"https://imgs.xkcd.com/comics/modern_tools.png","height":446,"width":237,"month":"9","link":"","year":"2021","safe_title":"Modern Tools","alt":"I tried to train an AI to repair my Python environment but it kept giving up and deleting itself.","title":"Modern Tools","day":"1"}
2 |
--------------------------------------------------------------------------------
/comics/2511.json:
--------------------------------------------------------------------------------
1 | {"id":2511,"img":"https://imgs.xkcd.com/comics/recreate_the_conditions.png","height":272,"width":611,"month":"9","link":"","year":"2021","safe_title":"Recreate the Conditions","alt":"We've almost finished constructing the piña collider.","title":"Recreate the Conditions","day":"3"}
2 |
--------------------------------------------------------------------------------
/comics/2512.json:
--------------------------------------------------------------------------------
1 | {"id":2512,"img":"https://imgs.xkcd.com/comics/revelation.png","height":267,"width":365,"month":"9","link":"","year":"2021","safe_title":"Revelation","alt":"And the heaven departed as a scroll when it is rolled together, but then more heaven kept appearing to replace it, as if the scroll was infinite.","title":"Revelation","day":"6"}
2 |
--------------------------------------------------------------------------------
/comics/2513.json:
--------------------------------------------------------------------------------
1 | {"id":2513,"img":"https://imgs.xkcd.com/comics/saturn_hexagon.png","height":387,"width":364,"month":"9","link":"","year":"2021","safe_title":"Saturn Hexagon","alt":"Sorry, in SI units that's \"there's a big football in there.\"","title":"Saturn Hexagon","day":"8"}
2 |
--------------------------------------------------------------------------------
/comics/2514.json:
--------------------------------------------------------------------------------
1 | {"id":2514,"img":"https://imgs.xkcd.com/comics/lab_equipment.png","height":379,"width":299,"month":"9","link":"","year":"2021","safe_title":"Lab Equipment","alt":"I've been working on chocolate bar annealing techniques to try to produce the perfect laser s'more. Maybe don't mention that on the grant application though.","title":"Lab Equipment","day":"10"}
2 |
--------------------------------------------------------------------------------
/comics/2515.json:
--------------------------------------------------------------------------------
1 | {"id":2515,"img":"https://imgs.xkcd.com/comics/vaccine_research.png","height":261,"width":696,"month":"9","link":"","year":"2021","safe_title":"Vaccine Research","alt":"Honestly feel a little sheepish about the amount of time and effort I spent confirming \"yes, the vaccine helps protect people from getting sick and dying\" but I guess everyone needs a hobby.","title":"Vaccine Research","day":"13"}
2 |
--------------------------------------------------------------------------------
/comics/2516.json:
--------------------------------------------------------------------------------
1 | {"id":2516,"img":"https://imgs.xkcd.com/comics/hubble_tension.png","height":302,"width":715,"month":"9","link":"","year":"2021","safe_title":"Hubble Tension","alt":"Oh, wait, I might've had it set to kph instead of mph. But that would make the discrepancy even wider!","title":"Hubble Tension","day":"15"}
2 |
--------------------------------------------------------------------------------
/comics/2517.json:
--------------------------------------------------------------------------------
1 | {"id":2517,"img":"https://imgs.xkcd.com/comics/rover_replies.png","height":601,"width":338,"month":"9","link":"","year":"2021","safe_title":"Rover Replies","alt":"I'm so glad NASA let you take your phone to Mars!","title":"Rover Replies","day":"17"}
2 |
--------------------------------------------------------------------------------
/comics/2518.json:
--------------------------------------------------------------------------------
1 | {"id":2518,"img":"https://imgs.xkcd.com/comics/lumpers_and_splitters.png","height":296,"width":271,"month":"9","link":"","year":"2021","safe_title":"Lumpers and Splitters","alt":"Anna Karenina is a happy family lumper and unhappy family splitter.","title":"Lumpers and Splitters","day":"20"}
2 |
--------------------------------------------------------------------------------
/comics/2519.json:
--------------------------------------------------------------------------------
1 | {"id":2519,"img":"https://imgs.xkcd.com/comics/sloped_border.png","height":364,"width":419,"month":"9","link":"","year":"2021","safe_title":"Sloped Border","alt":"\"The slope will be 74° at ground level.\" \"Okay, I think we can hack together a ... wait, why did they specify ground level? It's 74° everywhere, right? ... Oh no, there's a whole section in the treaty labeled 'curvature.'\"","title":"Sloped Border","day":"22"}
2 |
--------------------------------------------------------------------------------
/comics/2520.json:
--------------------------------------------------------------------------------
1 | {"id":2520,"img":"https://imgs.xkcd.com/comics/symbols.png","height":520,"width":436,"month":"9","link":"","year":"2021","safe_title":"Symbols","alt":"\"röntgen\" and \"rem\" are 20th-century physics terms that mean \"no trespassing.\"","title":"Symbols","day":"24"}
2 |
--------------------------------------------------------------------------------
/comics/2521.json:
--------------------------------------------------------------------------------
1 | {"id":2521,"img":"https://imgs.xkcd.com/comics/toothpaste.png","height":272,"width":515,"month":"9","link":"","year":"2021","safe_title":"Toothpaste","alt":"\"9 out of 10 dentists have banned me from their offices.\"","title":"Toothpaste","day":"27"}
2 |
--------------------------------------------------------------------------------
/comics/2522.json:
--------------------------------------------------------------------------------
1 | {"id":2522,"img":"https://imgs.xkcd.com/comics/two_factor_security_key.png","height":294,"width":519,"month":"9","link":"","year":"2021","safe_title":"Two-Factor Security Key","alt":"The bruises on my fingertips are my proof of work.","title":"Two-Factor Security Key","day":"29"}
2 |
--------------------------------------------------------------------------------
/comics/2523.json:
--------------------------------------------------------------------------------
1 | {"id":2523,"img":"https://imgs.xkcd.com/comics/endangered.png","height":445,"width":347,"month":"10","link":"","year":"2021","safe_title":"Endangered","alt":"The list includes polio, Guinea worm, and this one particular enterovirus strain that they've been tracking out of spite after it went around the lab a few years ago.","title":"Endangered","day":"1"}
2 |
--------------------------------------------------------------------------------
/comics/2524.json:
--------------------------------------------------------------------------------
1 | {"id":2524,"img":"https://imgs.xkcd.com/comics/comet_visitor.png","height":256,"width":740,"month":"10","link":"","year":"2021","safe_title":"Comet Visitor","alt":"It's a myth that the Great Wall of China is the only human-made structure visible from space--there are LOTS of structures for us to feel self-conscious about!","title":"Comet Visitor","day":"4"}
2 |
--------------------------------------------------------------------------------
/comics/2525.json:
--------------------------------------------------------------------------------
1 | {"id":2525,"img":"https://imgs.xkcd.com/comics/air_travel_packing_list.png","height":434,"width":496,"month":"10","link":"","year":"2021","safe_title":"Air Travel Packing List","alt":"I know the etiquette is controversial, but I think it's rude when the person in front of me reclines their seat into the bell of my trumpet.","title":"Air Travel Packing List","day":"6"}
2 |
--------------------------------------------------------------------------------
/comics/2526.json:
--------------------------------------------------------------------------------
1 | {"id":2526,"img":"https://imgs.xkcd.com/comics/tsp_vs_tbsp.png","height":165,"width":293,"month":"10","link":"","year":"2021","safe_title":"TSP vs TBSP","alt":"It's like one teraspoon / when all you need is a kilonife","title":"TSP vs TBSP","day":"8"}
2 |
--------------------------------------------------------------------------------
/comics/2527.json:
--------------------------------------------------------------------------------
1 | {"id":2527,"img":"https://imgs.xkcd.com/comics/new_nobel_prizes.png","height":413,"width":317,"month":"10","link":"","year":"2021","safe_title":"New Nobel Prizes","alt":"They've endowed a separate prize in Physiology or Medicine or Stopping Dr. Adams.","title":"New Nobel Prizes","day":"11"}
2 |
--------------------------------------------------------------------------------
/comics/2528.json:
--------------------------------------------------------------------------------
1 | {"id":2528,"img":"https://imgs.xkcd.com/comics/flag_map_sabotage.png","height":424,"width":529,"month":"10","link":"","year":"2021","safe_title":"Flag Map Sabotage","alt":"Delaware hopes to explore the western edge of areas marked with the Belgian flag, once the tornadoes die down.","title":"Flag Map Sabotage","day":"13"}
2 |
--------------------------------------------------------------------------------
/comics/2529.json:
--------------------------------------------------------------------------------
1 | {"id":2529,"img":"https://imgs.xkcd.com/comics/unsolved_math_problems.png","height":413,"width":708,"month":"10","link":"","year":"2021","safe_title":"Unsolved Math Problems","alt":"After decades of studying the curve and the procedure that generates it, the consensus explanation is \"it's just like that.\"","title":"Unsolved Math Problems","day":"15"}
2 |
--------------------------------------------------------------------------------
/comics/2530.json:
--------------------------------------------------------------------------------
1 | {"id":2530,"img":"https://imgs.xkcd.com/comics/clinical_trials.png","height":189,"width":286,"month":"10","link":"","year":"2021","safe_title":"Clinical Trials","alt":"We don't need to do a clinical trial of this change because the standard of care is to adopt new ideas without doing clinical trials.","title":"Clinical Trials","day":"18"}
2 |
--------------------------------------------------------------------------------
/comics/2531.json:
--------------------------------------------------------------------------------
1 | {"id":2531,"img":"https://imgs.xkcd.com/comics/dark_arts.png","height":368,"width":290,"month":"10","link":"","year":"2021","safe_title":"Dark Arts","alt":"You think, 'okay, THIS is an ideal use case for hardlinks!' but then 6 months later you're doing some extremely cursed Google search like 'javascript ext4' and wondering where things went wrong.","title":"Dark Arts","day":"20"}
2 |
--------------------------------------------------------------------------------
/comics/2532.json:
--------------------------------------------------------------------------------
1 | {"id":2532,"img":"https://imgs.xkcd.com/comics/censored_vaccine_card.png","height":476,"width":486,"month":"10","link":"","year":"2021","safe_title":"Censored Vaccine Card","alt":"CVS's pharmacies are fine, but I much prefer their [censored]s.","title":"Censored Vaccine Card","day":"22"}
2 |
--------------------------------------------------------------------------------
/comics/2533.json:
--------------------------------------------------------------------------------
1 | {"id":2533,"img":"https://imgs.xkcd.com/comics/slope_hypothesis_testing.png","height":242,"width":740,"month":"10","link":"","year":"2021","safe_title":"Slope Hypothesis Testing","alt":"\"What? I can't hear--\" \"What? I said, are you sure--\" \"CAN YOU PLEASE SPEAK--\"","title":"Slope Hypothesis Testing","day":"25"}
2 |
--------------------------------------------------------------------------------
/comics/2534.json:
--------------------------------------------------------------------------------
1 | {"id":2534,"img":"https://imgs.xkcd.com/comics/retractable_rocket.png","height":276,"width":740,"month":"10","link":"","year":"2021","safe_title":"Retractable Rocket","alt":"Hard to believe that for so many years once they were fully extended we just let them tip over.","title":"Retractable Rocket","day":"27"}
2 |
--------------------------------------------------------------------------------
/comics/2535.json:
--------------------------------------------------------------------------------
1 | {"id":2535,"img":"https://imgs.xkcd.com/comics/common_cold_viruses.png","height":282,"width":740,"month":"10","link":"","year":"2021","safe_title":"Common Cold Viruses","alt":"\"It's not an influenza, but the onset has notes of the '09 H1N1 strain.\" \"Ah yes, that was a good year for H1N1.\"","title":"Common Cold Viruses","day":"29"}
2 |
--------------------------------------------------------------------------------
/comics/2536.json:
--------------------------------------------------------------------------------
1 | {"id":2536,"img":"https://imgs.xkcd.com/comics/wirecutter.png","height":425,"width":400,"month":"11","link":"","year":"2021","safe_title":"Wirecutter","alt":"This was always going to be a controversial Wirecutter post, but what really got them in trouble were their 'budget' and 'upgrade' picks.","title":"Wirecutter","day":"1"}
2 |
--------------------------------------------------------------------------------
/comics/2537.json:
--------------------------------------------------------------------------------
1 | {"id":2537,"img":"https://imgs.xkcd.com/comics/painbow_award.png","height":324,"width":380,"month":"11","link":"","year":"2021","safe_title":"Painbow Award","alt":"This year, our team took home the dark blue ribbon, better than the midnight blue we got last year but still short of the winning navy blue.","title":"Painbow Award","day":"3"}
2 |
--------------------------------------------------------------------------------
/comics/2538.json:
--------------------------------------------------------------------------------
1 | {"id":2538,"img":"https://imgs.xkcd.com/comics/snack.png","height":354,"width":227,"month":"11","link":"","year":"2021","safe_title":"Snack","alt":"Although grad students, suddenly reminded that food exists, tend to just grab and devour both without further discussion.","title":"Snack","day":"5"}
2 |
--------------------------------------------------------------------------------
/comics/2539.json:
--------------------------------------------------------------------------------
1 | {"id":2539,"img":"https://imgs.xkcd.com/comics/flinch.png","height":272,"width":666,"month":"11","link":"","year":"2021","safe_title":"Flinch","alt":"Premed: \"Does this count for a physics credit? Can we shorten the string so I can get it done faster? And can we do one where it hits me in the face? I gotta do a thing for first aid training right after.\"","title":"Flinch","day":"8"}
2 |
--------------------------------------------------------------------------------
/comics/2540.json:
--------------------------------------------------------------------------------
1 | {"id":2540,"img":"https://imgs.xkcd.com/comics/ttsltswbd.png","height":400,"width":261,"month":"11","link":"","year":"2021","safe_title":"TTSLTSWBD","alt":"Tomorrow's sessions will be entirely devoted to sewing machine rotary hooks.","title":"TTSLTSWBD","day":"10"}
2 |
--------------------------------------------------------------------------------
/comics/2541.json:
--------------------------------------------------------------------------------
1 | {"id":2541,"img":"https://imgs.xkcd.com/comics/occam.png","height":247,"width":158,"month":"11","link":"","year":"2021","safe_title":"Occam","alt":"Oh no, Murphy just picked up the razor.","title":"Occam","day":"12"}
2 |
--------------------------------------------------------------------------------
/comics/2542.json:
--------------------------------------------------------------------------------
1 | {"id":2542,"img":"https://imgs.xkcd.com/comics/daylight_calendar.png","height":361,"width":283,"month":"11","link":"","year":"2021","safe_title":"Daylight Calendar","alt":"Could be worse. In some towns north of here, it's already December, and the 21st will last for nearly a week.","title":"Daylight Calendar","day":"15"}
2 |
--------------------------------------------------------------------------------
/comics/2543.json:
--------------------------------------------------------------------------------
1 | {"id":2543,"img":"https://imgs.xkcd.com/comics/never_told_anyone.png","height":206,"width":366,"month":"11","link":"","year":"2021","safe_title":"Never Told Anyone","alt":"Even if you said you were an employee of the website, if you asked for my password, I'd tell you.","title":"Never Told Anyone","day":"17"}
2 |
--------------------------------------------------------------------------------
/comics/2544.json:
--------------------------------------------------------------------------------
1 | {"id":2544,"img":"https://imgs.xkcd.com/comics/heart_stopping_texts.png","height":306,"width":419,"month":"11","link":"","year":"2021","safe_title":"Heart-Stopping Texts","alt":"Was this your car? [looping 'image loading' animation]","title":"Heart-Stopping Texts","day":"19"}
2 |
--------------------------------------------------------------------------------
/comics/2545.json:
--------------------------------------------------------------------------------
1 | {"id":2545,"img":"https://imgs.xkcd.com/comics/bayes_theorem.png","height":382,"width":270,"month":"11","link":"","year":"2021","safe_title":"Bayes' Theorem","alt":"P((B|A)|(A|B)) represents the probability that you'll mix up the order of the terms when using Bayesian notation.","title":"Bayes' Theorem","day":"22"}
2 |
--------------------------------------------------------------------------------
/comics/2546.json:
--------------------------------------------------------------------------------
1 | {"id":2546,"img":"https://imgs.xkcd.com/comics/fiction_vs_nonfiction.png","height":472,"width":490,"month":"11","link":"","year":"2021","safe_title":"Fiction vs Nonfiction","alt":"The real challenge is how to file Boba Fett's biography of Doris Kearns Goodwin.","title":"Fiction vs Nonfiction","day":"24"}
2 |
--------------------------------------------------------------------------------
/comics/2547.json:
--------------------------------------------------------------------------------
1 | {"id":2547,"img":"https://imgs.xkcd.com/comics/siren.png","height":438,"width":302,"month":"11","link":"","year":"2021","safe_title":"Siren","alt":"Directions from CITY OF TROY to ITHACA / Total time: 10y 54d 14h 25m / Warning: Route crosses an international border / route includes capture by the goddess Calypso / route includes a ferry","title":"Siren","day":"26"}
2 |
--------------------------------------------------------------------------------
/comics/2548.json:
--------------------------------------------------------------------------------
1 | {"id":2548,"img":"https://imgs.xkcd.com/comics/awful_people.png","height":306,"width":740,"month":"11","link":"","year":"2021","safe_title":"Awful People","alt":"Hm, this burger place has a couple of good reviews, but LakeSlayer7 says he got food poisoning there and everyone should try this other place down by the lake instead.","title":"Awful People","day":"29"}
2 |
--------------------------------------------------------------------------------
/comics/2549.json:
--------------------------------------------------------------------------------
1 | {"id":2549,"img":"https://imgs.xkcd.com/comics/edge_cake.png","height":296,"width":585,"month":"12","link":"","year":"2021","safe_title":"Edge Cake","alt":"Every time IERS adds or removes a leap second, they send me a birthday cake out of superstition.","title":"Edge Cake","day":"1"}
2 |
--------------------------------------------------------------------------------
/comics/2550.json:
--------------------------------------------------------------------------------
1 | {"id":2550,"img":"https://imgs.xkcd.com/comics/webb.png","height":272,"width":283,"month":"12","link":"","year":"2021","safe_title":"Webb","alt":"Each one contains a chocolate shaped like a famous spacecraft and, for the later numbers, a pamphlet on managing anxiety.","title":"Webb","day":"3"}
2 |
--------------------------------------------------------------------------------
/comics/2551.json:
--------------------------------------------------------------------------------
1 | {"id":2551,"img":"https://imgs.xkcd.com/comics/debunking.png","height":362,"width":394,"month":"12","link":"","year":"2021","safe_title":"Debunking","alt":"Mark Zuckerberg has only neutral feelings toward Peppa Pig, who he understands is a fictional character, and he blames the coronavirus pandemic on other factors.","title":"Debunking","day":"6"}
2 |
--------------------------------------------------------------------------------
/comics/2552.json:
--------------------------------------------------------------------------------
1 | {"id":2552,"img":"https://imgs.xkcd.com/comics/the_last_molecule.png","height":451,"width":339,"month":"12","link":"","year":"2021","safe_title":"The Last Molecule","alt":"Biology is really struggling; they're barely at 93% and they keep finding more ants.","title":"The Last Molecule","day":"8"}
2 |
--------------------------------------------------------------------------------
/comics/2553.json:
--------------------------------------------------------------------------------
1 | {"id":2553,"img":"https://imgs.xkcd.com/comics/incident_report.png","height":523,"width":429,"month":"12","link":"","year":"2021","safe_title":"Incident Report","alt":"Increasing-precision timestamps are the Jaws theme of incident reports.","title":"Incident Report","day":"10"}
2 |
--------------------------------------------------------------------------------
/comics/2554.json:
--------------------------------------------------------------------------------
1 | {"id":2554,"img":"https://imgs.xkcd.com/comics/gift_exchange.png","height":342,"width":226,"month":"12","link":"","year":"2021","safe_title":"Gift Exchange","alt":"In addition to having all their budgets in a spreadsheet with consistent formatting, they just love expressing preferences on a well-calibrated numerical scale.","title":"Gift Exchange","day":"13"}
2 |
--------------------------------------------------------------------------------
/comics/2555.json:
--------------------------------------------------------------------------------
1 | {"id":2555,"img":"https://imgs.xkcd.com/comics/notifications.png","height":228,"width":600,"month":"12","link":"","year":"2021","safe_title":"Notifications","alt":"It's 10:34 PM for this user. They really need to get going, they have a thing early tomorrow. Are you sure you want to notify?","title":"Notifications","day":"15"}
2 |
--------------------------------------------------------------------------------
/comics/2556.json:
--------------------------------------------------------------------------------
1 | {"id":2556,"img":"https://imgs.xkcd.com/comics/turing_complete.png","height":359,"width":206,"month":"12","link":"","year":"2021","safe_title":"Turing Complete","alt":"Thanks to the ForcedEntry exploit, your company's entire tech stack can now be hosted out of a PDF you texted to someone.","title":"Turing Complete","day":"17"}
2 |
--------------------------------------------------------------------------------
/comics/2557.json:
--------------------------------------------------------------------------------
1 | {"id":2557,"img":"https://imgs.xkcd.com/comics/immunity.png","height":225,"width":458,"month":"12","link":"","year":"2021","safe_title":"Immunity","alt":"This plan may sound appealing to people who know a little about the immune system, but the drawbacks are clear to people who know a lot about the immune system and also to people who don't know anything about it.","title":"Immunity","day":"20"}
2 |
--------------------------------------------------------------------------------
/comics/2558.json:
--------------------------------------------------------------------------------
1 | {"id":2558,"img":"https://imgs.xkcd.com/comics/rapid_test_results.png","height":382,"width":412,"month":"12","link":"","year":"2021","safe_title":"Rapid Test Results","alt":"A solid red area with two white lines means that you have been infected with the anti-coronavirus, COVID+19, which will cure anyone you have close contact with.","title":"Rapid Test Results","day":"22"}
2 |
--------------------------------------------------------------------------------
/comics/2559.json:
--------------------------------------------------------------------------------
1 | {"id":2559,"img":"https://imgs.xkcd.com/comics/december_25th_launch.png","height":201,"width":553,"month":"12","link":"","year":"2021","safe_title":"December 25th Launch","alt":"Update: Santa has been destroyed by the range safety officer.","title":"December 25th Launch","day":"24"}
2 |
--------------------------------------------------------------------------------
/comics/2560.json:
--------------------------------------------------------------------------------
1 | {"id":2560,"img":"https://imgs.xkcd.com/comics/confounding_variables.png","height":278,"width":644,"month":"12","link":"","year":"2021","safe_title":"Confounding Variables","alt":"You can find a perfect correlation if you just control for the residual.","title":"Confounding Variables","day":"27"}
2 |
--------------------------------------------------------------------------------
/comics/2561.json:
--------------------------------------------------------------------------------
1 | {"id":2561,"img":"https://imgs.xkcd.com/comics/moonfall.png","height":242,"width":594,"month":"12","link":"","year":"2021","safe_title":"Moonfall","alt":"Novel ideas and cool explosions are both good, but what I really want from a movie is novel ideas ABOUT cool explosions.","title":"Moonfall","day":"29"}
2 |
--------------------------------------------------------------------------------
/comics/2562.json:
--------------------------------------------------------------------------------
1 | {"id":2562,"img":"https://imgs.xkcd.com/comics/formatting_meeting.png","height":222,"width":356,"month":"12","link":"","year":"2021","safe_title":"Formatting Meeting","alt":"Neither group uses iso 8601 because the big-endian enthusiasts were all at the meeting 20 years ago.","title":"Formatting Meeting","day":"31"}
2 |
--------------------------------------------------------------------------------
/comics/2563.json:
--------------------------------------------------------------------------------
1 | {"id":2563,"img":"https://imgs.xkcd.com/comics/throat_and_nasal_passages.png","height":317,"width":418,"month":"1","link":"","year":"2022","safe_title":"Throat and Nasal Passages","alt":"I always felt like what the 'you are now aware of your tongue' thing needed in order to be truly enjoyable was an element of mortal peril.","title":"Throat and Nasal Passages","day":"3"}
2 |
--------------------------------------------------------------------------------
/comics/2564.json:
--------------------------------------------------------------------------------
1 | {"id":2564,"img":"https://imgs.xkcd.com/comics/sunshield.png","height":277,"width":553,"month":"1","link":"","year":"2022","safe_title":"Sunshield","alt":"RIP the surface of Mars","title":"Sunshield","day":"5"}
2 |
--------------------------------------------------------------------------------
/comics/2565.json:
--------------------------------------------------------------------------------
1 | {"id":2565,"img":"https://imgs.xkcd.com/comics/latency.png","height":250,"width":361,"month":"1","link":"","year":"2022","safe_title":"Latency","alt":"Each SCAPDFATIAT point increases the chance that the process will involve the phrase 'by the next business day.'","title":"Latency","day":"7"}
2 |
--------------------------------------------------------------------------------
/comics/2566.json:
--------------------------------------------------------------------------------
1 | {"id":2566,"img":"https://imgs.xkcd.com/comics/decorative_constants.png","height":287,"width":289,"month":"1","link":"","year":"2022","safe_title":"Decorative Constants","alt":"Arguably, the '1/2' in the drag equation is purely decorative, since drag coefficients are already unitless and could just as easily be half as big. Some derivations give more justification for the extra 1/2 than others, but one textbook just calls it 'a traditional tribute to Euler and Bernoulli.'","title":"Decorative Constants","day":"10"}
2 |
--------------------------------------------------------------------------------
/comics/2567.json:
--------------------------------------------------------------------------------
1 | {"id":2567,"img":"https://imgs.xkcd.com/comics/language_development.png","height":298,"width":262,"month":"1","link":"","year":"2022","safe_title":"Language Development","alt":"The worst is the Terrible Twos, when they're always throwing things and shrieking, \"forsooth, to bed thou shalt not take me, cur!\"","title":"Language Development","day":"12"}
2 |
--------------------------------------------------------------------------------
/comics/2568.json:
--------------------------------------------------------------------------------
1 | {"id":2568,"img":"https://imgs.xkcd.com/comics/spinthariscope.png","height":401,"width":289,"month":"1","link":"","year":"2022","safe_title":"Spinthariscope","alt":"Other high scorers are melt-in-your-hand aluminum-destroying gallium and tritium-powered glowsticks. Lawn darts are toward the other end.","title":"Spinthariscope","day":"14"}
2 |
--------------------------------------------------------------------------------
/comics/2569.json:
--------------------------------------------------------------------------------
1 | {"id":2569,"img":"https://imgs.xkcd.com/comics/hypothesis_generation.png","height":258,"width":449,"month":"1","link":"","year":"2022","safe_title":"Hypothesis Generation","alt":"Frazzled scientists are requesting that everyone please stop generating hypotheses for a little bit while they work through the backlog.","title":"Hypothesis Generation","day":"17"}
2 |
--------------------------------------------------------------------------------
/comics/2570.json:
--------------------------------------------------------------------------------
1 | {"id":2570,"img":"https://imgs.xkcd.com/comics/captain_picard_tea_order.png","height":746,"width":481,"month":"1","link":"","year":"2022","safe_title":"Captain Picard Tea Order","alt":"We can ask the Earl for his order once he's fully extruded from the dispenser.","title":"Captain Picard Tea Order","day":"19"}
2 |
--------------------------------------------------------------------------------
/comics/2571.json:
--------------------------------------------------------------------------------
1 | {"id":2571,"img":"https://imgs.xkcd.com/comics/hydraulic_analogy.png","height":468,"width":444,"month":"1","link":"","year":"2022","safe_title":"Hydraulic Analogy","alt":"Current (water) running through the water (wires) causes it to boil, increasing the pressure (voltage), but resisting (impeding) the flow of hydroelectricity (water currents). This is the basis for Ohm's law.","title":"Hydraulic Analogy","day":"21"}
2 |
--------------------------------------------------------------------------------
/comics/2572.json:
--------------------------------------------------------------------------------
1 | {"id":2572,"img":"https://imgs.xkcd.com/comics/alien_observers.png","height":386,"width":448,"month":"1","link":"","year":"2022","safe_title":"Alien Observers","alt":"ALERT: Human 910-25J-1Q38 has created a Youtube channel. Increase erratic jerkiness of flying by 30% until safely out of range.","title":"Alien Observers","day":"24"}
2 |
--------------------------------------------------------------------------------
/comics/2573.json:
--------------------------------------------------------------------------------
1 | {"id":2573,"img":"https://imgs.xkcd.com/comics/alien_mission.png","height":228,"width":697,"month":"1","link":"","year":"2022","safe_title":"Alien Mission","alt":"Fine, we can go search the Himalayas for the Yeti ONE more time, but keep a safe altitude over the Pacific and PLEASE watch where you're going. We can't afford another Amelia Earhart incident.","title":"Alien Mission","day":"26"}
2 |
--------------------------------------------------------------------------------
/comics/2574.json:
--------------------------------------------------------------------------------
1 | {"id":2574,"img":"https://imgs.xkcd.com/comics/autoresponder.png","height":311,"width":382,"month":"1","link":"","year":"2022","safe_title":"Autoresponder","alt":"I ADMIRE HOW YOU SET BOUNDARIES AND I HOPE YOUR COLLEAGUES RESPECT THEM! PLEASE SPARE MY LIFE!","title":"Autoresponder","day":"28"}
2 |
--------------------------------------------------------------------------------
/comics/2575.json:
--------------------------------------------------------------------------------
1 | {"id":2575,"img":"https://imgs.xkcd.com/comics/what_if_2.png","height":833,"width":457,"month":"1","link":"https://xkcd.com/what-if-2/","year":"2022","safe_title":"What If? 2","alt":"CLARIFICATION: By 9/13, I mean September 13th, not the 9th day of Jancember, the cursed 13th month that exists between December and January in the transdimensional temporal plane.","title":"What If? 2","day":"31"}
2 |
--------------------------------------------------------------------------------
/comics/2576.json:
--------------------------------------------------------------------------------
1 | {"id":2576,"img":"https://imgs.xkcd.com/comics/control_group.png","height":306,"width":239,"month":"2","link":"","year":"2022","safe_title":"Control Group","alt":"Placeble 228 x/6n⬜⬜⬜⬜⬜n⬜⬜⬜⬜⬜n⬜⬜⬜⬜⬜n⬜⬜⬜⬜⬜n⬜⬜⬜⬜⬜n⬜⬜⬜⬜⬜","title":"Control Group","day":"2"}
2 |
--------------------------------------------------------------------------------
/comics/2577.json:
--------------------------------------------------------------------------------
1 | {"id":2577,"img":"https://imgs.xkcd.com/comics/sea_chase.png","height":180,"width":740,"month":"2","link":"","year":"2022","safe_title":"Sea Chase","alt":"There are two rules on this ship: Never gaze back into the projection abyss, and never touch the red button labeled DYMAXION.","title":"Sea Chase","day":"4"}
2 |
--------------------------------------------------------------------------------
/comics/2578.json:
--------------------------------------------------------------------------------
1 | {"id":2578,"img":"https://imgs.xkcd.com/comics/sword_pull.png","height":418,"width":361,"month":"2","link":"","year":"2022","safe_title":"Sword Pull","alt":"Merlin really shouldn't leave his dirt bike lying around.","title":"Sword Pull","day":"7"}
2 |
--------------------------------------------------------------------------------
/comics/2579.json:
--------------------------------------------------------------------------------
1 | {"id":2579,"img":"https://imgs.xkcd.com/comics/tractor_beam.png","height":402,"width":516,"month":"2","link":"","year":"2022","safe_title":"Tractor Beam","alt":"Did you base the saucer shape on pop culture depictions of aliens, or was that stuff based on your ships? Does the rotational symmetry help with ... hey, where are you going?","title":"Tractor Beam","day":"9"}
2 |
--------------------------------------------------------------------------------
/comics/2580.json:
--------------------------------------------------------------------------------
1 | {"id":2580,"img":"https://imgs.xkcd.com/comics/rest_and_fluids.png","height":361,"width":274,"month":"2","link":"","year":"2022","safe_title":"Rest and Fluids","alt":"Remember not to take it easy. Put a hot washcloth on your forehead, remain standing, and breathe dry air while taking lots of histamines. You need to give your body a chance to get sick again.","title":"Rest and Fluids","day":"11"}
2 |
--------------------------------------------------------------------------------
/comics/2581.json:
--------------------------------------------------------------------------------
1 | {"id":2581,"img":"https://imgs.xkcd.com/comics/health_stats.png","height":275,"width":633,"month":"2","link":"","year":"2022","safe_title":"Health Stats","alt":"You will live on forever in our hearts, pushing a little extra blood toward our left hands now and then to give them a squeeze.","title":"Health Stats","day":"14"}
2 |
--------------------------------------------------------------------------------
/comics/2582.json:
--------------------------------------------------------------------------------
1 | {"id":2582,"img":"https://imgs.xkcd.com/comics/data_trap.png","height":275,"width":275,"month":"2","link":"","year":"2022","safe_title":"Data Trap","alt":"It's important to make sure your analysis destroys as much information as it produces.","title":"Data Trap","day":"16"}
2 |
--------------------------------------------------------------------------------
/comics/2583.json:
--------------------------------------------------------------------------------
1 | {"id":2583,"img":"https://imgs.xkcd.com/comics/chorded_keyboard.png","height":244,"width":553,"month":"2","link":"","year":"2022","safe_title":"Chorded Keyboard","alt":"And even though it all went wrong / I'll stand before the lord of song / with nothing on my tongue but 'I don't understand, I swear I backed up my keyboard config before messing with it'","title":"Chorded Keyboard","day":"18"}
2 |
--------------------------------------------------------------------------------
/comics/2584.json:
--------------------------------------------------------------------------------
1 | {"id":2584,"img":"https://imgs.xkcd.com/comics/headline_words.png","height":463,"width":338,"month":"2","link":"","year":"2022","safe_title":"Headline Words","alt":"Roundly-condemned headlinese initiative shuttered indefinitely.","title":"Headline Words","day":"21"}
2 |
--------------------------------------------------------------------------------
/comics/2585.json:
--------------------------------------------------------------------------------
1 | {"id":2585,"img":"https://imgs.xkcd.com/comics/rounding.png","height":392,"width":337,"month":"2","link":"","year":"2022","safe_title":"Rounding","alt":"I've developed a novel propulsion system powered by loss of precision in unit conversion.","title":"Rounding","day":"23"}
2 |
--------------------------------------------------------------------------------
/comics/2586.json:
--------------------------------------------------------------------------------
1 | {"id":2586,"img":"https://imgs.xkcd.com/comics/greek_letters.png","height":849,"width":445,"month":"2","link":"","year":"2022","safe_title":"Greek Letters","alt":"If you ever see someone using a capital xi in an equation, just observe them quietly to learn as much as you can before they return to their home planet.","title":"Greek Letters","day":"25"}
2 |
--------------------------------------------------------------------------------
/comics/2587.json:
--------------------------------------------------------------------------------
1 | {"id":2587,"img":"https://imgs.xkcd.com/comics/for_the_sake_of_simplicity.png","height":497,"width":322,"month":"2","link":"","year":"2022","safe_title":"For the Sake of Simplicity","alt":"For the sake of simplicity, gardeners are assumed to move through Euclidean space--neglecting the distortion from general relativity--unless they are in the vicinity of a Schwarzschild Orchid.","title":"For the Sake of Simplicity","day":"28"}
2 |
--------------------------------------------------------------------------------
/components/Footer.js:
--------------------------------------------------------------------------------
1 | export function Footer() {
2 | return
7 | }
--------------------------------------------------------------------------------
/components/Header.js:
--------------------------------------------------------------------------------
1 | import { useState, useRef } from 'react'
2 | import Link from 'next/link'
3 | import { useRouter } from 'next/router'
4 |
5 | export function Header() {
6 | const [results, setResults] = useState([])
7 | const searchRef = useRef()
8 | const {locale, locales} = useRouter()
9 |
10 | const getValue = () => searchRef.current?.value
11 |
12 | const handleChange = () => {
13 | const q = getValue()
14 |
15 | if (!q) return
16 |
17 | fetch(`/api/search?q=${q}`)
18 | .then(res => res.json())
19 | .then(searchResults => {
20 | setResults(searchResults)
21 | })
22 | }
23 |
24 | const restOfLocales = locales.filter(l => l !== locale)
25 |
26 | return (
27 |
29 |
30 |
31 | nextxkcd
32 |
33 |
34 |
35 |
36 |
81 |
{alt}
29 | 30 |