uchill/chatnext/README.md

528 lines
20 KiB
Markdown

# 🤖 Learn AI Chatbots | Django + Next.js
*Educational Tutorial Series for Developers*
[![YouTube](https://img.shields.io/badge/YouTube-Subscribe-red?style=flat&logo=youtube)](https://youtube.com/@aparsoft)
[![LinkedIn](https://img.shields.io/badge/LinkedIn-Follow-blue?style=flat&logo=linkedin)](https://linkedin.com/company/aparsoft)
[![Website](https://img.shields.io/badge/Website-aparsoft.com-green?style=flat)](https://aparsoft.com)
![Python](https://img.shields.io/badge/Python-3.12-blue?logo=python)
![Django](https://img.shields.io/badge/Django-5.2-green?logo=django)
![Next.js](https://img.shields.io/badge/Next.js-15-black?logo=next.js)
![PostgreSQL](https://img.shields.io/badge/PostgreSQL-17-blue?logo=postgresql)
![LangChain](https://img.shields.io/badge/LangChain-Latest-green)
> **🎓 Educational Tutorial Series for the Developer Community**
>
> Learn how to build conversational AI chatbots from scratch using Django, Django REST Framework, and Next.js. This hands-on tutorial introduces you to LangChain and LangGraph basics while building a real working chatbot.
## 📖 What Is This Project?
This is a **learning-focused repository** designed to teach developers how to integrate AI into full-stack web applications. It's NOT a comprehensive enterprise solution - it's a clear, straightforward tutorial on building your first conversational chatbot.
**What You'll Learn:**
- Setting up Django + Django REST Framework for AI applications
- Building a modern frontend with Next.js
- Creating basic conversational chatbot functionality
- Introduction to LangChain fundamentals
- LangGraph basics for conversation flows
- Connecting Django backend with AI services
- Deploying a simple AI chatbot
---
## ⚡ Quick Start
**New to AI chatbots?** Perfect! This tutorial is designed for you:
1. 🎥 **[Watch the YouTube Tutorial](https://youtube.com/@aparsoft-ai)** - Follow along step-by-step
2. 💻 **Clone this repo** - Get the starter code
3. 🛠️ **Build with us** - Learn by doing
4. 🚀 **Deploy your chatbot** - See it live!
**No prior AI experience needed** - we'll teach you everything from basics to deployment.
---
## 🎯 About Aparsoft
We're an AI solutions company based in **Bengaluru, India**, and we're passionate about teaching developers. This tutorial series is part of our mission to make AI accessible to the Django and broader developer community.
**Why We Created This Tutorial:**
- Share our Django + AI integration knowledge
- Build a supportive developer community
- Demonstrate the power of Django-DRF-Next.js stack
- Make AI less intimidating for backend developers
- Help you build your first AI project
### 📺 Learn With Us on YouTube
We're building in public and teaching everything we know:
- **YouTube:** [@aparsoft-ai](https://youtube.com/@aparsoft-ai) - **Weekly tutorials, live coding, and beginner-friendly content**
- **LinkedIn:** [/company/aparsoft](https://linkedin.com/company/aparsoft) - Articles and tech insights
- **GitHub:** [@aparsoft](https://github.com/aparsoft) - Open-source learning projects
- **Twitter/X:** [@aparsoft](https://twitter.com/aparsoft) - Quick tips and dev updates
- **Website:** [aparsoft.com](https://aparsoft.com) - More about our work
**Subscribe to our YouTube channel** - New tutorials every Wednesday, and Friday!
## 🛠️ Tech Stack (Enterprise-Grade Architecture)
This project features a production-ready, scalable architecture:
### Backend Stack (Django 5.2)
- **Django 5.2** - Latest Python web framework with async support
- **Django REST Framework** - Professional API development
- **PostgreSQL 17 + pgvector** - Advanced relational database with vector search
- **Redis 7** - High-performance caching & message broker
- **Celery** - Distributed task queue for background jobs
- **Celery Beat** - Cron-like task scheduler
### Frontend Stack (Next.js 15.5.4)
- **Next.js 15.5.4** - React framework with Turbopack (faster builds!)
- **Tailwind CSS 3.0** - Modern utility-first CSS framework
- **Axios** - Promise-based HTTP client
- **Server-Side Rendering (SSR)** - SEO-optimized, fast page loads
### AI/ML Integration
- **OpenAI API** - GPT-4 and GPT-3.5 Turbo integration
- **LangChain** - Advanced LLM application framework
- **LangGraph** - Stateful, multi-step conversation flows
- **pgvector Extension** - Vector similarity search for RAG
- **Conversation Memory** - Context-aware chatbot responses
### Infrastructure & DevOps
- **Docker Compose** - Multi-container orchestration
- **Automated Migrations** - Database schema management
- **Health Checks** - Service monitoring and auto-restart
- **Hot Reload** - Development efficiency (both backend & frontend)
- **Volume Persistence** - Data survives container restarts
- **Separate Entrypoints** - Optimized startup for each service
## 💡 Why This Repository?
This is a **hands-on learning project** for developers who want to understand AI integration without the overwhelm.
**Perfect for:**
- **Django developers** curious about adding AI to their projects
- **Backend developers** wanting to learn LangChain basics
- **Full-stack developers** exploring Next.js + Django integration
- **Students** learning modern web development with AI
- **Bootcamp grads** building their portfolio with real AI projects
- **Anyone** who's intimidated by AI and wants a friendly introduction
**What makes this project special:**
-**Enterprise-grade architecture** - Production-ready patterns and best practices
-**Fully automated setup** - Migrations, superuser, static files - all automatic
-**Clear, documented code** - Professional code with comprehensive comments
-**Step-by-step tutorials** - YouTube videos explaining architecture decisions
-**Real production patterns** - Celery, Redis, proper database management
-**Beginner-friendly** - Learn professional development without overwhelm
---
## 🎯 Key Features & Automation
### Automatic Setup (Zero Manual Steps!)
When you run `docker-compose up`, the system automatically:
1. **Database Initialization**
- Waits for PostgreSQL to be fully ready
- Runs all pending migrations
- Creates database tables and indexes
- Installs pgvector extension
2. **Superuser Creation**
- Creates Django admin user automatically
- **Username:** `admin`
- **Password:** `admin123` (⚠️ Change in production!)
- **Email:** `admin@aparsoft.com`
- Ready to access admin panel immediately
3. **Static Files**
- Collects all Django static files
- Prepares admin interface assets
- Configures file permissions
4. **Service Orchestration**
- Backend starts first (runs migrations)
- Celery workers wait for backend
- Celery Beat waits for Redis
- Frontend starts independently
- All services connect automatically
### Django Admin Panel
Access the full-featured admin dashboard at: **http://localhost:8000/chatbot-admin/**
**Default Credentials:**
- Username: `admin`
- Password: `admin123`
**Admin Panel Features:**
- 👥 **User Management** - Create, edit, delete users and permissions
- 🗄️ **Database Models** - CRUD operations on all models
- 📧 **Email Verification** - Manage email addresses and verification
- 🔐 **Token Management** - API tokens and authentication
- 📊 **Celery Monitoring** - View periodic tasks and results
- 🔍 **Query Inspection** - Debug database queries
- 📝 **Content Management** - Manage site content and configuration
**Security Best Practices:**
```bash
# Change admin password immediately
docker-compose exec backend python manage.py changepassword admin
# Or create your own superuser
docker-compose exec backend python manage.py createsuperuser
# For production, delete default admin
docker-compose exec backend python manage.py shell
>>> from django.contrib.auth import get_user_model
>>> User = get_user_model()
>>> User.objects.get(username='admin').delete()
```
### Background Task Processing
**Celery Workers** handle:
- Asynchronous AI model requests
- Email sending
- Data processing
- Report generation
- Periodic cleanup tasks
**Celery Beat** schedules:
- Daily database backups
- Cache clearing
- Token expiration cleanup
- Periodic health checks
View Celery tasks in Django admin or use:
```bash
docker-compose exec celery celery -A config inspect active
```
## 🚀 What You'll Build
By the end of this tutorial, you'll have a working chatbot with:
### 🤖 Basic Chatbot Features
- **Conversational Interface** - Simple, clean chat UI
- **Message History** - Conversations that remember context
- **AI Responses** - Powered by OpenAI GPT models
- **User Sessions** - Multiple users can chat independently
### 🔧 Technical Implementation
- **Django REST API** - Clean, well-structured backend
- **Next.js Frontend** - Modern React with server-side rendering
- **LangChain Integration** - Your first steps with the AI framework
- **LangGraph Basics** - Simple conversation flow patterns
- **Database Storage** - Saving conversations in PostgreSQL
### 📚 Learning Outcomes
- Understand how to connect Django with AI APIs
- Learn LangChain fundamentals through practice
- See how conversation state management works
- Deploy a full-stack AI application
- Build confidence to explore more complex AI features
## 🛠️ Getting Started
### Prerequisites
Don't worry if you don't have everything - we'll guide you through installation in the tutorial videos!
**Required:**
- Python 3.10+ (we recommend 3.12)
- Node.js 18+
- OpenAI API key (we'll show you how to get one)
**Nice to have:**
- Docker Desktop (makes setup easier, but optional)
- Git basics
### 📦 Quick Setup
**Option 1: Docker (Recommended for Beginners)**
```bash
# Clone the repo
git clone https://github.com/aparsoft/django-nextjs-chatbot.git
cd django-nextjs-chatbot
# Create .env file (we'll guide you)
cp .env.example .env
# Edit .env and add your OPENAI_API_KEY
# Start everything with one command!
docker-compose up --build
```
**What happens automatically:**
- ✅ Database migrations run automatically
- ✅ Superuser created (username: `admin`, password: `admin123`)
- ✅ Static files collected
- ✅ All services start and connect
**Access your application:**
| Service | URL | Credentials | Purpose |
|---------|-----|-------------|---------|
| **Frontend** | http://localhost:3000 | - | Main user interface |
| **Backend API** | http://localhost:8000 | - | REST API endpoints |
| **Admin Panel** | http://localhost:8000/chatbot-admin/ | admin / admin123 | Django admin dashboard |
| **PostgreSQL** | localhost:5433 | chatbot_user / chatbot_pass | Database access |
| **Redis** | localhost:6380 | - | Cache & broker |
**⚠️ Security Notice:** Default passwords are for development only! See [SYSTEM_SETUP.md](./SYSTEM_SETUP.md) for production security configuration.
---
## 📊 System Architecture
```
┌─────────────────────────────────────────────────────────┐
│ Docker Compose Orchestration │
└─────────────────────────────────────────────────────────┘
┌───────────────────┼───────────────────┐
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌──────────────┐
│ Next.js │ │ Django │ │ Django │
│ Frontend │──▶│ Backend │──▶│ Admin │
│ Port 3000 │ │ Port 8000 │ │ Panel │
└───────────────┘ └───────────────┘ └──────────────┘
┌───────────────────┼───────────────────┐
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌──────────────┐
│ PostgreSQL │ │ Redis │ │ Celery │
│ Port 5433 │ │ Port 6380 │ │ Workers │
│ (Database) │ │ (Cache) │ │ (Background) │
└───────────────┘ └───────────────┘ └──────────────┘
┌──────────────┐
│ Celery Beat │
│ (Scheduler) │
└──────────────┘
```
**Key Features:**
- ✅ All services containerized and isolated
- ✅ Automatic service dependencies
- ✅ Health checks and auto-restart
- ✅ Data persistence across restarts
- ✅ Hot reload for development
That's it! Everything is set up and ready to use.
**Option 2: Manual Setup (If you want to understand each piece)**
We recommend following our YouTube tutorial "[Setting Up Your Django + Next.js Chatbot](https://youtube.com/@aparsoft)" where we walk through each command. Here are the complete steps:
**Step 1: Clone the Repository**
```bash
git clone https://github.com/aparsoft/django-nextjs-chatbot.git
cd django-nextjs-chatbot
```
**Step 2: Backend Setup (Django)**
```bash
# Navigate to backend folder
cd backend
# Create a virtual environment
python -m venv venv
# Activate virtual environment
# On macOS/Linux:
source venv/bin/activate
# On Windows:
venv\Scripts\activate
# Install dependencies from requirements.txt
pip install -r requirements.txt
# Create .env file for backend
cp .env.example .env
# Edit .env and add your OPENAI_API_KEY
# Run database migrations
python manage.py migrate
# Create a superuser (optional, for admin access)
python manage.py createsuperuser
# Start the Django development server
python manage.py runserver
# Backend will run on http://localhost:8000
```
**Step 3: Frontend Setup (Next.js with .jsx)**
```bash
# Open a new terminal window
# Navigate to frontend folder
cd frontend
# Install Node.js dependencies
npm install
# or if you prefer yarn:
# yarn install
# Create .env.local file for frontend
cp .env.example .env.local
# Edit .env.local and set:
# NEXT_PUBLIC_API_URL=http://localhost:8000
# Start the Next.js development server
npm run dev
# or with yarn:
# yarn dev
# Frontend will run on http://localhost:3000
```
**Step 4: Test Your Setup**
- Open `http://localhost:3000` in your browser
- You should see the chatbot interface
- Try sending a message - it should connect to your Django backend
- Backend API docs available at `http://localhost:8000/api/docs`
**Troubleshooting Common Issues:**
- **Port already in use?** Change ports in settings
- **Module not found?** Make sure virtual environment is activated
- **Database errors?** Run migrations again
- **API not connecting?** Check CORS settings in Django
### 🔑 Getting Your OpenAI API Key
1. Go to [platform.openai.com](https://platform.openai.com/)
2. Sign up / Log in
3. Go to API Keys section
4. Create a new key
5. Add $5-10 credit (plenty for learning!)
We have a detailed video guide: "Getting Your First OpenAI API Key"
### ❓ Stuck? We're Here to Help!
- 📺 **Watch the setup video** on our YouTube channel
- 💬 **Ask in GitHub Discussions** - we respond daily!
- 🎮 **Join our Discord** (link in YouTube description)
- 📚 **Check [SYSTEM_SETUP.md](./SYSTEM_SETUP.md)** - Comprehensive system configuration guide
- 🚀 **See [QUICK_START.md](./QUICK_START.md)** - Quick reference and common commands
- ⚠️ **Redis warning?** See [SYSTEM_SETUP.md](./SYSTEM_SETUP.md#fix-redis-memory-overcommit-warning)
## 🤝 Contributing
This is a learning project and we welcome contributions from developers at all levels!
**Ways to contribute:**
- **Improve documentation** - Help us make it clearer
- **Add code comments** - Explain tricky parts
- **Report bugs** - Help us fix issues
- **Share your chatbot** - Show what you built!
- **Suggest features** - What would help you learn?
**Not sure where to start?** Check out our "Good First Issue" labels or ask in Discussions!
## 🎬 YouTube Tutorial Series
This repository is the companion code for our **beginner-friendly video tutorial series** on building AI chatbots!
### 📺 Complete Tutorial Playlist
**Part 1: Setup & Basics** (Start here!)
- "Introduction: What We're Building" - Project overview and goals
- "Django + Next.js Setup from Scratch" - Getting your environment ready
- "Your First API Call to OpenAI" - Hello World for AI
**Part 2: Building the Chatbot**
- "Creating the Django REST API" - Backend fundamentals
- "Next.js Frontend Setup" - Building the chat interface
- "Connecting Frontend to Backend" - Making them talk
**Part 3: Adding Intelligence**
- "Introduction to LangChain" - What it is and why we use it
- "Basic Conversation Memory" - Making the chatbot remember
- "Introduction to LangGraph" - Simple conversation flows
**Part 4: Deployment**
- "Docker Basics for Beginners" - Containerizing your app
- "Deploying Your First Chatbot" - Going live!
### 📅 New Learning Content Every Week
- **Monday:** Technical Tutorials (beginner-friendly!)
- **Wednesday:** Live Coding & Q&A
- **Friday:** Quick Tips & Troubleshooting
### 🎓 What Makes Our Tutorials Different?
-**No assumptions** - We explain every command
-**Real code** - Not pseudocode, actual working examples
-**Mistakes included** - We show bugs and how to fix them
-**Django focus** - For backend devs learning AI
-**Community support** - Active Discord and discussions
**[→ Start Learning on YouTube](https://youtube.com/@aparsoft-ai)** - First video teaches absolute basics!
---
## 📞 Get Help & Connect
### 🎓 Learning & Community
- **YouTube:** [@aparsoft-ai](https://youtube.com/@aparsoft-ai) - Main tutorial channel
- **Discord:** [Join our community](https://aparsoft.com/discord) - Get help from fellow learners
- **GitHub Discussions:** Ask questions about the code
- **LinkedIn:** [/company/aparsoft](https://linkedin.com/company/aparsoft) - Articles and tips
### 🐛 Found a Bug?
- **GitHub Issues:** [Report it here](https://github.com/aparsoft/django-nextjs-chatbot/issues)
- **Urgent help:** support@aparsoft.com
### 💼 Want Us to Build For You?
If you need a custom AI solution for your business (beyond learning):
- **Website:** [aparsoft.com](https://aparsoft.com)
- **Email:** contact@aparsoft.com
- **Phone:** +91 8904064878
---
## 📄 License
Copyright © 2024 Aparsoft Private Limited. All rights reserved.
This code is provided for educational purposes. Feel free to learn from it, modify it, and use it in your own projects!
---
## 🌟 Support This Project
**If this helped you learn:**
-**Star this repo** - Helps others find it
- 🎥 **Subscribe on YouTube** - [@aparsoft](https://youtube.com/@aparsoft)
- 📢 **Share with friends** - Help others learn too
- 💬 **Join discussions** - Share what you built!
-**Say thanks** - Tag us when you deploy your chatbot
---
## 🚀 What's Next?
Once you complete this tutorial, you can:
1. **Build on it** - Add features like voice input, file uploads, etc.
2. **Share your version** - Show us what you created!
3. **Learn more** - We have advanced tutorials for RAG, agents, and more
4. **Join our community** - Help other learners on their journey
5. **Build for real** - Use this as foundation for actual projects
---
*"Learning AI Together, One Chatbot at a Time"*
**Built with ❤️ by the Aparsoft Team in Bengaluru, India**
**Ready to start?** [▶️ Watch the first video](https://youtube.com/@aparsoft) and code along!