A full-stack internship management platform that connects students with colleges for internship opportunities. Similar to platforms like Internshala and Chegg Internships.
- College Management: Register and manage colleges with their details and logos
- Intern Applications: Students can apply for internships at registered colleges
- College Search: Search colleges by abbreviated name and view registered interns
- Responsive Design: Fully responsive UI that works on all devices
- Modern UI: Built with a custom design system using design tokens
This is a monorepo containing both frontend and backend:
/
βββ backend/ # Express.js backend API
β βββ src/
β β βββ controllers/
β β βββ models/
β β βββ routes/
β β βββ validators/
β βββ package.json
βββ frontend/ # React + Vite frontend
β βββ src/
β β βββ components/
β β βββ pages/
β β βββ services/
β β βββ theme/
β βββ package.json
βββ package.json # Root workspace config
- Node.js with Express.js
- MongoDB with Mongoose ODM
- JWT for authentication (available)
- Multer for file uploads
- React 19 with Vite
- React Router for navigation
- Axios for API calls
- TailwindCSS for styling
- React Hot Toast for notifications
| Method | Endpoint | Description |
|---|---|---|
| POST | /functionup/colleges |
Create a new college |
| POST | /functionup/interns |
Register as an intern |
| GET | /functionup/collegeDetails?collegeName=xxx |
Get college details with interns |
POST /functionup/colleges
{
"name": "iith",
"fullName": "Indian Institute of Technology, Hyderabad",
"logoLink": "https://example.com/logo.png"
}POST /functionup/interns
{
"name": "John Doe",
"email": "john.doe@example.com",
"mobile": "9876543210",
"collegeName": "iith"
}GET /functionup/collegeDetails?collegeName=iith
Response:
{
"status": true,
"data": {
"name": "iith",
"fullName": "Indian Institute of Technology, Hyderabad",
"logoLink": "https://example.com/logo.png",
"interns": [
{
"_id": "...",
"name": "John Doe",
"email": "john.doe@example.com",
"mobile": "9876543210"
}
]
}
}The frontend uses a custom design token system:
{
colors: {
primary: "#735F32",
primaryVariant: "#C69749",
background: { default: "#000000", surface: "#282A3A" },
text: { primary: "#ffffff", secondary: "rgba(255, 255, 255, 0.6)" }
},
typography: {
fontFamily: "'Poppins', sans-serif"
}
}- Node.js 18+
- MongoDB connection string
- Clone the repository:
git clone https://github.com/Dipesh-J/Project-Open-to-Intern.git
cd Project-Open-to-Intern- Install dependencies:
npm install
cd frontend && npm install
cd ../backend && npm installFrontend (Development):
npm run dev:frontend
# or
cd frontend && npm run devFrontend runs on http://localhost:5173
Backend:
npm run dev:backend
# or
cd backend && npm run devBackend runs on http://localhost:3001
cd frontend && npm run build- Connect your repository to Vercel or Netlify
- Set build command:
cd frontend && npm run build - Set output directory:
frontend/dist - Set environment variable:
VITE_API_URL=https://your-backend-url.com
- Connect your repository
- Set root directory:
backend - Set start command:
npm start - Add environment variables:
PORT: Port numberMONGODB_URI: Your MongoDB connection string
{
name: String, // Unique, lowercase (e.g., "iith")
fullName: String, // Full college name
logoLink: String, // URL to college logo
isDeleted: Boolean // Soft delete flag
}{
name: String, // Intern's full name
email: String, // Unique email
mobile: String, // Unique 10-digit mobile
collegeId: ObjectId, // Reference to college
isDeleted: Boolean // Soft delete flag
}- Fork the repository
- Create your 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.
Dipesh Joshi
Built with β€οΈ for connecting students with opportunities



