DEV Community

Cover image for April: The AI That Listens
Aniruddha Ghosh
Aniruddha Ghosh

Posted on

April: The AI That Listens

April Fools Challenge Submission ☕️🤡

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:

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...
Enter fullscreen mode Exit fullscreen mode

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)