Welcome to School Bud-E, your AI-powered educational assistant!
School Bud-E is an intelligent and empathetic learning assistant designed to revolutionize the educational experience. Developed by LAION in collaboration with the ELLIS Institute TΓΌbingen, Collabora, the TΓΌbingen AI Center and the German Research Center for Artificial Intelligence (DFKI), and Intel, School Bud-E focuses on empathy, natural interaction, and personalized learning. A working demo of the application is available at school.bud-e.ai.
- Real-time chat with streaming responses
- Voice input via Speech-to-Text (Whisper / Groq API)
- Text-to-Speech playback for assistant responses
- Multi-language support β English and German (internationalization)
- PDF upload and parsing β send PDFs to the assistant for context
- Image upload β share images with vision-capable models
- Experimental image generation β generate and edit images via AI models (see below)
- Persistent chat history β conversations saved to localStorage with images offloaded to IndexedDB
- Multi-chat management β create, switch, rename, export, and import chat sessions
- Character consistency β image generation supports character reference across turns
- Privacy-focused design β local-first, no mandatory cloud dependency
This branch includes experimental features for AI image generation and editing.
The frontend supports generating and editing images directly in the chat interface. Both users and the AI assistant can trigger image generation using simple commands.
| Alias | Model | Description |
|---|---|---|
nano-banana |
gemini-2.5-flash-image |
Fast Gemini image generation |
nano-banana-pro |
gemini-3-pro-image-preview |
Highest quality Gemini image generation |
flux-2-klein |
flux-2-klein-9b |
Fast FLUX.2 generation |
flux-2-pro |
flux-2-pro |
Balanced production quality |
flux-2-max |
flux-2-max |
Maximum quality |
dall-e-3 |
dall-e-3 |
OpenAI DALL-E 3 |
Generate an image:
{"imagegen": "A serene mountain landscape at sunset"}
Generate with a specific model:
{"imagegen": {"prompt": "A futuristic cityscape", "model": "nano-banana-pro", "aspectRatio": "16:9"}}
Edit the last image:
{"imageedit": "Make the sky purple and add stars"}
Hashtag format (user input):
#imagegen:nano-banana-pro:A detailed portrait of a cat wearing a hat
For the full image generation guide including all parameters, models, and troubleshooting, see image-generation-instructions.txt.
Images generated or uploaded in the chat are stored in IndexedDB (namespaced per chat session), preventing QuotaExceededError in localStorage. Conversations with images can be exported to JSON and re-imported with full image data intact.
- Frontend: Fresh framework (Preact-based, Deno runtime)
- Styling: Tailwind CSS
- Language Support: English and German (internationalization)
- AI Models:
- Speech-to-Text: Whisper Large V3 (via Groq API)
- LLM: GPT-4o or any OpenAI-compatible endpoint
- Image generation: Gemini Flash/Pro Image, FLUX.2 Klein/Pro/Max, Imagen 3/4, DALL-E 3
- Storage: localStorage + IndexedDB for chat and image persistence
school-bud-e-frontend/
βββ routes/
β βββ api/
β β βββ chat.ts # LLM streaming endpoint
β β βββ tts.ts # Text-to-Speech endpoint
β β βββ imagegen.ts # Image generation endpoint
β β βββ getClientId.ts # Client session ID
β β βββ debug.ts # Debug/health endpoint
β βββ index.tsx # Main page
β βββ about.tsx # About page
β βββ _app.tsx # App wrapper
βββ islands/
β βββ ChatIsland.tsx # Main chat island (entry point)
β βββ ChatIsland/
β β βββ hooks/ # State and persistence hooks
β β βββ services/ # API calls, streaming, image store
β β βββ utils/ # Trigger parsing, helpers
β βββ Header.tsx
β βββ Menu.tsx
βββ components/
β βββ ChatTemplate.tsx # Chat UI rendering
β βββ Settings.tsx # Settings panel
β βββ ImageUploadButton.tsx
β βββ PdfUploadButton.tsx
β βββ AudioUploadButton.tsx
β βββ ...
βββ internalization/ # i18n content (EN/DE)
βββ static/ # Static assets
βββ docker-compose/ # Docker deployment config
βββ image-generation-instructions.txt # Full image gen guide
-
Clone the repository:
git clone https://github.com/LAION-AI/school-bud-e-frontend.git cd school-bud-e-frontend git checkout experimental -
Set up environment variables:
cp .example.env .env # Edit .env and fill in your API keys and endpoints -
Run the development server:
deno task start
-
Open
http://localhost:8000in your browser.
Without Docker:
deno task build
deno task previewWith Docker:
git clone https://github.com/LAION-AI/school-bud-e-frontend.git
cd school-bud-e-frontend
cd docker-compose
nano .env # Adjust environment variables
docker-compose upThen open http://localhost:8000.
Key variables (set in .env):
| Variable | Description |
|---|---|
MIDDLEWARE_URL |
Base URL for the Admin Bud-E middleware |
OPENAI_API_KEY |
OpenAI-compatible API key for LLM |
GROQ_API_KEY |
Groq API key for Whisper STT |
TTS_API_URL |
Text-to-Speech endpoint |
See .example.env for the full list.
The frontend communicates with a separate middleware service (Admin Bud-E) that handles:
- LLM routing to multiple providers
- Image generation (Gemini, FLUX.2, Imagen, DALL-E)
- TTS and STT proxying
- Provider configuration and pricing
The middleware is a separate repository and is not included here.
/api/chatβ Streaming LLM chat endpoint/api/ttsβ Text-to-Speech conversion/api/imagegenβ Image generation (supports Gemini, FLUX.2, Imagen, DALL-E)/api/getClientIdβ Unique session ID generation/api/debugβ Health/debug information
We welcome contributions! Please join our Discord server or contact us at contact@laion.ai.
This is an experimental prototype application. It may produce inaccurate answers or generate content not suitable for all audiences. Use with caution and report issues via the issue tracker.
This project is licensed under the MIT License. See the LICENSE file for details.
Special thanks to LAION, ELLIS Institute TΓΌbingen, Collabora, the TΓΌbingen AI Center and the German Research Center for Artificial Intelligence (DFKI), and Intel for their contributions and support.
Built with for the future of education.
