An ephemeral, real-time public thought pool web application. Open it when you're bored, anonymously throw a short thought (max 200 characters) into the void, and watch it fade away.
No signups, no database, no logs, and no persistence. Thoughts reside only in server RAM, are capped at a maximum of 100 messages total, and automatically expire for all active participants after 2 minutes.
Read our Terms of Service, Privacy Policy, and License. Contributions are welcome; please see Contributing Guidelines.
/client— React + Vite frontend styled with minimalist, atmospheric dark-mode CSS./server— Express + Socket.IO Node.js server.
- Node.js (v18+) and npm installed.
- Navigate to the server folder:
cd server - Install dependencies:
npm install
- Create
.envfile (copied from.env.example):PORT=5000 CORS_ORIGIN=http://localhost:5173
- Start the development server (uses
nodemon):The API health endpoint is available atnpm run dev
http://localhost:5000/health.
- Navigate to the client folder:
cd ../client - Install dependencies:
npm install
- Create
.envfile (copied from.env.example):VITE_WS_URL=http://localhost:5000
- Start the frontend:
Open the browser at
npm run dev
http://localhost:5173.
- Build the production assets inside
/client:cd client npm run build - This generates a production-ready
/client/distdirectory. Set your hosting provider to build usingnpm run buildand publish thedistdirectory. - Configure the environment variable
VITE_WS_URLto point to your live backend domain (e.g.https://nerampokku-api.onrender.com).
- Set the root build command to build your backend if required, or simply start the node service by executing:
cd server && npm install && npm start
- Define the following environment variables in your server hosting settings:
PORT: Supplied automatically by Render/Railway (e.g.8080or10000).CORS_ORIGIN: The URL of your live frontend application (e.g.,https://nerampokku.vercel.apporhttps://nerampokku.netlify.app).
- Anonymous Identity: Generated client-side using adjective-noun combinations (e.g.,
quiet_fox,cosmic_pulse). Stored insessionStorageto persist across pages refreshes during the session. - RAM-Only Messages: Cleaned up via a server-side timer every second. When messages hit a lifetime of 120 seconds, they are swept, and deletion commands are broadcast to all socket connections.
- Visual Lifeline: Each card shows a thin active bar shrinking visually over 2 minutes, fading out of the UI cleanly 2 seconds before server removal.