{"id":33084933,"url":"https://github.com/the-boring-education/tbe-web","last_synced_at":"2026-05-02T10:03:47.125Z","repository":{"id":215480461,"uuid":"736328042","full_name":"The-Boring-Education/TBE-Web","owner":"The-Boring-Education","description":"Building Open Source Tech Education App For 🇮🇳 ","archived":false,"fork":false,"pushed_at":"2026-04-03T01:49:16.000Z","size":35388,"stargazers_count":18,"open_issues_count":32,"forks_count":63,"subscribers_count":0,"default_branch":"production","last_synced_at":"2026-04-03T02:22:21.729Z","etag":null,"topics":["javascript","mongodb","nextjs","nodejs","opensource","reactjs","tailwind","typescript"],"latest_commit_sha":null,"homepage":"https://www.theboringeducation.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/The-Boring-Education.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-12-27T15:54:48.000Z","updated_at":"2026-04-02T19:23:32.000Z","dependencies_parsed_at":"2025-12-31T07:04:14.753Z","dependency_job_id":null,"html_url":"https://github.com/The-Boring-Education/TBE-Web","commit_stats":null,"previous_names":["the-boring-education/tbe-web"],"tags_count":47,"template":false,"template_full_name":null,"purl":"pkg:github/The-Boring-Education/TBE-Web","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Boring-Education%2FTBE-Web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Boring-Education%2FTBE-Web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Boring-Education%2FTBE-Web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Boring-Education%2FTBE-Web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/The-Boring-Education","download_url":"https://codeload.github.com/The-Boring-Education/TBE-Web/tar.gz/refs/heads/production","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Boring-Education%2FTBE-Web/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31540829,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"online","status_checked_at":"2026-04-08T02:00:06.127Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["javascript","mongodb","nextjs","nodejs","opensource","reactjs","tailwind","typescript"],"created_at":"2025-11-14T14:00:22.729Z","updated_at":"2026-04-08T05:02:46.578Z","avatar_url":"https://github.com/The-Boring-Education.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 TBE Platform\n\nA comprehensive Turborepo monorepo housing all The Boring Education frontend applications, shared packages, and centralized configurations.\n\n## 🏗️ Architecture Overview\n\n```\ntbe-platform/\n├── apps/                        # 📱 Applications\n│   ├── platform/               # 🏠 Main TBE platform (Port: 3000)\n│   ├── prep-yatra/             # 🧭 Interview preparation tool (Port: 3001)\n│   ├── quizes/                 # 🧠 Quiz platform (Port: 3002)\n│   ├── onboarding/             # 🎯 User onboarding flow (Port: 3003)\n│   ├── api/                    # 🌐 Centralized API service (Port: 3004)\n│   ├── techyatra/              # 🛠️ Tech learning journey\n│   ├── dsayatra/               # 📊 DSA practice platform\n│   ├── resume-yatra/           # 📄 Resume builder\n│   └── testing/                # 🧪 Testing suite (unit, API, E2E)\n├── packages/                    # 📦 Shared Packages\n│   ├── components/             # 💅 Shared UI components\n│   ├── hooks/                  # 🎣 Shared React hooks\n│   ├── utils/                  # ⚙️ Shared utilities\n│   ├── types/                  # 📄 TypeScript types\n│   ├── constants/              # 📋 Shared constants\n│   ├── services/               # 🔌 API services\n│   ├── auth/                   # 🔐 Authentication logic\n│   ├── interface/              # 🔗 Interface definitions\n│   ├── config/                 # ⚙️ Shared configurations\n│   ├── eslint-config/          # 🔍 ESLint configurations\n│   └── typescript-config/      # 🔧 TypeScript configurations\n└── .github/workflows/          # 🤖 CI/CD workflows\n```\n\n## 🛠️ Prerequisites\n\n- **Node.js**: \u003e= 20.x\n- **pnpm**: \u003e= 9.12.0 (Install: `npm install -g pnpm@9.15.9`)\n- **MongoDB**: For database operations (local or cloud)\n\n## 🚀 Quick Start\n\n### 1. Clone \u0026 Install\n\n```bash\n# Clone the repository\ngit clone \u003crepository-url\u003e\ncd tbe-platform\n\n# Install all dependencies\npnpm install\n```\n\n### 2. Environment Setup\n\nCopy the environment template and configure your variables:\n\n```bash\n# Copy environment template\ncp .env.example .env.local\n\n# Edit with your actual values\n# Required: MONGODB_URI, NEXTAUTH_SECRET, etc.\n```\n\n### 3. Development\n\n```bash\n# Start all applications\npnpm dev\n\n# Or run individual apps\npnpm dev:platform      # Main platform (localhost:3000)\npnpm dev:prep-yatra     # Prep Yatra (localhost:3001)\npnpm dev:quizes         # Quizes (localhost:3002)\npnpm dev:onboarding     # Onboarding (localhost:3003)\npnpm dev:api            # API service (localhost:3004)\npnpm dev:techyatra      # Tech Yatra\npnpm dev:dsayatra       # DSA Yatra\npnpm dev:resume-yatra   # Resume Yatra\n```\n\n## 📦 Applications\n\n| App              | Port | Framework    | Description                                          |\n| ---------------- | ---- | ------------ | ---------------------------------------------------- |\n| **platform**     | 3000 | Next.js      | Main TBE platform with courses, projects, interviews |\n| **prep-yatra**   | 3001 | Next.js      | Comprehensive interview preparation platform         |\n| **quizes**       | 3002 | Next.js      | Interactive quiz platform with analytics             |\n| **onboarding**   | 3003 | Vite + React | User onboarding and registration flow                |\n| **api**          | 3004 | Next.js API  | Centralized API service for all apps                 |\n| **techyatra**    | -    | Next.js      | Technology learning roadmaps                         |\n| **dsayatra**     | -    | Next.js      | Data structures \u0026 algorithms practice                |\n| **resume-yatra** | -    | Next.js      | Professional resume builder                          |\n\n## 🔧 Development Commands\n\n### Building\n\n```bash\n# Build all applications\npnpm build\n\n# Build specific apps\npnpm build:platform\npnpm build:prep-yatra\npnpm build:quizes\npnpm build:onboarding\npnpm build:api\n```\n\n### Code Quality\n\n```bash\n# Lint all packages\npnpm lint\n\n# Format code\npnpm format\n\n# Type checking\npnpm check-types\n```\n\n### Package Management\n\n```bash\n# Install dependencies for all packages\npnpm install\n\n# Add dependency to specific app\npnpm --filter @tbe/platform add \u003cpackage\u003e\n\n# Add dependency to workspace root\npnpm add -w \u003cpackage\u003e\n```\n\n## 📚 Shared Packages\n\nAll applications use these shared packages:\n\n- `@tbe/components` - 300+ UI components (buttons, modals, forms, etc.)\n- `@tbe/hooks` - 30+ React hooks (auth, API, analytics, etc.)\n- `@tbe/utils` - Utilities (auth, database, API helpers)\n- `@tbe/types` - TypeScript interfaces and types\n- `@tbe/constants` - Shared constants and configurations\n- `@tbe/services` - API service functions\n- `@tbe/auth` - Authentication logic and components\n\n### Usage Example\n\n```typescript\n// Import UI components\nimport { Button, Card, Modal } from \"@tbe/components\";\n\n// Import hooks\nimport { useAuth, useApi } from \"@tbe/hooks\";\n\n// Import utilities\nimport { connectToDatabase, sendRequest } from \"@tbe/utils\";\n\n// Import types\nimport { User, APIResponse } from \"@tbe/types\";\n```\n\n## 🚀 Deployment\n\n### API Deployment (Google Cloud Run)\n\n```bash\ncd apps/api\n./deploy.sh\n```\n\n### Frontend Deployment (Vercel)\n\nEach app is configured for Vercel deployment with automatic builds on push.\n\n## 🤖 CI/CD\n\nGitHub Actions automatically run on PRs to `development` and `production`:\n\n- **Build Check**: Ensures all apps build successfully\n- **Lint Check**: Code quality and formatting validation\n- **Type Check**: TypeScript type safety verification\n\n## 🔐 Environment Variables\n\n### Shared Variables (Root `.env.local`)\n\n```bash\n# Database\nMONGODB_URI=mongodb://localhost:27017/tbe-platform\n\n# Authentication\nNEXTAUTH_SECRET=your-secret-key\nGOOGLE_AUTH_CLIENT_ID=your-google-client-id\nGOOGLE_AUTH_CLIENT_SECRET=your-google-client-secret\n\n# External APIs\nOPENAI_API_KEY=your-openai-key\nYOUTUBE_API_KEY=your-youtube-key\n\n# Payment\nCASHFREE_CLIENT_ID=your-cashfree-id\nCASHFREE_SECRET_KEY=your-cashfree-secret\n\n# Monitoring\nNEXT_PUBLIC_SENTRY_DSN=your-sentry-dsn\n```\n\n### App-Specific Variables\n\nEach app can override shared variables with its own `.env.local` file.\n\n## 🔍 SEO \u0026 Indexability\n\nAutomated SEO tooling for all TBE apps.\n\n### SEO Auditing\n\n```bash\n# Run Lighthouse SEO audit locally (requires apps running)\npnpm seo:audit\n\n# Run against production URLs\npnpm seo:audit:prod\n```\n\n### Sitemap Generation\n\nSitemaps and robots.txt are automatically generated during build via `next-sitemap`:\n\n```bash\n# Build any app - sitemap is generated in postbuild\npnpm build:platform\n# Output: public/sitemap.xml, public/robots.txt\n```\n\n### SEO Inspector\n\nVisual dashboard for monitoring SEO health across all apps:\n\n```bash\n# Start the SEO Inspector\ncd apps/testing\npnpm dev\n# Open http://localhost:3099/seo\n```\n\nFeatures:\n\n- View Lighthouse scores for all apps\n- Validate meta tags for any URL\n- Monitor route priorities and indexing status\n- Track SEO improvements over time\n\n### JSON-LD Structured Data\n\nThe SEO component supports rich snippets via JSON-LD:\n\n```tsx\nimport { SEO } from \"@tbe/components\"\n\n// Course page with structured data\n\u003cSEO\n  seoMeta={seoMeta}\n  schema={{\n    type: \"Course\",\n    course: {\n      name: \"JavaScript Basics\",\n      description: \"Learn JavaScript from scratch\",\n      skillLevel: \"Beginner\"\n    }\n  }}\n/\u003e\n\n// FAQ page\n\u003cSEO\n  seoMeta={seoMeta}\n  schema={{\n    type: \"FAQPage\",\n    faq: [\n      { question: \"What is React?\", answer: \"A JavaScript library...\" }\n    ]\n  }}\n/\u003e\n```\n\n### CI/CD Integration\n\nLighthouse audits run automatically:\n\n- On every push to `production` branch\n- Weekly on Monday at 6 AM UTC\n- Manual trigger via GitHub Actions\n\nThresholds:\n\n- SEO: 85% minimum (fails build if below)\n- Accessibility: 80% warning\n- Best Practices: 75% warning\n\n## 🧪 Testing\n\nComprehensive testing suite with **Vitest** and **MSW** located in `apps/testing/`.\n\n```bash\n# Run all tests\npnpm test\n\n# Development workflow\npnpm test:unit:watch     # Watch mode (fast feedback)\npnpm test:unit           # Unit tests (components, hooks, utils)\npnpm test:api            # API endpoint tests\npnpm test:coverage       # Generate coverage report\n```\n\n**Coverage Requirements:** 70% statements, 65% branches\n\n**CI/CD:** Tests run automatically on PRs to `development` and `production` branches.\n\n**Documentation:** See [`apps/testing/README.md`](apps/testing/README.md) for detailed guide\n\n**Code stability backlog:** Refactor, quality, and test expansion tasks live in [`docs/code-stability.md`](docs/code-stability.md) (checkboxes for parallel work).\n\n## 📖 Contributing\n\n1. **Fork** the repository\n2. **Create** a feature branch: `git checkout -b feature/amazing-feature`\n3. **Commit** changes: `git commit -m 'Add amazing feature'`\n4. **Push** to branch: `git push origin feature/amazing-feature`\n5. **Open** a Pull Request\n\n### Development Guidelines\n\n- Follow the existing code style and conventions\n- Write meaningful commit messages\n- Add tests for new features\n- Update documentation as needed\n- Ensure all CI checks pass\n\n### Adding a New App\n\n1. Create app directory in `apps/`\n2. Configure `package.json` with shared packages\n3. Add scripts to root `package.json`\n4. Update this README with app details\n\n## 🐛 Troubleshooting\n\n### Common Issues\n\n**Build Failures:**\n\n```bash\n# Clear all node_modules and reinstall\npnpm clean\npnpm install\n```\n\n**Port Conflicts:**\n\n```bash\n# Kill processes on specific ports\nnpx kill-port 3000 3001 3002 3003 3004\n```\n\n**TypeScript Errors:**\n\n```bash\n# Clear TypeScript cache\npnpm clean\npnpm check-types\n```\n\n## 📞 Support\n\n- **Issues**: [GitHub Issues](https://github.com/your-org/tbe-platform/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/your-org/tbe-platform/discussions)\n- **Documentation**: Check individual app README files\n\n---\n\n**Built with ❤️ by The Boring Education Team**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthe-boring-education%2Ftbe-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthe-boring-education%2Ftbe-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthe-boring-education%2Ftbe-web/lists"}