Skip to content

rutgertuit/DML

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

106 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AI-ftershow

About

AI-ftershow is an interactive, single-page web application that demonstrates practical AI workflows using Google's Gemini ecosystem. Built as a tactical guide for AI implementation, it showcases "Vibe Coding" techniques—fast, conversational AI development for rapid prototyping and creative exploration.

Purpose & Audience

This repository serves as both a functional demonstration and educational resource for:

  • AI practitioners looking to implement structured AI workflows
  • Developers interested in building AI-powered React applications
  • Product managers exploring practical AI integration patterns
  • Anyone wanting to master Vibe Coding with Google's AI tools

Key Features

Interactive Prompt Improver - Multi-modal AI prompt refinement (text/image/video) using Gemini 2.5 Flash API
Hero Gem Wizard - 4-step workflow for creating custom AI experts (Gems) with research automation
NotebookLM Integration Guide - Document-grounded AI workflows with multi-stakeholder perspectives
Vibe Coding Demonstration - Real-world example of how this site was built
Dual Language Support - Seamless English/Dutch localization via i18next
Cyberpunk Design System - Custom Tailwind theme with neon aesthetics
Production-Ready Architecture - TypeScript, React 19, and modern tooling

Current Status

  • Status: ✅ Live and Functional
  • Last Updated: November 6, 2025
  • Deployment: Firebase Hosting with Cloud Functions
  • Environment: Production with server-side API key management
  • Live URL: https://rutger-dml.web.app
  • Security: API key secured in Firebase Secrets Manager (not exposed to client)
  • Feedback: Temporary user feedback collection via Firestore

Tech Stack

  • Framework: React 19.1.1 with TypeScript (strict mode)
  • Build Tool: Vite 7.1.12
  • Styling: Tailwind CSS v4.1.16 (custom cyberpunk theme)
  • Internationalization: i18next with react-i18next (EN/NL support)
  • AI Integration: Google Gemini 2.5 Flash API via Cloud Functions
  • Database: Firebase Firestore (feedback collection)
  • Linting: ESLint 9.36.0 with TypeScript and React plugins

Getting Started

Prerequisites

  • Node.js 20.x or later
  • npm (comes with Node.js)
  • A Google Gemini API key (for AI features)

Installation & Running

  1. Clone the repository:

    git clone https://github.com/rutgertuit/DML.git
    cd DML
  2. Install dependencies:

    npm install
  3. Set up environment variables: Create a .env file in the project root:

    # Copy the example file
    cp .env.example .env
    
    # Add your Gemini API key
    VITE_GEMINI_API_KEY=your_api_key_here

    Get your API key from Google AI Studio

  4. Start development server:

    npm run dev

    Visit http://localhost:5173/DML/ to view the application

  5. Build for production:

    npm run build

Other Useful Commands

  • Lint code:

    npm run lint
  • Preview production build:

    npm run preview
  • Deploy to Firebase:

    firebase deploy

Core Components

🤖 Prompt Improver

Interactive AI-powered tool that refines prompts through guided dialogue using Gemini 2.5 Flash API. Features:

  • Multi-modal support (text, image, and video prompts)
  • Real-time chat interface with conversational refinement
  • Automatic prompt extraction and formatting
  • One-click testing across multiple LLM platforms
  • Modality-specific analysis criteria

💎 Hero Gem Wizard

Four-step workflow for creating custom AI experts (Gems):

  1. Select Blueprint - Choose from 6 pre-configured expert types
  2. Design with AI - Conversational assistant helps define your Gem's mission and documents
  3. Generate Research Prompts - Automated creation of research document prompts
  4. Build Your Gem - Complete system instruction with upload guide

📚 NotebookLM Integration

Comprehensive guide demonstrating document-grounded AI workflows:

  • Multi-stakeholder output generation (CFO, CMO, CEO, CTO perspectives)
  • Pain point identification and solutions
  • 7 different output format examples from a single data source

🎬 Vibe Coding

Focused section explaining fast, conversational AI development:

  • What makes Vibe Coding great (Speed, Flexibility, Creativity)
  • Integrated tools showcase (Gemini, AI Studio, Google Stitch, Gemini CLI, GitHub)
  • Live demo video showcasing real-world example

🔧 How It Was Made

Behind-the-scenes 6-step workflow showing how this site was built using Vibe Coding:

  1. Blueprint (NotebookLM for research)
  2. Structure (AI Studio for scaffolding)
  3. Development (Gemini + Stitch for coding)
  4. Integration (Gemini CLI for testing)
  5. Deployment (Firebase Hosting + Cloud Functions)
  6. Polishing (Custom Gem for Dutch communication)

📊 Feedback System (Temporary)

User feedback collection system for testing phase:

  • 7-question structured feedback form
  • Firestore database integration
  • Email collection (optional)
  • Export guide for data analysis

🛠️ Google AI Toolkit

Curated collection of 6 Google AI tools with direct links:

  • Gemini in Google Workspace
  • NotebookLM
  • Google Stitch
  • Google Vids
  • Gemini Enterprise
  • Gemini CLI

Project Structure

DML/
├── functions/            # Firebase Cloud Functions
│   ├── src/
│   │   └── index.ts     # API proxy for Gemini
│   └── package.json     # Functions dependencies
├── public/              # Static assets
│   └── locales/         # Translation files
│       ├── en/translation.json  # English translations
│       └── nl/translation.json  # Dutch translations
├── src/
│   ├── components/      # React components
│   │   ├── HeroGemWizard/# 4-step wizard components
│   │   │   ├── HeroGemWizard.tsx        # Main wizard container
│   │   │   ├── BlueprintSelector.tsx    # Step 1: Choose expert type
│   │   │   ├── GemDesignAssistant.tsx   # Step 2: AI-assisted design
│   │   │   ├── SourceMaterialGenerator.tsx # Step 3: Research prompts
│   │   │   ├── FinalGemInstruction.tsx  # Step 4: Final output
│   │   │   └── CopyButton.tsx           # Reusable copy utility
│   │   ├── Header.tsx    # Navigation with language switcher
│   │   ├── HeroSection.tsx# Landing section
│   │   ├── PresentationContext.tsx# Introduction section
│   │   ├── TheVibe.tsx  # "The Vibe" explanation
│   │   ├── BeforeAfter.tsx# Tabbed prompt examples
│   │   ├── PromptImprover.tsx# Interactive AI chat tool
│   │   ├── NotebookLM.tsx# Document-grounded AI guide
│   │   ├── HowVibeCodingWorks.tsx# Vibe Coding section
│   │   ├── Toolkit.tsx  # Google AI tools showcase
│   │   ├── FeedbackForm.tsx# User feedback collection
│   │   ├── CookieConsent.tsx# GDPR compliance
│   │   ├── ChatBubble.tsx# Chat message component
│   │   ├── LoadingIndicator.tsx# Loading state component
│   │   └── Footer.tsx   # Contact and disclaimer
│   ├── services/        # API integration layer
│   │   └── aiStudioService.ts# Gemini API client
│   ├── firebase.ts      # Firebase initialization
│   ├── App.tsx          # Main application with section layout
│   ├── i18n.ts          # Internationalization config
│   ├── main.tsx         # React entry point
│   └── index.css        # Global styles + Tailwind
├── dist/                # Built application (Firebase Hosting)
├── .env.example         # Environment variables template
├── firebase.json        # Firebase configuration
├── firestore.rules      # Firestore security rules
├── firestore.indexes.json# Firestore indexes
├── index.html           # HTML entry point
├── package.json         # Dependencies and scripts
├── tailwind.config.js   # Custom cyberpunk theme
├── vite.config.ts       # Build configuration
├── README.md           # This file
├── GEMINI.md           # AI assistant guidelines
├── FIREBASE_SETUP.md   # Firebase deployment guide
├── FEEDBACK_GUIDE.md   # Feedback data export guide
└── SECURITY.md         # Security documentation

Contributing

When contributing to this project:

  • Follow TypeScript strict mode conventions (no any types)
  • Use Tailwind CSS utility classes with the cyberpunk theme
  • Maintain i18n support by wrapping user-facing text in t() calls
  • Centralize API calls in src/services/
  • Follow PascalCase for components, camelCase for hooks

🤖 For AI Assistants (Gemini)

Welcome! To provide effective help, you MUST follow these rules:

  1. Consult Context First: Before generating any code, you MUST read the Gemini.MD file in this repository. It contains the definitive project stack, architecture, deployment model, and coding standards.

  2. Adhere to Standards: All code you generate must follow the patterns defined in Gemini.MD, including:

    • TypeScript strict mode with explicit typing
    • Component structure (one .tsx file per section)
    • Tailwind CSS cyberpunk theme (colors: #00FFFF cyan, #D900FF purple)
    • i18n integration via react-i18next
    • API calls centralized in src/services/
    • PascalCase components, camelCase hooks
    • Semantic HTML with accessibility considerations
  3. Verify Before Suggesting: Cross-reference package.json for exact dependency versions and tsconfig.json for compiler settings before making recommendations.

  4. Preserve the User Experience: This is a working production site. Any changes must maintain functionality, responsive design, and the cyberpunk aesthetic.

  5. Test Your Suggestions: Ensure any code you generate is TypeScript-safe, ESLint-compliant, and follows React 19 best practices.

Key Files to Reference:

  • GEMINI.md - Complete project context and guidelines
  • package.json - Dependencies and scripts
  • tsconfig.json - TypeScript configuration
  • tailwind.config.js - Custom theme configuration
  • src/services/aiStudioService.ts - API integration pattern

License

[Specify license if applicable]

Support

For questions or issues, please open an issue in the GitHub repository.

About

No description, website, or topics provided.

Resources

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages