A full-stack web application to collect, manage, and recommend internships.
Thank you for your interest in contributing! Join our Discord Community 💜
This project welcomes developers of all skill levels, and this guide will help you get started smoothly.
To recognize the amazing people who help grow this project, we award badges : See here!
Before contributing, please ensure you have:
-
Git
-
Node.js (version 18+) and npm
-
Python 3 (version 3.8+) and pip
-
A MongoDB Atlas account (you'll need a connection string).
-
A Clerk account (you'll need a publishable key for the frontend).
If you're new to any of these, don’t worry -the steps below walk you through everything.
The system has a separate frontend (React/Vite) and backend (Flask). Both require specific environment variables to run.
Click the Fork button at the top of the repository.
This creates your copy that you can safely experiment with.
git clone https://github.com/traitor09/todo.git
cd todoAlways make changes in a separate branch instead of main.
git checkout -b feature/my-new-featureUse clear branch names:
feature/... for new features
fix/... for bug fixes
docs/... for documentation
refactor/... for improvements
Navigate to the backend folder:
cd backendCreate the local configuration file:
cp .env.example .envOpen the newly created file and replace the placeholders with your actual credentials:
MONGO_CONNECTION_STRING: Your URI from MongoDB Atlas.
MONGO_DB_NAME: The name of the database you want to use (e.g., dev_db).
[Need your credentials? Detailed instructions on where to find your keys HERE ]
(Optional) It is highly recommended to use a Virtual Environment (venv) to keep project dependencies separate from your global Python installation:
-
Linux/macOS
python -m venv venv source venv/bin/activate -
Windows (PowerShell)
python -m venv venv .\venv\Scripts\Activate.ps1 -
Windows (CMD)
python -m venv venv venv\Scripts\activate.bat
pip install -r requirements.txtpython setup_database.pypython app.pyVerification: The terminal should show a message indicating the Flask server is running, usually at http://127.0.0.1:5000. Keep this terminal running!
Navigate to the frontend directory:
cd frontendnpm installcp .env.example .envOpen the file and replace the placeholders:
VITE_API_URL: This should point to your running backend: http://127.0.0.1:5000
VITE_CLERK_PUBLISHABLE_KEY: Your publishable key from the Clerk dashboard.
[Need your credentials? Detailed instructions on where to find your keys HERE ]
npm run devVerification: The terminal will show a local URL, typically http://localhost:5173 (or another port). Open this URL in your browser to see the application!
While contributing, please:
- Keep code clean and well-commented
- Follow existing coding style
- Test your changes locally
- Make commits small and meaningful
Example commit message:
Add skill preprocessing step to recommendation logic
git add .
git commit -m "Clear and descriptive message"
git push origin feature/my-new-featureGo to your fork on GitHub. Click Compare & pull request. Write a clear description of what you changed and why. Submit the PR.
PR Tips:
- Be polite and collaborative
- Explain the reasoning behind your changes
- Screenshots are helpful if UI-related
- A maintainer will review your PR and give feedback or approve it.
-
backend/
app.py– Main Flask applicationsetup_DB.py– Script to populate MongoDBrequirements.txt– Python dependencies- utils/
utils.py– MongoDB connection helperpreprocess.py– Data preprocessing functionsrule_recommendation.py– Rule-based recommendation logicml_recommendation.py– ML-based recommendation logic
-
frontend/
package.json– NPM dependenciestsconfig.json– TypeScript configuration- src/
App.tsx– Main React componentindex.tsx– React entry point- components/ – React components folder
-
Data/
dataset.json– Sample internship listings