- ✨ Features
- 🎯 Demo
- 🛠️ Tech Stack
- 🚀 Quick Start
- ⚙️ Installation
- 🔧 Configuration
- 📱 Usage
- 🏗️ Architecture
- 🌐 Deployment
- 🔌 API Reference
- 🎨 Customization
- 🤝 Contributing
- 📄 License
- AI-Powered Roadmap Generation: Leverages Google's Gemini AI to create personalized learning paths
- Interactive Tree Visualization: Beautiful, interactive roadmap canvas with React Flow
- Multi-Category Support: Kitchen recipes, travel planning, project management, and fitness planning
- Phase-Based Structure: Each roadmap contains multiple phases with exactly 4 steps per phase
- Smart Step Distribution: Steps are intelligently distributed (2 left, 2 right) for optimal visualization
- Secure Authentication: Email/password authentication with Supabase Auth
- User Dashboard: Personal dashboard to view and manage all saved roadmaps
- Auto-Save Functionality: Roadmaps are automatically saved after generation
- User Data Protection: Row-level security ensures users only see their own data
- Responsive Design: Fully responsive across all device sizes
- Real-time Progress Tracking: Track completion status for each step
- Keyboard Navigation: Navigate between phases and steps using arrow keys
- Modal Interactions: Detailed views for phases and individual steps
- Smooth Animations: Fluid transitions and micro-interactions throughout
- YouTube Video Integration: AI-generated relevant tutorial videos for each step
- Interactive Maps: Embedded Google Maps for travel planning with location-specific guidance
- AI-Powered Instructions: Generate detailed step-by-step instructions using Mistral AI
- PDF Export: Download beautifully formatted PDF versions of your roadmaps
- TypeScript: Full type safety and enhanced developer experience
- Modern React: Built with React 18+ and modern hooks
- Tailwind CSS: Utility-first styling with custom theme system
- Express Backend: Robust Node.js/Express server with CORS support
- Supabase Integration: Full-stack authentication and database management
- Error Handling: Comprehensive error handling and fallback mechanisms
- Performance Optimized: Memoized components and efficient re-rendering
🌐 Live Demo: https://flowniq.netlify.app
- Learning React: 3-phase roadmap from basics to advanced concepts
- Planning a Trip to Japan: Complete travel planning with cultural insights and maps
- Building a SaaS Product: End-to-end product development roadmap
- Getting Fit in 90 Days: Structured fitness journey with nutrition guidance
- React 18.3.1 - Modern React with concurrent features
- TypeScript 5.5.3 - Type-safe JavaScript
- Tailwind CSS 3.4.1 - Utility-first CSS framework
- React Flow 12.0.4 - Interactive node-based diagrams
- React Router DOM 6.20.1 - Client-side routing
- Lucide React - Beautiful, customizable icons
- Vite 5.4.2 - Fast build tool and dev server
- Node.js - JavaScript runtime
- Express 4.18.2 - Web application framework
- Google Generative AI - Gemini AI integration
- Mistral AI - Additional AI capabilities for instructions
- CORS 2.8.5 - Cross-origin resource sharing
- dotenv 16.5.0 - Environment variable management
- Supabase - Backend-as-a-Service platform
- PostgreSQL - Robust relational database
- Row Level Security - Data protection and user isolation
- Real-time subscriptions - Live data updates
- ESLint - Code linting and formatting
- TypeScript ESLint - TypeScript-specific linting rules
- Autoprefixer - CSS vendor prefixing
- Concurrently - Run multiple commands simultaneously
# Clone the repository
git clone https://github.com/yourusername/flowniq.ai.git
cd flowniq
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env
# Edit .env with your API keys and Supabase credentials
# Start development servers (frontend + backend)
npm run dev
# Open your browser
# Frontend: http://localhost:5173
# Backend: http://localhost:3001
- Node.js (v18 or higher)
- npm or yarn
- Supabase Account (for database and authentication)
- Google Gemini API Key (required)
- Mistral AI API Key (required)
-
Clone the Repository
git clone https://github.com/yourusername/flowniq.ai.git cd flowniq
-
Install Dependencies
npm install
-
Set up Supabase
- Create a new project at supabase.com
- Go to Settings > API to get your project URL and anon key
- Run the database migration (see Configuration section)
-
Environment Setup
cp .env.example .env
-
Configure Environment Variables
# AI API Keys (optional but recommended) GEMINI_API_KEY=your_gemini_api_key_here MISTRAL_API_KEY=your_mistral_api_key_here # Server configuration PORT=3001 # Supabase configuration (required) VITE_SUPABASE_URL=your_supabase_project_url VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
-
Set up Database
- Connect to Supabase and run the migration file
- The migration will create the roadmaps table with proper RLS policies
-
Start Development
# Start both frontend and backend npm run dev # Or start individually npm run server # Backend only npx vite # Frontend only
Variable | Description | Required | Default |
---|---|---|---|
VITE_SUPABASE_URL |
Supabase project URL | Yes | - |
VITE_SUPABASE_ANON_KEY |
Supabase anonymous key | Yes | - |
GEMINI_API_KEY |
Google Gemini AI API key | Yes | - |
MISTRAL_API_KEY |
Mistral AI API key | Yes | - |
PORT |
Backend server port | No | 3001 |
*Note: Without AI API keys, the app runs in fallback mode with pre-defined roadmap templates.
- Visit supabase.com and create an account
- Create a new project
- Go to Settings > API to get your project URL and keys
- Copy the URL and anon key to your
.env
file
- Visit Google AI Studio
- Sign in with your Google account
- Create a new API key
- Copy the key to your
.env
file
- Visit Mistral AI Console
- Create an account and get your API key
- Copy the key to your
.env
file
The app includes a Supabase migration file that sets up:
roadmaps
table with proper schema- Row Level Security (RLS) policies
- Indexes for performance
- Triggers for automatic timestamps
To apply the migration:
- Connect to your Supabase project
- Run the SQL migration file located in
supabase/migrations/
- Sign Up: Create an account using email and password
- Email Confirmation: Check your email and confirm your account (if enabled)
- Dashboard: Access your personal dashboard to view saved roadmaps
- Create Roadmap: Click the "+" button to create a new roadmap
- Select Category: Choose from Kitchen Recipe, Travel Planner, Project, or Fitness Planner
- Describe Goal: Enter a detailed description of what you want to achieve
- Travel Planning: For travel category, answer additional questions about destination, duration, etc.
- Generate: Click "Generate" to create your AI-powered roadmap
- Auto-Save: The roadmap is automatically saved to your account
- Mouse: Click and drag to pan, scroll to zoom
- Keyboard: Use ← → arrow keys to navigate between phases/steps in modals
- Sidebar: Track progress and expand/collapse phases
- Modals: Click on phases or steps for detailed information
- Click checkboxes in the sidebar to mark steps as completed
- View overall progress with the progress bar
- Only one phase expanded at a time for focused learning
- YouTube Videos: Watch relevant tutorial videos for each step
- Interactive Maps: Explore locations for travel planning
- AI Instructions: Generate detailed step-by-step guidance
- PDF Export: Download formatted roadmaps for offline use
flowniq/
├── public/ # Static assets
│ └── chartly_logo.png # Application logo
├── server/ # Backend server
│ └── index.js # Express server with AI integration
├── src/
│ ├── components/ # React components
│ │ ├── auth/ # Authentication components
│ │ ├── dashboard/ # Dashboard components
│ │ ├── CustomEdge.tsx # Custom React Flow edges
│ │ ├── CustomRoadmapNode.tsx # Custom React Flow nodes
│ │ ├── MessageInput.tsx # Input component for goals
│ │ ├── Navbar.tsx # Navigation component
│ │ ├── NodeDetail.tsx # Step detail modal
│ │ ├── PhaseDetail.tsx # Phase detail modal
│ │ ├── ProtectedRoute.tsx # Route protection
│ │ ├── RoadmapCanvas.tsx # Main canvas component
│ │ └── StepsPanel.tsx # Sidebar progress panel
│ ├── contexts/ # React contexts
│ │ └── AuthContext.tsx # Authentication context
│ ├── lib/ # Library configurations
│ │ └── supabase.ts # Supabase client setup
│ ├── pages/ # Page components
│ │ ├── CreateRoadmapPage.tsx # Roadmap creation page
│ │ └── RoadmapViewerPage.tsx # Roadmap viewing page
│ ├── services/ # API services
│ │ ├── api.ts # Backend communication
│ │ └── roadmapService.ts # Database operations
│ ├── types/ # TypeScript definitions
│ │ └── index.ts # Core type definitions
│ ├── utils/ # Utility functions
│ │ ├── mockAI.ts # Fallback roadmap generation
│ │ └── themes.ts # Category theme system
│ ├── App.tsx # Main application component
│ └── main.tsx # Application entry point
├── supabase/ # Database migrations
│ └── migrations/ # SQL migration files
├── .env.example # Environment variables template
├── package.json # Dependencies and scripts
└── README.md # This file
graph TD
A[User visits app] --> B{Authenticated?}
B -->|No| C[Landing Page]
B -->|Yes| D[Dashboard]
C --> E[Sign Up/Sign In]
E --> F[Supabase Auth]
F --> G[Email Confirmation]
G --> D
D --> H[Create/View Roadmaps]
- User Authentication → Supabase Auth
- Roadmap Creation → AI Processing → Database Storage
- Data Retrieval → RLS-protected queries
- Real-time Updates → Supabase subscriptions
- Media Integration → AI-generated content
The frontend is automatically deployed to Netlify:
🌐 Live URL: https://flowniq.netlify.app
For manual deployment:
# Build the project
npm run build
# Deploy to Netlify (install Netlify CLI first)
npm install -g netlify-cli
netlify deploy --prod --dir=dist
- Update CORS Configuration in
server/index.js
:app.use(cors({ origin: [ 'http://localhost:5173', 'http://127.0.0.1:5173', 'https://flowniq.netlify.app', // Your frontend URL 'https://your-backend-name.onrender.com' // Your Render backend URL ], credentials: true }));
-
Connect Repository:
- Go to Render Dashboard
- Click "New +" → "Web Service"
- Connect your GitHub repository
-
Configure Service:
- Name:
flowniq-backend
- Environment:
Node
- Build Command:
npm install
- Start Command:
node server/index.js
- Name:
-
Set Environment Variables:
GEMINI_API_KEY
: Your Google Gemini API keyMISTRAL_API_KEY
: Your Mistral AI API keyPORT
: 10000 (Render's default)
Supabase handles database hosting automatically:
- Production Database: Automatically provisioned with your Supabase project
- Migrations: Apply the migration file to set up tables and policies
- Backups: Automatic daily backups included
- Scaling: Automatic scaling based on usage
All authentication is handled by Supabase Auth:
- Sign Up:
supabase.auth.signUp()
- Sign In:
supabase.auth.signInWithPassword()
- Sign Out:
supabase.auth.signOut()
POST /api/generate-roadmap
Request Body:
{
"prompt": "Learn React development",
"category": "project",
"travelData": {
"destination": "Paris",
"startingLocation": "New York",
"duration": 7,
"travelers": 2,
"budget": 3000
}
}
POST /api/generate-instructions
Request Body:
{
"stepDescription": "Learn React hooks and state management"
}
GET /api/health
All database operations use Supabase client with RLS:
// Create roadmap
const { data, error } = await supabase
.from('roadmaps')
.insert(roadmapData);
// Get user roadmaps
const { data, error } = await supabase
.from('roadmaps')
.select('*')
.eq('user_id', user.id);
-
Update Types (
src/types/index.ts
):export type Category = 'existing_categories' | 'new_category';
-
Add Theme (
src/utils/themes.ts
):new_category: { primary: '#your-color', secondary: '#your-secondary-color', accent: '#your-accent-color', background: '#your-background-color', text: '#your-text-color' }
-
Update UI Components with new category options
Edit the prompt templates in server/index.js
to customize AI behavior for different categories.
The app uses Tailwind CSS with a custom theme system:
- Colors: Update category themes in
src/utils/themes.ts
- Components: Each component has its own styling
- Responsive: Built-in responsive design patterns
We welcome contributions! Here's how to get started:
- Fork the Repository
- Clone Your Fork
- Create Feature Branch:
git checkout -b feature/amazing-feature
- Make Changes and test thoroughly
- Commit Changes:
git commit -m 'Add amazing feature'
- Push to Branch:
git push origin feature/amazing-feature
- Open Pull Request
- Code Style: Follow existing TypeScript and React patterns
- Testing: Test your changes across different categories and scenarios
- Documentation: Update README.md if adding new features
- Database: Test migrations and RLS policies thoroughly
- 🎨 UI/UX Improvements: Enhanced animations, better responsive design
- 🤖 AI Integration: Support for other AI providers
- 📊 Analytics: User behavior tracking and roadmap analytics
- 🔧 Features: Advanced export options, sharing capabilities
- 🌐 Internationalization: Multi-language support
- 📱 Mobile: Enhanced mobile experience and PWA features
This project is licensed under the MIT License - see the LICENSE file for details.
- Google Gemini AI - For powering intelligent roadmap generation
- Mistral AI - For detailed instruction generation
- Supabase - For authentication and database infrastructure
- React Flow - For beautiful interactive diagrams
- Tailwind CSS - For utility-first styling system
- Lucide React - For the beautiful icon system
- Netlify - For seamless frontend deployment
- Render - For reliable backend hosting
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: flowniqai@gmail.com
Made with ❤️ by the Flowniq Team