AI Project Idea Generator App using Flutter (ONE main.dart) – Responsive & Futuristic

 Demo :


Click Video πŸ‘‡πŸ‘‡πŸ‘‡























⭐ FEATURES :

  • ✔ Single File Flutter App (main.dart only)

  • ✔ No Backend / No API

  • ✔ Fully Responsive (Mobile + Desktop)

  • ✔ Cyberpunk Hacker UI

  • ✔ Perfect for Final Year Students


Code :


import 'dart:ui';

import 'dart:math';


import 'package:flutter/material.dart';

import 'package:google_fonts/google_fonts.dart';


// ---------------------------------------------------------------------------

// MAIN ENTRY POINT

// ---------------------------------------------------------------------------

void main() {

  runApp(const MyApp());

}


// ---------------------------------------------------------------------------

// ROOT WIDGET

// ---------------------------------------------------------------------------

class MyApp extends StatelessWidget {

  const MyApp({super.key});


  @override

  Widget build(BuildContext context) {

    return MaterialApp(

      title: 'AI Project Generator',

      debugShowCheckedModeBanner: false,

      theme: ThemeData.dark().copyWith(

        scaffoldBackgroundColor: const Color(0xFF050505),

        primaryColor: const Color(0xFF00F0FF),

        colorScheme: const ColorScheme.dark(

          primary: Color(0xFF00F0FF),

          secondary: Color(0xFF7000FF),

          surface: Color(0xFF101015),

        ),

        textTheme: GoogleFonts.orbitronTextTheme(

          ThemeData.dark().textTheme,

        ),

        useMaterial3: true,

      ),

      home: const GeneratorScreen(),

    );

  }

}


// ---------------------------------------------------------------------------

// DATA MODELS

// ---------------------------------------------------------------------------

class ProjectIdea {

  final String title;

  final String description;

  final List<String> techStack;


  const ProjectIdea({

    required this.title,

    required this.description,

    required this.techStack,

  });

}


// ---------------------------------------------------------------------------

// HARDCODED DATABASE (AI-POWERED SIMULATION)

// ---------------------------------------------------------------------------

const Map<String, List<ProjectIdea>> projectDatabase = {

  'Flutter': [

    ProjectIdea(

      title: 'AR Furniture Visualizer',

      description: 'An augmented reality app allowing users to place virtual furniture in their real-world environment to test fit and style before buying.',

      techStack: ['Flutter', 'ARKit/ARCore', 'Firebase'],

    ),

    ProjectIdea(

      title: 'Crypto Portfolio AI',

      description: 'A real-time cryptocurrency tracker that uses on-device ML to predict short-term price trends based on social sentiment.',

      techStack: ['Flutter', 'TensorFlow Lite', 'Coingecko API'],

    ),

    ProjectIdea(

      title: 'EcoTrack Carbon Footprint',

      description: 'A gamified automated carbon footprint tracker that scans grocery receipts and travel history to estimate impact.',

      techStack: ['Flutter', 'OCR', 'Gamification'],

    ),

    ProjectIdea(

      title: 'Voice-Controlled Smart Hub',

      description: 'A dedicated tablet interface for smart homes that runs offline voice recognition to control lights and security.',

      techStack: ['Flutter', 'Porcupine (Voice)', 'IoT / MQTT'],

    ),

  ],

  'Web Development': [

    ProjectIdea(

      title: 'AI Collaborative Whiteboard',

      description: 'A real-time collaborative drawing board where an AI assistant expands rough sketches into high-fidelity UI designs.',

      techStack: ['React/Next.js', 'Socket.io', 'Stable Diffusion API'],

    ),

    ProjectIdea(

      title: 'DevOps Visualizer Dashboard',

      description: 'A 3D visualization of server architectures and container health using WebGL to monitor cloud infrastructure.',

      techStack: ['Three.js', 'Vue.js', 'Docker API'],

    ),

    ProjectIdea(

      title: 'SaaS Boilerplate Generator',

      description: 'An interactive CLI and Web tool that generates custom full-stack starter kits based on selected features.',

      techStack: ['Node.js', 'EJS', 'TailwindCSS'],

    ),

  ],

  'AI / ML': [

    ProjectIdea(

      title: 'Sign Language Translator',

      description: 'A real-time computer vision system that translates American Sign Language (ASL) gestures into spoken text.',

      techStack: ['Python', 'OpenCV', 'PyTorch'],

    ),

    ProjectIdea(

      title: 'DeepFake Detector',

      description: 'A browser extension and web service that analyzes video metadata and artifacts to flag potential deepfake content.',

      techStack: ['TensorFlow', 'Flask', 'React'],

    ),

    ProjectIdea(

      title: 'Personalized Music Composer',

      description: 'An AI model that generates infinite ambient focus music tailored to the user’s current heart rate and weather.',

      techStack: ['Python', 'NumPy', 'Spotify API'],

    ),

  ],

  'Cyber Security': [

    ProjectIdea(

      title: 'Phishing Link Terminator',

      description: 'An advanced email scanner that uses NLP to detect semantic urgency and suspicious patterns in incoming mails.',

      techStack: ['Python', 'BERT Model', 'Chrome Extension'],

    ),

    ProjectIdea(

      title: 'Network Packet Visualizer',

      description: 'A desktop tool that visualizes network traffic in a cyberpunk grid to identify anomalies and potential intrusions.',

      techStack: ['Rust', 'Tauri', 'Wireshark Libs'],

    ),

    ProjectIdea(

      title: 'Zero-Knowledge File Vault',

      description: 'A secure cloud storage client where encryption keys never leave the client device, ensuring total privacy.',

      techStack: ['Go', 'React', 'WASM'],

    ),

  ],

};


// ---------------------------------------------------------------------------

// MAIN SCREEN

// ---------------------------------------------------------------------------

class GeneratorScreen extends StatefulWidget {

  const GeneratorScreen({super.key});


  @override

  State<GeneratorScreen> createState() => _GeneratorScreenState();

}


class _GeneratorScreenState extends State<GeneratorScreen> with TickerProviderStateMixin {

  String _selectedDomain = 'Flutter';

  ProjectIdea? _currentIdea;

  bool _isGenerating = false;


  late AnimationController _glowController;

  late AnimationController _cardController;


  @override

  void initState() {

    super.initState();

    // Background pulsing glow

    _glowController = AnimationController(

      vsync: this,

      duration: const Duration(seconds: 4),

    )..repeat(reverse: true);


    // Card entrance animation

    _cardController = AnimationController(

      vsync: this,

      duration: const Duration(milliseconds: 600),

    );

  }


  @override

  void dispose() {

    _glowController.dispose();

    _cardController.dispose();

    super.dispose();

  }


  void _generateIdea() async {

    setState(() {

      _isGenerating = true;

      _cardController.reverse(); // Hide current card

    });


    // Simulate AI "Processing"

    await Future.delayed(const Duration(milliseconds: 1200));


    final ideas = projectDatabase[_selectedDomain] ?? [];

    if (ideas.isNotEmpty) {

      final random = Random();

      setState(() {

        _currentIdea = ideas[random.nextInt(ideas.length)];

        _isGenerating = false;

        _cardController.forward(); // Show new card

      });

    } else {

      setState(() {

        _isGenerating = false;

      });

    }

  }


  @override

  Widget build(BuildContext context) {

    // Responsive Helper

    final size = MediaQuery.of(context).size;

    final isDesktop = size.width > 800;

    final double contentWidth = isDesktop ? 600 : size.width * 0.9;


    return Scaffold(

      body: Stack(

        children: [

          // 1. FUTURISTIC BACKGROUND

          Positioned.fill(

            child: Container(

              decoration: const BoxDecoration(

                gradient: LinearGradient(

                  begin: Alignment.topLeft,

                  end: Alignment.bottomRight,

                  colors: [

                    Color(0xFF050505),

                    Color(0xFF0A0A12),

                    Color(0xFF000000),

                  ],

                ),

              ),

            ),

          ),

          // Animated Glow Orbs

          AnimatedBuilder(

            animation: _glowController,

            builder: (context, child) {

              return Positioned(

                top: -100 + (_glowController.value * 20),

                right: -100,

                child: Container(

                  width: 400,

                  height: 400,

                  decoration: BoxDecoration(

                    shape: BoxShape.circle,

                    color: const Color(0xFF7000FF).withOpacity(0.15),

                    boxShadow: [

                      BoxShadow(

                        color: const Color(0xFF7000FF).withOpacity(0.3),

                        blurRadius: 100,

                        spreadRadius: 50,

                      ),

                    ],

                  ),

                ),

              );

            },

          ),

          AnimatedBuilder(

            animation: _glowController,

            builder: (context, child) {

              return Positioned(

                bottom: -100 - (_glowController.value * 20),

                left: -100,

                child: Container(

                  width: 300,

                  height: 300,

                  decoration: BoxDecoration(

                    shape: BoxShape.circle,

                    color: const Color(0xFF00F0FF).withOpacity(0.15),

                    boxShadow: [

                      BoxShadow(

                        color: const Color(0xFF00F0FF).withOpacity(0.3),

                        blurRadius: 100,

                        spreadRadius: 50,

                      ),

                    ],

                  ),

                ),

              );

            },

          ),


          // 2. GLASSMORPHISM GRID OVERLAY (SUBTLE TEXTURE)

          Positioned.fill(

            child: CustomPaint(

              painter: GridPainter(),

            ),

          ),


          // 3. MAIN CONTENT

          Center(

            child: SingleChildScrollView(

              child: ConstrainedBox(

                constraints: BoxConstraints(maxWidth: contentWidth),

                child: Column(

                  mainAxisAlignment: MainAxisAlignment.center,

                  crossAxisAlignment: CrossAxisAlignment.stretch,

                  children: [

                    // Header

                    Text(

                      'AI NEXUS',

                      textAlign: TextAlign.center,

                      style: GoogleFonts.orbitron(

                        fontSize: isDesktop ? 48 : 32,

                        fontWeight: FontWeight.w900,

                        color: Colors.white,

                        letterSpacing: 4,

                        shadows: [

                          const Shadow(color: Color(0xFF00F0FF), blurRadius: 20),

                        ],

                      ),

                    ),

                    const SizedBox(height: 10),

                    Text(

                      'PROJECT IDEA GENERATOR',

                      textAlign: TextAlign.center,

                      style: GoogleFonts.robotoMono(

                        fontSize: 14,

                        color: Colors.white70,

                        letterSpacing: 2,

                      ),

                    ),

                    const SizedBox(height: 50),


                    // Domain Selector

                    GlassContainer(

                      child: Column(

                        crossAxisAlignment: CrossAxisAlignment.start,

                        children: [

                          Text(

                            'SELECT DOMAIN',

                            style: GoogleFonts.orbitron(

                              color: const Color(0xFF00F0FF),

                              fontSize: 12,

                              fontWeight: FontWeight.bold,

                            ),

                          ),

                          const SizedBox(height: 10),

                          DropdownButtonFormField<String>(

                            value: _selectedDomain,

                            dropdownColor: const Color(0xFF151520),

                            style: GoogleFonts.poppins(color: Colors.white),

                            decoration: InputDecoration(

                              filled: true,

                              fillColor: Colors.black26,

                              border: OutlineInputBorder(

                                borderRadius: BorderRadius.circular(12),

                                borderSide: BorderSide.none,

                              ),

                              enabledBorder: OutlineInputBorder(

                                borderRadius: BorderRadius.circular(12),

                                borderSide: BorderSide(color: Colors.white.withOpacity(0.1)),

                              ),

                            ),

                            icon: const Icon(Icons.arrow_drop_down, color: Color(0xFF00F0FF)),

                            items: projectDatabase.keys.map((String key) {

                              return DropdownMenuItem<String>(

                                value: key,

                                child: Text(key),

                              );

                            }).toList(),

                            onChanged: (val) {

                              setState(() {

                                _selectedDomain = val!;

                              });

                            },

                          ),

                        ],

                      ),

                    ),

                    const SizedBox(height: 30),


                    // GENERATE BUTTON

                    GestureDetector(

                      onTap: _isGenerating ? null : _generateIdea,

                      child: AnimatedContainer(

                        duration: const Duration(milliseconds: 200),

                        height: 60,

                        decoration: BoxDecoration(

                          gradient: LinearGradient(

                            colors: _isGenerating

                                ? [Colors.grey, Colors.grey.shade800]

                                : [const Color(0xFF00F0FF), const Color(0xFF7000FF)],

                          ),

                          borderRadius: BorderRadius.circular(30),

                          boxShadow: [

                            if (!_isGenerating)

                              BoxShadow(

                                color: const Color(0xFF00F0FF).withOpacity(0.6),

                                blurRadius: 20,

                                spreadRadius: 0,

                                offset: const Offset(0, 4),

                              ),

                          ],

                        ),

                        child: Center(

                          child: _isGenerating

                              ? const SizedBox(

                                  width: 24,

                                  height: 24,

                                  child: CircularProgressIndicator(

                                    color: Colors.white,

                                    strokeWidth: 2,

                                  ),

                                )

                              : Text(

                                  'INITIALIZE GENERATION',

                                  style: GoogleFonts.orbitron(

                                    color: Colors.white,

                                    fontSize: 16,

                                    fontWeight: FontWeight.bold,

                                    letterSpacing: 1.5,

                                  ),

                                ),

                        ),

                      ),

                    ),

                    const SizedBox(height: 40),


                    // VIEWPORT / RESULT AREA

                    AnimatedSize(

                      duration: const Duration(milliseconds: 300),

                      child: _currentIdea == null && !_isGenerating

                          ? Center(

                              child: Text(

                                'WAITING FOR INPUT...',

                                style: GoogleFonts.robotoMono(

                                  color: Colors.white24,

                                  fontSize: 14,

                                ),

                              ),

                            )

                          : FadeTransition(

                              opacity: _cardController,

                              child: SlideTransition(

                                position: Tween<Offset>(

                                  begin: const Offset(0, 0.1),

                                  end: Offset.zero,

                                ).animate(CurvedAnimation(

                                  parent: _cardController,

                                  curve: Curves.easeOutBack,

                                )),

                                child: _ProjectCard(idea: _currentIdea),

                              ),

                            ),

                    ),

                  ],

                ),

              ),

            ),

          ),

        ],

      ),

    );

  }

}


// ---------------------------------------------------------------------------

// WIDGETS

// ---------------------------------------------------------------------------


class GlassContainer extends StatelessWidget {

  final Widget child;

  final EdgeInsetsGeometry padding;


  const GlassContainer({

    super.key,

    required this.child,

    this.padding = const EdgeInsets.all(24),

  });


  @override

  Widget build(BuildContext context) {

    return ClipRRect(

      borderRadius: BorderRadius.circular(20),

      child: BackdropFilter(

        filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),

        child: Container(

          padding: padding,

          decoration: BoxDecoration(

            color: Colors.white.withOpacity(0.05),

            borderRadius: BorderRadius.circular(20),

            border: Border.all(

              color: Colors.white.withOpacity(0.1),

            ),

          ),

          child: child,

        ),

      ),

    );

  }

}


class _ProjectCard extends StatelessWidget {

  final ProjectIdea? idea;


  const _ProjectCard({required this.idea});


  @override

  Widget build(BuildContext context) {

    if (idea == null) return const SizedBox.shrink();


    return GlassContainer(

      child: Column(

        crossAxisAlignment: CrossAxisAlignment.start,

        children: [

          Row(

            children: [

              const Icon(Icons.lightbulb_outline, color: Color(0xFF00F0FF), size: 28),

              const SizedBox(width: 12),

              Expanded(

                child: Text(

                  idea!.title,

                  style: GoogleFonts.orbitron(

                    fontSize: 20,

                    fontWeight: FontWeight.bold,

                    color: Colors.white,

                  ),

                ),

              ),

            ],

          ),

          const SizedBox(height: 16),

          Text(

            idea!.description,

            style: GoogleFonts.poppins(

              fontSize: 15,

              color: Colors.white70,

              height: 1.5,

            ),

          ),

          const SizedBox(height: 24),

          Text(

            'RECOMMENDED STACK',

            style: GoogleFonts.orbitron(

              fontSize: 10,

              color: const Color(0xFF7000FF),

              fontWeight: FontWeight.bold,

            ),

          ),

          const SizedBox(height: 12),

          Wrap(

            spacing: 8,

            runSpacing: 8,

            children: idea!.techStack.map((tech) {

              return Container(

                padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6),

                decoration: BoxDecoration(

                  color: const Color(0xFF7000FF).withOpacity(0.2),

                  borderRadius: BorderRadius.circular(20),

                  border: Border.all(color: const Color(0xFF7000FF).withOpacity(0.5)),

                ),

                child: Text(

                  tech,

                  style: GoogleFonts.robotoMono(

                    fontSize: 12,

                    color: Colors.white,

                  ),

                ),

              );

            }).toList(),

          ),

        ],

      ),

    );

  }

}


// ---------------------------------------------------------------------------

// PAINTERS

// ---------------------------------------------------------------------------

class GridPainter extends CustomPainter {

  @override

  void paint(Canvas canvas, Size size) {

    final paint = Paint()

      ..color = Colors.white.withOpacity(0.03)

      ..strokeWidth = 1;


    const double step = 40;


    for (double x = 0; x < size.width; x += step) {

      canvas.drawLine(Offset(x, 0), Offset(x, size.height), paint);

    }


    for (double y = 0; y < size.height; y += step) {

      canvas.drawLine(Offset(0, y), Offset(size.width, y), paint);

    }

  }


  @override

  bool shouldRepaint(covariant CustomPainter oldDelegate) => false;

}


Comments

  1. hello Sir
    Can we decompile a Encrypted .TCP extension raw binary file..
    Kindly make a video on your YouTube channel
    Pls DM on 8909759117
    I will describe your the data regarding the TCP file.

    ReplyDelete
    Replies
    1. Hello,
      Thank you for your question.

      In general, an encrypted raw binary file (such as a .TCP file) cannot be directly decompiled unless you have proper authorization and access to the decryption keys or the original file format specification. Decompiling encrypted or proprietary files without permission may also violate legal and ethical guidelines.

      If this file belongs to a system or software you own or are authorized to analyze, you can first try to identify the file structure and encryption method used. After proper decryption, reverse engineering tools may help analyze the binary data.

      If you can share more technical details about the file format and your use case (for legitimate purposes), I can try to guide you in the right direction.

      Delete

Post a Comment

Popular posts from this blog

Educational File Encryptor GUI (Python AES Project) | FuzzuTech

Is This News Real or Fake? πŸ€– AI Exposes the Truth | FuzzuTech Python App Demo

🚨 Python Intrusion Detection System (IDS) – Real-Time ML + Tkinter GUI Project | FuzzuTech