A modern, responsive web portal for BCA YCMOU students to access notes, e-books, previous year question papers, and solved practicals — all in one place.
Official URL: https://bcanotes.tech/
Built with Next.js, React 19, and Tailwind CSS 4.
- 📝 Notes — Comprehensive unit-wise notes for subjects across all semesters.
- 📖 E-Books — Online textbooks curated for the BCA YCMOU syllabus.
- 📄 Question Papers — Previous year question papers (2017–2024).
- 🧪 Practicals — Solved practicals for Semester 1 to 6.
- 📄 Advanced Document Viewer — Built-in
pdf.jsintegration for native PDF rendering and an intelligent iframe fallback with automatic blocked-provider detection (e.g., Zoho) to ensure a seamless reading experience. - 🤝 Contribute Portal — Direct Drag-and-Drop Google Drive upload integration via Google Apps Script.
- 🔐 Authentication — Secure Login & Signup pages powered by Firebase Auth with Google OAuth support.
- 📱 Responsive Design — Fully responsive with a mobile-friendly slide-out navigation.
- ⚡ Performance — Route-specific loading skeletons for a smooth UX and Vercel Analytics for tracking.
- 🎨 Modern UI — Clean, glassmorphism-inspired design with the Geist font, dark/light mode toggle, and interactive elements like a custom cursor follower.
- 🔍 SEO Optimized — Dynamic
sitemap.xml,robots.txt, and comprehensive meta tags for search engine visibility. - 📲 PWA Support — Web manifest and icons for a native app experience on mobile and desktop.
- 🛠️ Error Resilience — Custom 404 (Not Found) and global error boundary pages.
| Subject | Units |
|---|---|
| Problem Solving Using Computers | 8 |
| Programming Using C++ | 8 |
| Computer Network | 6 |
| Environmental Studies (E.V.S) | 7 |
| Data Structures & Algorithms (D.S.A) | 9 |
| Operating System | 8 |
| Web Technology | 8 |
| ... and many more! |
| Category | Technology |
|---|---|
| Framework | Next.js (App Router) |
| Library | React 19 |
| Styling | Tailwind CSS 4 |
| Language | TypeScript 5.9 |
| Authentication | Firebase 12 |
| Icons & UI | Lucide React, Base UI, Shadcn UI |
| Animations | Framer Motion |
| PDF Rendering | PDF.js |
| Analytics | Vercel Analytics |
bcanotes/
├── app/
│ ├── (auth)/ # Firebase Auth routes (login/signup)
│ ├── (main)/ # Main app pages (notes, books, profile, contribute)
│ ├── api/ # Next.js API routes
│ ├── viewer/ # Advanced document viewer with PDF.js & Iframe fallback
│ ├── layout.tsx # Root layout with SEO metadata & Providers
│ ├── robots.ts # Dynamic robots.txt
│ ├── sitemap.ts # Dynamic sitemap.xml
│ ├── manifest.ts # Web app manifest
│ ├── not-found.tsx # Custom 404 page
│ └── error.tsx # Global error boundary
├── components/ # Reusable React & Shadcn UI components
├── data/ # Static subject and book data
├── hooks/ # Custom React hooks
├── lib/ # Utility functions (utils, Firebase config, etc.)
├── public/ # Static assets (images, fonts, icons)
└── package.json
- Node.js (v18 or higher)
- npm or yarn
-
Clone the repository
git clone https://github.com/saahiyo/bcanotes.git cd bcanotes -
Set up Environment Variables Create a
.envfile in the root directory by copying.env.example:cp .env.example .env
Add the necessary keys:
NEXT_PUBLIC_SITE_URL=https://bcanotes.tech GOOGLE_DRIVE_API_KEY=your_api_key_here NEXT_PUBLIC_WEB3FORMS_ACCESS_KEY=your_web3forms_key_here GOOGLE_APPS_SCRIPT_URL=your_google_apps_script_url_here # Add your Firebase config keys here as required by lib/firebase.ts
-
Install dependencies
npm install
-
Run the development server
npm run dev
-
Open in browser Navigate to http://localhost:3000
| Command | Description |
|---|---|
npm run dev |
Start the development server |
npm run build |
Create a production build |
npm start |
Serve the production build |
npm run lint |
Run ESLint checks |
npm run clean |
Remove the .next build cache |
Contributions are welcome! Feel free to open an issue or submit a pull request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is open source and available under the MIT License.