{"id":26770586,"url":"https://github.com/arsenic-01/studystack","last_synced_at":"2026-04-29T18:34:05.866Z","repository":{"id":274662461,"uuid":"923625523","full_name":"Arsenic-01/studystack","owner":"Arsenic-01","description":"Study Stack is a platform where teachers/faculty can upload notes and resources for their respected subjects and students can access them, much like google classroom, but better.","archived":false,"fork":false,"pushed_at":"2026-03-01T19:35:30.000Z","size":40725,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-01T21:54:06.510Z","etag":null,"topics":["appwrite-database","appwrite-storage","authentication","aws-s3","diploma-project","msbte","nextjs15","notes-app","resend","tailwindcss"],"latest_commit_sha":null,"homepage":"https://studystack01.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Arsenic-01.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2025-01-28T15:29:50.000Z","updated_at":"2026-03-01T19:35:33.000Z","dependencies_parsed_at":"2025-02-15T12:22:52.322Z","dependency_job_id":"e191e164-08bf-4d5e-bdbf-1d2cfea054a3","html_url":"https://github.com/Arsenic-01/studystack","commit_stats":null,"previous_names":["arsenic-01/studystack"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Arsenic-01/studystack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Arsenic-01%2Fstudystack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Arsenic-01%2Fstudystack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Arsenic-01%2Fstudystack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Arsenic-01%2Fstudystack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Arsenic-01","download_url":"https://codeload.github.com/Arsenic-01/studystack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Arsenic-01%2Fstudystack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32439217,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T18:12:22.909Z","status":"ssl_error","status_checked_at":"2026-04-29T18:11:33.322Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["appwrite-database","appwrite-storage","authentication","aws-s3","diploma-project","msbte","nextjs15","notes-app","resend","tailwindcss"],"created_at":"2025-03-28T23:15:54.193Z","updated_at":"2026-04-29T18:34:05.859Z","avatar_url":"https://github.com/Arsenic-01.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📚 StudyStack\n\nA centralized, high-performance platform for students and teachers to manage and share study materials efficiently with advanced Google Drive integration and separate admin panel architecture.\n\n🔗 **Live Website:** [StudyStack](https://studystack01.vercel.app/)  \n🔗 **Source Code:** [GitHub Repository](https://github.com/Arsenic-01/studystack)\n\n---\n\n## 🎥 Demo\n\n[![StudyStack Demo](https://img.youtube.com/vi/bcyYHZSmW88/0.jpg)](https://youtu.be/bcyYHZSmW88)\n\n_Click the image above to watch the video demo._\n\n---\n\n## 🚀 About StudyStack\n\nStudyStack is a comprehensive **educational content management platform** designed for colleges and educational institutions where:\n\n- **Students** can browse, search, and download study materials with lightning-fast performance\n- **Teachers** can upload and manage study materials directly through Google Drive integration\n- **Admins** have dedicated dashboard with full control over content, users, and system analytics\n\nBuilt with modern architecture principles, it provides a **scalable, secure, and highly performant** solution for academic content sharing.\n\n---\n\n## 🌟 Key Features\n\n✅ **Role-based Access Control (RBAC)** with dedicated dashboards for Students, Teachers, and Admins  \n✅ **Direct Google Drive Integration** for unlimited storage and seamless file management  \n✅ **Separated Admin Panel** for enhanced security and specialized administration  \n✅ **Advanced Search \u0026 Filtering** powered by Algolia for instant content discovery  \n✅ **Real-time Analytics** with PostHog integration for usage insights  \n✅ **Modern Authentication** with NextAuth.js and JWT token management  \n✅ **Responsive Design** with shadcn/ui and Tailwind CSS for optimal user experience  \n✅ **Email Notifications** via Resend for important updates  \n✅ **Quiz Management System** with Google Forms integration  \n✅ **YouTube Video Integration** for multimedia learning resources\n\n### ⚡ Performance \u0026 Scalability Optimizations\n\nThis project implements enterprise-grade optimizations for maximum performance:\n\n- **Server-Side Pagination with Hybrid Rendering**: Initial page loads server-rendered for instant display, subsequent pages fetched client-side with TanStack Query for smooth UX\n\n- **Advanced Caching Strategy**: Multi-layered caching with client-side staleTime optimization and dedicated cache collection for frequently accessed data\n\n- **Direct-to-Drive Resumable Uploads**: Serverless file uploads directly from client to Google Drive, eliminating proxy bottlenecks and size limitations\n\n- **Intelligent Database Indexing**: Optimized Appwrite collections with strategic indexing on frequently queried fields (title, abbreviation, semester, etc.)\n\n- **Hybrid Token Management**: Dual-layer Google Drive authentication with proactive cron job renewal and fallback server-side logic ensuring 99.9% uptime\n\n- **Scalable Admin Architecture**: Separated admin panel with optimized queries that handle massive datasets by fetching statistics separately from paginated content\n\n- **Smart Search Implementation**: Algolia-powered search with real-time synchronization across Notes, YouTube videos, Quizzes, and Subjects\n\n---\n\n## 🛠️ Complete Tech Stack\n\n### **Frontend \u0026 UI**\n\n- ⚡ **Next.js 15** (App Router, React Server Components)\n- 🎨 **Tailwind CSS** with **shadcn/ui** components\n- 🚀 **React 19** with modern hooks and suspense\n- 📱 **Responsive Design** with **HeroUI** and **Aceternity UI**\n- ✨ **Animations** with **Framer Motion** and **Magic UI**\n\n### **Backend \u0026 Database**\n\n- 🗄️ **Appwrite** (Database, Authentication, Storage, Cloud Functions)\n- ☁️ **Vercel** (Hosting, Serverless Functions, Edge Runtime)\n- 🔍 **Google Drive API** (Primary file storage and management)\n\n### **State Management \u0026 Data**\n\n- 🏗️ **Zustand** (Global state management)\n- 🔄 **TanStack Query (React Query)** (Server state, caching, mutations)\n- 📊 **TanStack Table** (Advanced data tables with sorting/filtering)\n- 🔍 **Algolia** (Search engine with real-time indexing)\n\n### **Authentication \u0026 Security**\n\n- 🔐 **NextAuth.js** (Authentication provider)\n- 🎫 **JWT** (Token-based authentication)\n- 🔄 **Custom session management** with automatic token renewal\n\n### **External Integrations**\n\n- 📧 **Resend** (Contact email service)\n- 📊 **PostHog** (Analytics and user behavior tracking)\n- 🚨 **Sentry** (Error monitoring and performance tracking)\n- 📋 **Google Forms** (Quiz and form integration)\n\n### **Development \u0026 Deployment**\n\n- 📦 **TurboRepo** (Monorepo management)\n- 🐳 **Docker** (Containerization for consistent environments)\n- 🔧 **TypeScript** (Type safety and developer experience)\n- 📝 **React Hook Form** with **Zod** (Form handling and validation)\n- 🎨 **Figma** (Design system and prototyping)\n- 📮 **Postman** (API testing and documentation)\n\n---\n\n## 📊 Database Architecture\n\nThe platform uses Appwrite with the following optimized collections:\n\n### Core Collections\n\n- **Users**: User profiles with role-based permissions and session management\n- **Notes**: Study materials with metadata, file references, and search indexing\n- **Subjects**: Subject catalog with hierarchical organization\n- **Youtube**: Video resources with embedding and metadata\n- **Quiz**: Assessment system with Google Forms integration\n\n### System Collections\n\n- **Cache**: Performance optimization with uploader statistics and frequently accessed data\n- **DriveAPIAccessToken**: Google Drive authentication with automatic renewal\n- **Session**: Custom session management for enhanced security\n\nAll collections feature strategic indexing on frequently queried fields for optimal performance.\n\n---\n\n## ⚙️ Environment Configuration\n\nCreate a `.env.local` file with the following variables:\n\n### Appwrite Configuration\n\n```env\nPROJECT_ID=your_appwrite_project_id\nAPI_KEY=your_appwrite_api_key\nDATABASE_ID=your_database_id\nUSER_COLLECTION_ID=your_users_collection\nNOTE_COLLECTION_ID=your_notes_collection\nSUBJECT_COLLECTION_ID=your_subjects_collection\nYOUTUBE_COLLECTION_ID=your_youtube_collection\nLOGIN_COLLECTION_ID=your_login_collection\nFORM_COLLECTION_ID=your_forms_collection\nCACHE_COLLECTION_ID=your_cache_collection\nUPLOADERS_CACHE_DOCUMENT_ID=your_cache_doc_id\n```\n\n### Google Drive Integration\n\n```env\nGOOGLE_REFRESH_TOKEN_COLLECTION_ID=your_refresh_token_collection\nGOOGLE_DRIVE_TOKEN_DOC_ID=your_token_document_id\nGOOGLE_CLIENT_SECRET=your_google_client_secret\nGOOGLE_CLIENT_ID=your_google_client_id\nGOOGLE_REFRESH_TOKEN=your_google_refresh_token\n```\n\n### Search \u0026 Analytics\n\n```env\nNEXT_PUBLIC_ALGOLIA_APP_ID=your_algolia_app_id\nALGOLIA_ADMIN_KEY=your_algolia_admin_key\nNEXT_PUBLIC_ALGOLIA_SEARCH_KEY=your_algolia_search_key\nNEXT_PUBLIC_ALGOLIA_INDEX_NAME=your_algolia_index\n```\n\n### Authentication \u0026 Security\n\n```env\nNEXTAUTH_URL=your_app_url\nNEXTAUTH_SECRET=your_nextauth_secret\n```\n\n### External Services\n\n```env\nNEXT_PUBLIC_POSTHOG_KEY=your_posthog_key\nNEXT_PUBLIC_POSTHOG_HOST=your_posthog_host\nRESEND_API_KEY=your_resend_api_key\nREVALIDATION_TOKEN=your_revalidation_token\n```\n\n### App Configuration\n\n```env\nNEXT_PUBLIC_ENDPOINT=https://cloud.appwrite.io/v1\nNEXT_PUBLIC_BASE_URL=your_deployed_app_url\n```\n\n---\n\n## 🔧 Setup \u0026 Installation\n\n### Prerequisites\n\n- Node.js 18+\n- npm or yarn\n- Appwrite account and project\n- Google Cloud Console project with Drive API enabled\n- Algolia account for search functionality\n\n### Installation Steps\n\n1️⃣ **Clone the Repository**\n\n```bash\ngit clone https://github.com/Arsenic-01/studystack.git\ncd studystack\n```\n\n2️⃣ **Install Dependencies**\n\n```bash\nnpm install\n```\n\n3️⃣ **Environment Setup**\n\n- Copy `.env.example` to `.env.local`\n- Fill in all required environment variables\n- Configure Google Drive API credentials\n- Set up Appwrite collections and database\n\n4️⃣ **Database Setup**\n\n- Create Appwrite collections matching the schema\n- Set up proper indexing for performance\n- Configure collection permissions for different user roles\n\n5️⃣ **External Service Configuration**\n\n- Configure Algolia search indexes\n- Set up PostHog analytics\n- Configure Resend email templates\n- Set up Sentry error monitoring\n\n6️⃣ **Run Development Server**\n\n```bash\nnpm run dev\n```\n\nVisit `http://localhost:3000` to view the application locally.\n\n---\n\n## 🏗️ Architecture Overview\n\nStudyStack follows a modern, scalable architecture:\n\n### Frontend Architecture\n\n- **App Router**: Next.js 15 with server-side rendering and client-side hydration\n- **Component System**: Reusable UI components with shadcn/ui and custom components\n- **State Management**: Zustand for global state, TanStack Query for server state\n- **Performance**: Optimized with React Server Components and strategic caching\n\n### Backend Architecture\n\n- **Serverless Functions**: Vercel edge functions for API routes\n- **Database**: Appwrite with optimized collections and indexing\n- **File Storage**: Google Drive API with direct uploads and token management\n- **Search**: Algolia with real-time synchronization\n\n### Security Architecture\n\n- **Authentication**: NextAuth.js with multiple providers\n- **Authorization**: Role-based access control with session validation\n- **Data Protection**: Encrypted tokens and secure API endpoints\n\n---\n\n## 📱 User Roles \u0026 Permissions\n\n### Students\n\n- Browse and search study materials\n- Download notes and resources\n- Access YouTube video content\n- Take quizzes and assessments\n- View personal dashboard\n\n### Teachers\n\n- Upload and manage study materials\n- Organize content by subjects and semesters\n- Share YouTube video resources\n- Create and manage quizzes\n- View upload statistics\n\n### Admins\n\n- Full system administration access\n- User management and role assignment\n- Content moderation and approval\n- System analytics and reporting\n- Database management tools\n\n---\n\n## 🤝 Contributing\n\nWe welcome contributions from the community! Here's how to get started:\n\n1. **Fork the repository**\n2. **Create a feature branch**: `git checkout -b feature/amazing-feature`\n3. **Make your changes** and ensure they follow the coding standards\n4. **Test thoroughly** with the existing test suite\n5. **Commit your changes**: `git commit -m \"Add amazing feature\"`\n6. **Push to your branch**: `git push origin feature/amazing-feature`\n7. **Submit a pull request** with a detailed description\n\n### Development Guidelines\n\n- Follow TypeScript best practices\n- Write meaningful commit messages\n- Update documentation for new features\n- Ensure responsive design compatibility\n- Test across different user roles\n\n---\n\n## 📈 Performance Metrics\n\nStudyStack is optimized for enterprise-scale performance:\n\n- **Page Load Time**: \u003c 2 seconds for initial load\n- **Search Response**: \u003c 100ms with Algolia\n- **File Upload**: Direct to Google Drive (no size limits)\n- **Database Queries**: Optimized with strategic indexing\n- **Caching**: Multi-layer caching for instant navigation\n\n---\n\n## 🔄 Deployment\n\n### Vercel Deployment (Recommended)\n\n1. Connect your GitHub repository to Vercel\n2. Configure environment variables in Vercel dashboard\n3. Deploy with automatic CI/CD pipeline\n\n### Manual Deployment\n\n```bash\nnpm run build\nnpm start\n```\n\n### Docker Deployment\n\n```bash\ndocker build -t studystack .\ndocker run -p 3000:3000 studystack\n```\n\n---\n\n## 📜 License\n\nCopyright (c) 2024-present, **Vedant Bhor**.\n\nThis project is licensed under the MIT License. See the [LICENSE.md](LICENSE.md) file for details.\n\n---\n\n## 📞 Support \u0026 Contact\n\nHaving trouble with StudyStack? We're here to help!\n\n📧 **Email**: [vedbhor25@gmail.com](mailto:vedbhor25@gmail.com)  \n🐦 **Twitter**: [@arsenic_dev](https://x.com/arsenic_dev)  \n💼 **LinkedIn**: [Vedant Bhor](https://www.linkedin.com/in/vedant-bhor-39287828b/)  \n🐛 **Issues**: [GitHub Issues](https://github.com/Arsenic-01/studystack/issues)\n\n---\n\n## 🙏 Acknowledgments\n\nSpecial thanks to:\n\n- Appwrite team for the excellent BaaS platform\n- Vercel for hosting and deployment infrastructure\n- All contributors and beta testers\n- Educational institutions using StudyStack\n\n---\n\n_Built with ❤️ for the education community_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farsenic-01%2Fstudystack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farsenic-01%2Fstudystack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farsenic-01%2Fstudystack/lists"}