Visual Genius is an application that helps facilitate communication between parents and children with autism spectrum disorders (ASD) through visual cards and structured conversations.
Important
This application was developed for proof-of-concept purposes. Please make sure to test and verify its features before using it.
- Teach mode: Uses visual cards inspired by Applied Behavior Analysis (ABA) and addresses problems of existing solutions. Examples of visual aid products on the market, These products can be quite costly: Bing Search Results, Amazon Search Result.
- Communication mode: Uses cards inspired by this paper: AACessTalk.
- Letterboard: Inspired by the book The Reason I Jump.
Start and manage conversations with your child using:
- 8 Predefined Topics: Daily routines, emotions, food, activities, school, bedtime, family, safety
- Custom Prompts: Create conversation starters for any situation
- Real-time State Management: Start, pause, resume, or stop conversations
- Quick Response Tracking: Yes/No/"I don't know" buttons
- Conversation Timeline: View complete interaction history
Simple, touch-friendly interface where children can:
- View available visual cards
- Select cards to communicate
- See immediate feedback
- All selections are logged for parent review
Create educational visual sequences:
- Generate step-by-step cards using AI
- Drag-and-drop to reorder teaching sequences
- Save card arrangements for future use
- Build reusable teaching libraries
Spell-based communication inspired by The Reason I Jump:
- Full alphabet grid for letter-by-letter communication
- Text-to-speech for constructed messages
- Ideal for children who can spell but struggle with verbal expression
- Lower cognitive load than card selection for some users
- Framework: Next.js 14+ (App Router)
- UI: Tailwind CSS
- State: Zustand
- Database: PostgreSQL (or Azure Database for PostgreSQL)
- ORM: Drizzle ORM
- AI Services:
- Azure OpenAI (card generation)
- Unsplash API (free image search for visual suggestions)
git clone <repository-url>
cd visual-geniusnpm installOption A: Web UI (Recommended)
- Start the development server:
npm run dev - Navigate to
/settingsin your browser - Configure all settings through the web interface
- Settings are stored in the database
Option B: Environment File
Create a .env.local file in the root directory:
# PostgreSQL Connection
POSTGRES_URL=postgres://user:password@hostname:5432/database
# Azure OpenAI
AZURE_OPENAI_ENDPOINT=https://<your-openai-name>.openai.azure.com/
AZURE_OPENAI_DEPLOYMENT_NAME=<gpt-deployment-name>
# Unsplash Image Search (Free)
# Get your free API key at: https://unsplash.com/developers
UNSPLASH_ACCESS_KEY=<your-unsplash-access-key>Note: Settings in the database override .env.local values.
The application will automatically create required tables on first run:
conversation_sessionvisual_cardutterance
npm run devThe application will be available at http://localhost:3001
-
Start a Conversation (
/parent)- Select a predefined topic or enter a custom prompt
- Click "Start Conversation"
- AI generates relevant visual cards with images
- Cards appear on the main board and child screen
- Click "->" button to hand over the conversation to a child
-
Response to a conversation facilitated by a parent
- View available cards from the active session
- Tap cards to select
- Click "->" button to hand over the conversation to a parent
-
Manage Conversation
- Pause: Temporarily halt the conversation
- Resume: Continue from where you paused
- Stop: End conversation and clear session
- Quick response buttons log child's answers
- Navigate to
/teach - Enter a teaching prompt (e.g., "How to brush teeth")
- Review generated cards
- Drag-and-drop to reorder steps
- Save arrangement for future lessons
The application is fully containerized and can be deployed to any cloud service or on-premises infrastructure.
Quick Start with Docker Compose:
# 1. Copy environment template
cp .env.example .env
# 2. Edit .env with your credentials
nano .env
# 3. Build and start services
# docker compose up --build -d β Only builds/starts the app, not postgres
docker compose --profile local-db up --build -d # β Builds/starts both postgres and app
# 4. Access the application
open http://localhost:3001Azure Resources Needed:
- Azure App Service (Linux, Node.js 18+) or Container Instances
- Azure OpenAI Service
- Azure Database for PostgreSQL Flexible Server
- Application Insights (optional, for monitoring)
External Services:
- Unsplash API (free image search)
- Provision Azure resources
- Configure App Service environment variables
- Enable Managed Identity for OpenAI access
- Configure PostgreSQL firewall rules
- Deploy code via GitHub Actions or Azure CLI
- API keys stored server-side only (environment variables)
- DefaultAzureCredential for Azure service authentication
- PostgreSQL connections over SSL
- Input validation on all API endpoints
- No sensitive data exposed to frontend
MIT
- Inspired by ABA (Applied Behavior Analysis) principles
- Research on visual supports for autism communication
- Azure AI services for accessibility
Note: The .old/ directory contains the original proof-of-concept implementation and is kept for reference only. All active development occurs in the src/ directory.
For detailed architecture documentation, see ARCHITECTURE.md





