A lightweight and fast web application that helps users quickly search NCU LMS courses using either the Course ID or Course Name and instantly access the official course pages.
🚀 Website: https://nishantrajora.github.io/Course-Explorer/
💻 GitHub Repository: https://github.com/NishantRajora/Course-Explorer
- 🔍 Search by Course ID
- 📚 Search by Course Name
- ⚡ Instant search with optimized performance
- 📖 Open the official course page
- 📂 Open the course Modules page
- 🔗 Copy Course URL
- 📋 Copy Modules URL
- 📱 Fully responsive design
- 🎨 Clean and lightweight interface
- 🚀 Built with pure HTML, CSS and JavaScript
- 📄 Reads course data directly from a CSV file
- 📊 Shows a shared total of searches
Search any course by entering its Course ID or Course Name.
Each result provides:
- 📖 Open Course
- 📂 Open Modules
- 🔗 Copy Course Link
- 📋 Copy Modules Link
Course-Explorer/
│
├── index.html
├── style.css
├── script.js
├── course.csv
└── README.md
git clone https://github.com/NishantRajora/Course-Explorer.gitOpen index.html directly in your browser.
Or run a local development server:
python -m http.serverThen visit:
http://localhost:8000
The project loads course information from course.csv.
Example:
2963,Basic Computer Skills for Professionals
3011,Data Structures
4210,Machine LearningFormat:
CourseID,CourseName
- HTML5
- CSS3
- JavaScript (ES6)
- CSV
No frameworks or external libraries are required.
GitHub Pages is static, so the shared search total is stored in Supabase.
- Create a Supabase project at https://supabase.com.
- Open SQL Editor and run:
create table public.site_stats (
id boolean primary key default true,
searches bigint not null default 0,
constraint one_stats_row check (id)
);
insert into public.site_stats (id) values (true);
create or replace function public.get_search_count()
returns bigint
language sql
security definer
set search_path = public
as $$
select searches from public.site_stats where id = true;
$$;
create or replace function public.increment_search_count()
returns bigint
language sql
security definer
set search_path = public
as $$
update public.site_stats
set searches = searches + 1
where id = true
returning searches;
$$;
grant execute on function public.get_search_count() to anon, authenticated;
grant execute on function public.increment_search_count() to anon, authenticated;- In
script.js, replaceYOUR_SUPABASE_PROJECT_URLwith the project URL andYOUR_SUPABASE_ANON_KEYwith the public anon key from Project Settings > API. - Commit and push the changes. The counter will then be shared by every visitor to the GitHub Pages site.
The anon key is intended for browser use. Do not put a Supabase service-role key in this repository. This counts each non-empty search after the input debounce, not every individual keystroke.
This project is designed to be lightweight and fast.
- Optimized DOM rendering
- Debounced search input
- Fast CSV parsing
- Responsive UI
- Minimal resource usage
- No heavy animations or frameworks
This website is an independent utility created for educational convenience.
- It only generates links to the official NCU LMS using Course IDs.
- It does not host, copy, modify, or redistribute any course content.
- All course materials remain the property of their respective owners.
- Access to courses depends on the permissions and authentication provided by the official NCU LMS.
Contributions are welcome.
- Fork the repository.
- Create a new feature branch.
- Commit your changes.
- Push to your fork.
- Open a Pull Request.
- ⭐ Favorites
- 📜 Search history
- 🌙 Dark mode
- 🔖 Bookmark frequently used courses
- 📊 Course statistics
- ⌨️ Keyboard shortcuts
- 🔍 Advanced search filters
This project is licensed under the MIT License.
Nishant Rajora
- GitHub: https://github.com/NishantRajora
- LinkedIn: https://www.linkedin.com/in/nishant-rajora/
If you found this project useful, please consider giving it a ⭐ on GitHub.