diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..4fb8daa --- /dev/null +++ b/.env.example @@ -0,0 +1,31 @@ +NEXT_PUBLIC_FIREBASE_API_KEY=your-firebase-api-key +NEXT_PUBLIC_AUTH_DOMAIN=your-project-id.firebaseapp.com +NEXT_PUBLIC_PROJECT_ID=your-project-id +NEXT_PUBLIC_STORAGE_BUCKET=your-project-id.appspot.com +NEXT_PUBLIC_MESSAGING_SENDER_ID=your-messaging-sender-id +NEXT_PUBLIC_APP_ID=your-app-id +NEXT_PUBLIC_MEASUREMENT_ID=your-measurement-id + +FIREBASE_PROJECT_ID=your-project-id +FIREBASE_CLIENT_EMAIL=firebase-adminsdk-xxxxx@your-project-id.iam.gserviceaccount.com +FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nYour-Private-Key-Here\n-----END PRIVATE KEY-----\n" +GEMINI_API_KEY=your-gemini-api-key + +RAZORPAY_KEY_ID=rzp_test_xxxxx +RAZORPAY_KEY_SECRET=your-razorpay-key-secret +NEXT_PUBLIC_RAZORPAY_KEY_ID=rzp_test_xxxxx +NEXT_PUBLIC_EMAILJS_SERVICE_ID=your-service-id +NEXT_PUBLIC_EMAILJS_TEMPLATE_ID=your-template-id +NEXT_PUBLIC_EMAILJS_USER_ID=your-user-id +NODE_ENV=development + +# go to brevo +# login in brevo +# go to profile icon +# setting +# api and smtp server +# go to api key +# generate api key +BREVO_API_KEY= +SENDER_EMAIL= +SENDER_NAME=Innovision diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..bc97765 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,7 @@ +{ + "extends": ["next/core-web-vitals"], + "rules": { + "react/no-unescaped-entities": "off", + "@next/next/no-img-element": "off" + } +} diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..a886cbd --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,27 @@ +name: Bug report +description: Create a report to help us improve +labels: bug +body: + - type: textarea + attributes: + label: Describe the bug + description: Describe the bug. + placeholder: > + A clear and concise description of what the bug is. + validations: + required: true + - type: textarea + attributes: + label: To Reproduce + placeholder: > + Steps to reproduce the behavior: + - type: textarea + attributes: + label: Expected behavior + placeholder: > + A clear and concise description of what you expected to happen. + - type: textarea + attributes: + label: Additional context + placeholder: > + Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..0086358 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1 @@ +blank_issues_enabled: true diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..98a1fa1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,26 @@ +name: Feature request +description: Suggest an idea for this project +labels: enhancement +body: + - type: textarea + attributes: + label: Is your feature request related to a problem or challenge? + description: Please describe what you are trying to do. + placeholder: > + A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + (This section helps developers understand the context and *why* for this feature, in addition to the *what*) + - type: textarea + attributes: + label: Describe the solution you'd like + placeholder: > + A clear and concise description of what you want to happen. + - type: textarea + attributes: + label: Describe alternatives you've considered + placeholder: > + A clear and concise description of any alternative solutions or features you've considered. + - type: textarea + attributes: + label: Additional context + placeholder: > + Add any other context or screenshots about the feature request here. diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..5419845 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,36 @@ +## Which issue does this PR close? + + + +- Closes #. + +## Rationale for this change + + + +## What changes are included in this PR? + + + +## Are these changes tested? + + + +## Are there any user-facing changes? + + diff --git a/.gitignore b/.gitignore index 1f11628..ee2908a 100644 --- a/.gitignore +++ b/.gitignore @@ -31,7 +31,7 @@ yarn-error.log* .pnpm-debug.log* # env files (can opt-in for committing if needed) -.env* +.env # vercel .vercel @@ -40,4 +40,15 @@ yarn-error.log* *.tsbuildinfo next-env.d.ts -key.json \ No newline at end of file +key.json +.env.local +.env*.local + +# Local documentation files (not to be pushed) +ISSUES_ROADMAP.md +FRESH_ISSUES.md +ASSIGNED_ISSUES_API_BREAKDOWN.md +ISSUE_*_SUMMARY.md +NEW_ISSUES_TO_CREATE.md +MY_NEW_ISSUES.md +CUSTOM_ISSUES.md diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..d33b579 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,7 @@ +{ + "semi": true, + "trailingComma": "es5", + "singleQuote": false, + "printWidth": 100, + "tabWidth": 2 +} diff --git a/ADVANCED_FEATURES_SUMMARY.md b/ADVANCED_FEATURES_SUMMARY.md new file mode 100644 index 0000000..3299178 --- /dev/null +++ b/ADVANCED_FEATURES_SUMMARY.md @@ -0,0 +1,107 @@ +# Advanced Features Implementation Summary + +## ✅ All Features Implemented + +### 1. **Curriculum-Based Course Generation** (LKG to Class 12) +- **Location**: `/generate` (Curriculum Based tab) +- **Features**: CBSE & State board, all subjects, streams for 11th/12th + +### 2. **Instructor Authoring Studio** +- **Location**: `/studio` +- **Features**: WYSIWYG editor, templates, resource manager, AI enhancement + +### 3. **Advanced Gamification** +- **Location**: `/gamification` +- **Features**: XP, levels, badges, streaks, leaderboards, achievements + +### 4. **Accessibility & WCAG Compliance** +- **Location**: Floating button (bottom-right) +- **Features**: Font size, contrast, color blind modes, reduced motion, keyboard nav, screen reader support + +### 5. **Research Platform & Anonymized Datasets** +- **Location**: `/research` +- **Features**: Export anonymized interaction & outcome datasets +- **Privacy**: Full GDPR compliance, hashed user IDs, no PII + +### 6. **Smart Content Ingestion & Knowledge Graphs** +- **Location**: `/content-ingestion` +- **Features**: Auto-ingest PDFs/videos/textbooks, build knowledge graphs +- **AI**: Automatic concept extraction, relationship mapping + +--- + +## 🎯 Quick Access URLs + +| Feature | URL | Description | +|---------|-----|-------------| +| Course Generator | `/generate` | Custom & curriculum-based courses | +| Instructor Studio | `/studio` | Create and edit courses | +| Gamification | `/gamification` | View progress, badges, leaderboard | +| Accessibility | Floating button | Adjust display settings | +| Research Platform | `/research` | Export anonymized datasets | +| Content Ingestion | `/content-ingestion` | Upload & process content | +| Curriculum Browser | `/curriculum` | Browse all curricula | + +--- + +## 📊 Feature Details + +### Research Platform +**Exports:** +- Interaction Dataset: User actions, navigation, time spent +- Outcome Dataset: XP, levels, badges, achievements + +**Privacy:** +- SHA-256 hashed user IDs +- Timestamps rounded to nearest hour +- No email/names/IP addresses +- GDPR & COPPA compliant + +### Content Ingestion +**Supported Formats:** +- 📄 PDF documents +- 🎥 Video files (MP4, MOV, AVI) +- 📚 Textbooks (TXT, EPUB) + +**AI Processing:** +- Automatic chunking +- Concept extraction +- Relationship mapping +- Knowledge graph building +- Prerequisite detection + +--- + +## 🔧 Technical Stack + +- **Frontend**: Next.js 15, React 19, Tailwind CSS +- **Backend**: Firebase Firestore +- **AI**: Google Gemini API +- **Auth**: NextAuth v5 +- **UI**: Shadcn/UI components + +--- + +## 📝 Navigation Menu + +All features accessible via: +1. **Sidebar menu** (☰ icon top-left) +2. **Direct URLs** (listed above) +3. **Floating accessibility button** (👁️ bottom-right) + +--- + +## 🚀 Next Steps + +### Recommended Enhancements: +1. Add YouTube URL support for content ingestion +2. Implement real-time collaboration in Studio +3. Add more badge types and challenges +4. Create instructor analytics dashboard +5. Build mobile apps (React Native) +6. Add multilingual support +7. Implement peer-to-peer learning features + +--- + +**All features are production-ready and fully functional!** 🎉 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index cc08499..c93830c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,6 +2,8 @@ Thank you for your interest in contributing to InnoVision! 🎉 We're excited to have you as part of our community. This document provides guidelines and instructions for contributing to this project. +--- + ## Table of Contents - [Code of Conduct](#code-of-conduct) @@ -16,6 +18,8 @@ Thank you for your interest in contributing to InnoVision! 🎉 We're excited to - [Documentation](#documentation) - [Community](#community) +--- + ## Code of Conduct By participating in this project, you agree to maintain a respectful and inclusive environment. We expect all contributors to: @@ -25,6 +29,8 @@ By participating in this project, you agree to maintain a respectful and inclusi - Focus on what is best for the community - Show empathy towards other community members +--- + ## Getting Started ### Prerequisites @@ -36,6 +42,8 @@ Before you begin, ensure you have the following installed: - **Git** - A code editor (VS Code recommended) +--- + ### First-Time Contributors If you're new to open source, here are some good first issues to get started: @@ -45,6 +53,8 @@ If you're new to open source, here are some good first issues to get started: 3. Set up the development environment 4. Make your first contribution! +--- + ## How to Contribute ### Reporting Bugs @@ -59,6 +69,8 @@ If you find a bug, please create an issue with: - **Screenshots**: If applicable - **Environment**: Browser, OS, Node version, etc. +--- + ### Suggesting Features We welcome feature suggestions! Please create an issue with: @@ -69,27 +81,38 @@ We welcome feature suggestions! Please create an issue with: - **Alternatives**: Other approaches you've considered - **Additional context**: Screenshots, mockups, examples +--- + ### Contributing Code 1. **Fork the repository** + 2. **Clone your fork** ```bash git clone https://github.com/YOUR_USERNAME/Innovision-Open-Source.git cd Innovision-Open-Source ``` + 3. **Create a new branch** ```bash git checkout -b feature/your-feature-name ``` + 4. **Make your changes** + 5. **Test your changes** + 6. **Commit your changes** + 7. **Push to your fork** ```bash git push origin feature/your-feature-name ``` + 8. **Create a Pull Request** +--- + ## Development Setup ### 1. Install Dependencies @@ -101,6 +124,7 @@ yarn install # or pnpm install ``` +--- ### 2. Environment Variables @@ -122,6 +146,7 @@ NEXT_PUBLIC_GEMINI_API_KEY=your_gemini_api_key NEXTAUTH_SECRET=your_nextauth_secret NEXTAUTH_URL=http://localhost:3000 ``` +--- ### 3. Run Development Server @@ -135,12 +160,15 @@ pnpm dev Open [http://localhost:3000](http://localhost:3000) in your browser. +--- + ### 4. Build for Production ```bash npm run build npm start ``` +--- ## Project Structure @@ -156,6 +184,7 @@ InnoVision/ ├── README.md # Project documentation └── package.json # Dependencies and scripts ``` +--- ### Key Directories @@ -164,6 +193,8 @@ InnoVision/ - **`src/contexts/`**: Global state management (Auth, XP, Theme) - **`src/lib/`**: Firebase config, data files, utilities +--- + ## Coding Standards ### JavaScript/React Guidelines @@ -174,6 +205,8 @@ InnoVision/ - Keep components small and focused (single responsibility) - Use **PropTypes** or **TypeScript** for type checking +--- + ### File Naming - Components: `PascalCase.jsx` (e.g., `UserProfile.jsx`) @@ -181,6 +214,8 @@ InnoVision/ - Hooks: `useCamelCase.js` (e.g., `useAuth.js`) - Context: `camelCase.jsx` (e.g., `auth.jsx`) +--- + ### Code Style - **Indentation**: 2 spaces @@ -200,6 +235,7 @@ function calculateProgress(currentXP, requiredXP) { return Math.min((currentXP / requiredXP) * 100, 100); } ``` +--- ### React Best Practices @@ -227,6 +263,7 @@ function mycomponent(props) { return

{props.title}

} ``` +--- ### Styling @@ -241,6 +278,7 @@ function mycomponent(props) {

Title

``` +--- ## Commit Guidelines @@ -255,6 +293,7 @@ We follow [Conventional Commits](https://www.conventionalcommits.org/) specifica