Nebula Chat is a modern, multi-modal AI chat application built with Next.js and Genkit. It allows users to have conversations with Google's Gemini models and manage their chat history.
- Multi-Modal Conversations: Chat with text or upload images for context.
- Conversation History: All your chats are saved locally and can be accessed from the sidebar.
- Chat Management: Rename or delete conversations to keep your history organized.
- Sleek UI: A modern, dark-themed interface built with ShadCN UI and Tailwind CSS.
- Framework: Next.js (App Router)
- AI Integration: Genkit
- AI Models: Google Gemini 1.5 Flash
- UI: React, TypeScript
- Styling: Tailwind CSS, ShadCN UI
Follow these instructions to get a copy of the project up and running on your local machine for development and testing purposes.
- Node.js (v20 or later recommended)
- npm (or yarn/pnpm)
- A Google AI API Key. You can get one from the Google AI Studio.
-
Clone the repository:
git clone https://github.com/pralaynaskar/nebula-chat.git cd nebula-chat -
Install dependencies:
npm install
-
Set up environment variables: Create a file named
.envin the root of your project directory and add your Google AI API key.GOOGLE_API_KEY=your_api_key_here -
Run the application: You need to run two processes in separate terminals.
-
Terminal 1: Start the Genkit AI flows: This command starts the Genkit development server, which handles the AI logic.
npm run genkit:watch
-
Terminal 2: Start the Next.js development server: This command starts the frontend application.
npm run dev
-
-
Open in browser: Once both servers are running, open http://localhost:9002 in your browser to see the application.
npm run dev: Runs the Next.js application in development mode with Turbopack.npm run genkit:dev: Starts the Genkit server once.npm run genkit:watch: Starts the Genkit server and watches for file changes.npm run build: Creates a production-ready build of the Next.js application.npm run start: Starts the production server for the built application.npm run lint: Lints the codebase using Next.js's built-in ESLint configuration.