A comprehensive tool for tracking GitHub pull requests and student project submissions. This application consists of a React frontend and a Node.js backend with MongoDB integration.## Setup
- Navigate to directory.
-
Features3. Create an
.envfile in the directory with the following variables: -
Project Structure ```env
-
Prerequisites GITHUB_TOKEN=your_github_personal_access_token
-
Installation MONGO_URI=your_mongodb_connection_string
-
Configuration ```
-
API Documentation4. Run
npm installin the directory. -
Contributing5. Start the server with
npm start. -
License# projects_tracking_tool
- 📊 Track GitHub pull requests across multiple repositories
- 👥 Monitor student project submissions
- 📈 Generate analytics and reports
- 🔄 Automated data fetching from GitHub API
- 💾 MongoDB integration for data persistence
- 🎨 Modern React UI with TypeScript
- 🔐 Secure environment configuration
- React 18 with TypeScript
- Vite - Fast build tool and dev server
- Modern ES modules
- Node.js with Express
- MongoDB with Mongoose ODM
- GitHub API integration via Axios
- Better-SQLite3 for local caching
- Python scripts for data analysis
projects-tracking-tool/
├── frontend/ # React frontend application
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── assets/ # Static assets
│ │ ├── App.tsx # Main App component
│ │ └── main.tsx # Entry point
│ ├── package.json
│ └── vite.config.ts
│
├── backend/ # Node.js backend
│ ├── src/
│ │ ├── server.js # Express server entry point
│ │ ├── models/ # MongoDB models
│ │ ├── routes/ # API routes
│ │ ├── controllers/ # Route controllers
│ │ ├── utils/ # Utility functions
│ │ ├── scripts/ # Automation scripts
│ │ ├── config/ # Configuration files
│ │ └── public/ # Static files
│ └── package.json
│
├── data/ # Data files and samples
├── docs/ # Documentation
├── cloned_repos/ # Cloned GitHub repositories
├── .env.example # Environment variables template
├── .gitignore
└── README.md
Before you begin, ensure you have the following installed:
- Node.js (v18 or higher)
- npm or yarn
- MongoDB (local or cloud instance)
- Python (v3.8 or higher) for analysis scripts
- Git
git clone https://github.com/Newton-School/projects_tracking_tool.git
cd projects_tracking_toolcd backend
npm installcd ../frontend
npm installCopy the .env.example file to .env in the root directory:
cp .env.example .envEdit the .env file with your credentials:
# MongoDB Configuration
MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/database_name
# GitHub API Token
GITHUB_TOKEN=your_github_personal_access_token_here
# Server Configuration (optional)
PORT=3000
NODE_ENV=development- Go to GitHub Settings → Developer settings → Personal access tokens
- Click "Generate new token (classic)"
- Select scopes:
repo,read:org,read:user - Copy the token and add it to your
.envfile
cd backend
# Setup database (first time only)
npm run setup
# Start the server
npm start
# Or run in development mode with auto-reload
npm run devThe backend server will start on http://localhost:3000
cd frontend
# Start the development server
npm run devThe frontend will start on http://localhost:5173
cd backend
# Fetch pull requests from GitHub
npm run fetch-prs
# Run Python analysis scripts
python src/scripts/evaluate_projects_csv.pyhttp://localhost:3000/api
GET /api/projects
GET /api/projects/:id
GET /api/pullrequests
GET /api/stats/:username
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the ISC License.
- Newton School for the project requirements
- GitHub API for data access
- MongoDB for database services
For support, email support@newtonschool.co or create an issue in the repository.
Made with ❤️ by Newton School