A web application for accessing Sheiling House School's Past Year Question Papers, built with Node.js and Express, integrated with Dropbox for file storage.
- Grade-based Navigation: Browse question papers by class (6-11)
- Subject Organization: Access papers organized by subjects including:
- Mathematics, Computer Applications, Physics, Chemistry, Biology
- English Literature & Language, Hindi, Sanskrit, French
- History & Civics, Geography, Environmental Science
- Art, Music, Physical Education, Mass Communications, and more
- Responsive Design: Mobile-friendly interface with modern UI
- Direct Downloads: Seamless PDF downloads through Dropbox integration
- Contribution System: Embedded form for users to contribute new papers
- Backend: Node.js with Express.js
- File Storage: Dropbox API integration
- Frontend: Vanilla JavaScript, HTML5, CSS3
- Styling: Custom CSS with FontAwesome icons
- Deployment: Configured for Render
shs-pyqp-project/
├── public/
│ ├── index.html # Main HTML file
│ ├── script.js # Frontend JavaScript
│ ├── style.css # Styling
│ ├── logo.png # School logo
│ └── sitemap.xml # SEO sitemap
├── scripts/
│ └── script.js # Additional scripts
├── index.js # Main server file
├── package.json # Dependencies
├── .env # Environment variables (not included)
├── .gitignore # Git ignore rules
└── README.md # This file
- Node.js (v14 or higher)
- npm or yarn
- Dropbox account with API access
Create a .env
file in the root directory:
REFRESH_TOKEN=your_dropbox_refresh_token
CLIENT_ID=your_dropbox_client_id
CLIENT_SECRET=your_dropbox_client_secret
-
Clone the repository:
git clone <repository-url> cd shs-pyqp-project
-
Install dependencies:
npm install
-
Set up environment variables:
- Copy
.env.example
to.env
- Fill in your Dropbox API credentials
- Copy
-
Start the development server:
npm run dev
-
Access the application:
- Open
http://localhost:3000
in your browser
- Open
- Create a Dropbox app at Dropbox Developer Console
- Generate access tokens and refresh tokens
- Organize files in Dropbox following this structure:
/SHS-PYQP-Project/ ├── 6-Cls/ ├── 7-Cls/ ├── 8-Cls/ ├── 9-Cls/ ├── 10-Cls/ └── 11-Cls/
Files should be named using the pattern:
SubjectName()Session()TestType.pdf
Example: Mathematics()2023-2024()Final Exam.pdf
- Select Class: Choose your grade level (6-11)
- Pick Subject: Select the subject you need papers for
- Download Papers: Click on any paper to download directly
- Contribute: Use the "Contribute a Paper" button to submit new papers
- Modify
public/style.css
for design changes - CSS variables are defined in
:root
for easy theming - Responsive breakpoints: 720px for mobile/desktop
- Add subject div in
index.html
with appropriate class combinations - Update the subject filtering logic in
script.js
- Ensure proper folder structure in Dropbox
- Connect your repository to Vercel
- Add environment variables in Vercel dashboard
- Deploy automatically on push
- Connect repository to Render
- Set build command:
npm install
- Set start command:
node index.js
- Add environment variables
GET /
- Serves the main applicationGET /files?path=<folder_path>
- Fetches file list from Dropbox folder
- Fork the repository
- Create a feature branch:
git checkout -b feature/new-feature
- Commit changes:
git commit -am 'Add new feature'
- Push to branch:
git push origin feature/new-feature
- Submit a pull request
This project is licensed under the ISC License.
This project is not an official initiative by Sheiling House School. The developers do not own any rights to the Sheiling House logo or branding.
- Developer: Ritwik Sharma
- Idea: Mayukh Awasthi
- Files not loading: Check Dropbox API credentials and folder structure
- Mobile display issues: Verify CSS media queries
- Download links not working: Ensure Dropbox temporary link generation is working
For technical issues, please open an issue in the repository or contact the maintainers.
Made with ❤️ for Sheiling House School students