Modern AI chatbot for Samrat Ashok Technological Institute (SATI) with dual AI providers, academic resources hub, user authentication, and advanced UI features.
- 🤖 Dual AI Support: Google Gemini & Groq APIs with serverless functions
- 🔐 User Authentication: Google & GitHub sign-in with Supabase
- 📖 Resources Hub: Notes, assignments, test papers, syllabus & PYQs with PDF preview
- 💾 Chat Management: Save, bookmark, search, and organize conversations
- 🎨 Modern UI: Dark/light themes with smooth animations
- 📚 SATI Knowledge: Comprehensive institute information
- 🔧 Model Switching: Dynamic AI model selection
- 🌐 SEO Optimized: Complete meta tags, sitemap
- 📱 PWA Ready: Mobile-responsive with app-like experience
# Clone repository
git clone https://github.com/SAFAL-TIWARI/SATI-ChatBot.git
cd SATI-ChatBot
# Run locally
npm start
# Opens at http://localhost:8000
Create .env.local
file:
GEMINI_API_KEY=your_gemini_api_key_here
GROQ_API_KEY=your_groq_api_key_here
SUPABASE_URL=your_supabase_project_url
SUPABASE_ANON_KEY=your_supabase_anon_key
Get API keys from:
- Google AI Studio (Gemini)
- Groq Console (Groq)
- Supabase (Authentication & Database)
SATI-ChatBot/
├── index.html # Main chatbot interface
├── resources.html # Academic resources page
├── about.html # About page
├── contact.html # Contact page
├── privacy-policy.html # Privacy policy page
├── terms-of-service.html # Terms of service page
├── 404.html # Custom 404 error page
├── styles.css # Main styling
├── script.js # Core chatbot functionality
├── api-integration.js # Frontend API management
├── sati-knowledge.js # Institute knowledge base
├── supabase-db.js # Database operations
├── cool-mode.js # Particle animation effects
├── smooth-cursor.js # Smooth cursor animations
├── glowing-effect.js # Glowing effect animations
├── config.js # Configuration
├── manifest.json # PWA manifest
├── vercel.json # Vercel deployment config
├── package.json # Node.js dependencies
├── sitemap.xml # SEO sitemap
├── robots.txt # Search engine directives
├── security.txt # Security policy
├── ads.txt # Ad network verification
├── seo-config.json # SEO configuration
├── .env.example # Environment variables template
├── api/ # Serverless functions
│ ├── gemini.js # Gemini API endpoint
│ ├── groq.js # Groq API endpoint
│ └── supabase-config.js # Database configuration
|── resources/ # Academic resources folder
│ ├──materials.html # Materials page
│ ├── materials.css # Materials CSS stylesheet
│ └── materials.js # Materials JS scripts
├── android/ # Android WebView App
│ ├── app/ # Android app source
│ │ ├── src/main/ # Main source directory
│ │ │ ├── java/com/thunder/satichatbot/
│ │ │ │ └── MainActivity.java # WebView activity
│ │ │ ├── res/ # Android resources
│ │ │ ├── assets/# Web assets
│ │ │ └── AndroidManifest.xml # App manifest
│ │ └── build.gradle # App build configuration
│ ├── gradle/ # Gradle wrapper
│ ├── build.gradle # Project build configuration
│ └── settings.gradle # Gradle settings
└── images/ # Assets and icons
Google Gemini: gemini-1.5-flash
, gemini-1.5-pro
Groq: llama-3.1-8b-instant
, llama-3.3-70b-versatile
, gemma2-9b-it
, deepseek-r1-distill-llama-70b
- Google OAuth: Sign in with Google account
- GitHub OAuth: Sign in with GitHub account
- User Profiles: Personalized experience with profile management
- Session Management: Secure authentication with Supabase
- Conversation History: Persistent chat storage
- Bookmark System: Save important conversations
- Search Functionality: Find conversations quickly
- Export Options: Download chat history
- Conversation Organization: Rename and categorize chats
- PDF Preview: View documents directly in browser
- Download Support: One-click download functionality
- Branch-wise Organization: Resources by department (CSE, ECE, ME, EE, CE, IoT, IT, BCT, AIADS, AIAML)
- Search & Filter: Find specific resources quickly
- Mobile Responsive: Access on any device
- XML Sitemap: Search engine optimization
- 404 Error Page: Custom error handling
- Privacy Policy & Terms: Legal compliance pages
- Connect GitHub repository to Vercel
- Set environment variables in Vercel dashboard:
GEMINI_API_KEY
GROQ_API_KEY
SUPABASE_URL
SUPABASE_ANON_KEY
- Deploy automatically
npm install -g vercel
vercel --prod
- Netlify: Supports serverless functions
- Railway: Direct deployment with environment variables
- Render: Static site with serverless functions
- API Handling | File Attachment | SSO login : solely inside the app , i.e. no need of redirecting to browsers
# Navigate to android directory
cd android
# Build debug APK
./gradlew assembleDebug
# Build release APK (requires signing)
./gradlew assembleRelease
# Install on connected device
./gradlew installDebug
- Minimum SDK: Android 11 (API 30)
- Target SDK: Android 14 (API 34)
- Architecture: WebView-based hybrid app
- Language: Java
- Build System: Gradle
- Dependencies: AndroidX AppCompat, Material Design Components
- MainActivity.java: Main WebView activity with all native integrations
- AndroidManifest.xml: App permissions and configuration
- JSBridge: JavaScript-Android communication interface
- File Download: Native Android download manager integration
- URL Routing: Smart handling of external links and intents
<!-- Key permissions in AndroidManifest.xml -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
- Download the APK from releases
- Enable "Install from Unknown Sources" in Android settings
- Install the APK file
- Launch "SATI ChatBot" from app drawer
Currently App devlopment is in progress :)
Team Members:
- Safal Tiwari - Frontend Development, Project Architecture
- Utkarsh Vishwakarma - Backend Development, DB Management, API & SSO Integration
- Aashutosh Singh Baghel - Presentator, UI/UX Design and Android App dev
- Hardik Kumar Sinha - Quality Assurance, Professional Tester, Documentation
Web Application: https://sati-chatbot.vercel.app/
Android App: Available in the android/
directory - build locally or download APK from releases
Repository: https://github.com/UtkiVish/supabase_cleaning.git
Automated Node.js script with GitHub Actions that cleans up user-uploaded files from Supabase Storage every 5 minutes to manage storage costs and maintain privacy.
Sub-Repo Author: Utkarsh Vishwakarma
MIT License