This is a submission for the DEV April Fools Challenge (https://dev.to/challenges/aprilfools-2026)
What I Built
I built April, a chatbot that doesn’t chat.
April looks like a normal assistant: chat window, typing indicator, blinking eyes. You type. You wait. You try again. April never replies. She only watches and listens.
The joke is simple: we’ve been trained to expect instant answers from AI. April breaks that expectation by doing nothing at all, while still feeling alive through her eyes and subtle animations.
Demo
Demo video: https://youtu.be/-BfgkcFLy8s
April’s behavior:
- The eyes follow your cursor.
- When you type, the eyes track your typing.
- When you send a message, April appears to think… forever.
- No replies. Ever.
Code
Source code:
React + TypeScript + Vite
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- @vitejs/plugin-react uses Oxc
- @vitejs/plugin-react-swc uses SWC
React Compiler
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.
Expanding the ESLint configuration
If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...
// Remove tseslint.configs.recommended and replace with this
tseslint.configs.recommendedTypeChecked,
// Alternatively, use this for stricter rules
tseslint.configs.strictTypeChecked,
// Optionally, add this for stylistic rules
tseslint.configs.stylisticTypeChecked,
// Other configs...…How I Built It
I built April using Google Antigravity and vibe-coding my way through the UI.
- Frontend: HTML, CSS, JavaScript (generated and iterated using Antigravity)
- Animations: CSS + JavaScript for eye tracking, blinking, and typing animations
- Logic: Purely client-side behavior. April never sends a response.
- No backend and no external hosting. This runs locally.
I focused on interaction design rather than infrastructure. The goal was to make something that feels intelligent without actually being intelligent.
Prize Category
I’m submitting this for the Community Favorite category.
The idea isn’t technical complexity, but emotional reaction. People laugh, then get uncomfortable, then try again anyway. The joke only works when someone interacts with it.
April listens. Always.
Top comments (0)