← Back to full index
# UPES Programming Courses Repository Website

A full-stack website that gives students and educators access to a repository of resources, labs and assignments for the programming courses at UPES, built with Django and React.

- Role: Sole Developer (Full-Stack)
- Date: May 2025 – Present
- Categories: opensource
- Tech: Django, Django REST Framework, React, Vite, Tailwind CSS, GitHub API
- GitHub: https://github.com/AmulyaJain2004/UPES_Courses_through_Notes_and_Codes
- Live: https://upes-courses-through-notes-and-code.vercel.app/

## Overview

Course material is often scattered across notes, lab files and assignments. This project pairs an open repository of resources, labs and assignments for the programming courses at the University of Petroleum and Energy Studies (UPES) with a website for browsing it. It is intended for students reviewing course material and for educators looking for additional resources.

## System Design

```mermaid
flowchart TD
    User(["Student or educator"]) --> UI["React 19 + Vite SPA<br/>Tailwind CSS · React Router<br/>(Vercel)"]
    UI -->|"browse a folder"| API["Django REST Framework<br/>/api/github-contents/"]
    API --> Cache{"Cached in<br/>the last hour?"}
    Cache -->|"yes"| UI
    Cache -->|"no"| GH["GitHub Contents API<br/>this same repository"]
    GH --> API
    UI -->|"contact form"| Mail["/api/contact/<br/>Django email"]
    Repo[("Repository<br/>year → semester → course")] --> GH
```

- **Content:** the repository itself is the database. Resources are organised by year, semester and course, and cover subjects such as C, Python, Linux and Bash scripting, data structures and algorithms, algorithm design and analysis, elements of AI and ML, applied machine learning, and Java object-oriented programming.
- **Backend proxy:** the React app never calls GitHub directly. The Django API fetches a folder's contents from the GitHub Contents API with a server-side token, caches each folder for an hour, and returns clear errors for rate limits, missing paths and timeouts. This keeps the token private and avoids GitHub's low unauthenticated rate limit.
- **Frontend:** a React 19 single-page app built with Vite and styled with Tailwind CSS, deployed on Vercel.

## History

The first version, built in my first year, was a plain HTML, CSS and JavaScript site hosted on GitHub Pages, with a small Node.js backend on Render that read the repository through the GitHub API. The site has since moved to the Django and React version on Vercel.

## Status

The site is live and still in development, and the repository is open to contributions and updates.

---

Back to the full index: /agent