Connecting Students, Faculty & Recruiters — One Platform.
Features • Tech Stack • Getting Started • Project Structure • API Reference • Contributing
SkillTurn is a full-stack academic portal that bridges the gap between students, faculty, and recruiters. Students can discover projects and internships, track applications, and showcase their skills. Faculty can post opportunities and manage applicants, while recruiters can publish job openings and shortlist candidates — all from a single, sleek interface.
| Role | Capabilities |
|---|---|
| 🎒 Student | Browse opportunities, apply to projects & internships, manage applications via a personal dashboard, build a skill profile |
| 👨🏫 Faculty | Post academic projects, review student applications, manage a faculty dashboard |
| 💼 Recruiter | Publish job postings, view applicants, manage recruitment from a dedicated dashboard |
Shared Features
- 🔐 Secure authentication with JWT (login & registration)
- 🌗 Light / Dark theme toggle
- 📱 Fully responsive design with glassmorphism UI
- ⚡ Smooth page transitions & micro-animations (Framer Motion)
| Technology | Purpose |
|---|---|
| Next.js 16 | React framework with App Router |
| React 19 | UI library |
| TypeScript | Type safety |
| Tailwind CSS 4 | Utility-first styling |
| Framer Motion | Animations & transitions |
| next-themes | Dark / Light mode support |
| Technology | Purpose |
|---|---|
| FastAPI | High-performance Python API |
| MongoDB Atlas | Cloud-hosted NoSQL database |
| PyMongo | MongoDB driver for Python |
| python-jose | JWT token handling |
| Passlib (Argon2) | Password hashing |
- Node.js v18+
- Python 3.9+
- Git
git clone https://github.com/Godstaf/studentPortal.git
cd studentPortal# Navigate to the backend directory
cd backend
# (Recommended) Create a virtual environment
python -m venv venv
# Activate the virtual environment
source venv/bin/activate # macOS / Linux
# venv\Scripts\activate # Windows
# Install dependencies
pip install fastapi uvicorn pymongo certifi python-jose[cryptography] passlib[argon2] python-multipart
# Start the API server
uvicorn app:app --reloadThe API will be available at http://127.0.0.1:8000.
Open a new terminal (keep the backend running):
# From the project root
npm install
# Start the development server
npm run devVisit http://localhost:3000 in your browser.
SkillTurn/
├── src/
│ ├── app/ # Next.js App Router pages
│ │ ├── dashboard/ # Student dashboard
│ │ ├── facultydash/ # Faculty dashboard
│ │ ├── facultyprofile/ # Faculty profile page
│ │ ├── forms/ # Various input forms
│ │ ├── login/ # Authentication page
│ │ ├── opportunities/ # Browse & view opportunities
│ │ ├── recruiter_dashboard/# Recruiter dashboard
│ │ ├── r-posted_jobs/ # Recruiter's posted jobs
│ │ ├── roles/ # Role selection
│ │ ├── studentForm/ # Student profile form
│ │ ├── studentProfiles/ # Student profile listings
│ │ ├── layout.tsx # Root layout with navbar
│ │ ├── page.tsx # Landing page
│ │ └── globals.css # Global styles & theme tokens
│ ├── components/
│ │ ├── layout/ # Navbar & layout components
│ │ └── ui/ # Reusable UI components (Button, Card, Glass, etc.)
│ ├── context/ # React context (Auth)
│ └── data/ # Static/mock data
├── backend/
│ ├── app.py # FastAPI entry point & CORS config
│ ├── login.py # Authentication routes (JWT)
│ ├── register.py # User registration routes
│ ├── student.py # Student-specific API routes
│ ├── CRUD.py # Pydantic models & database operations
│ ├── database.py # MongoDB connection & collections
│ ├── init_db.py # Database seeding script
│ └── schema.md # Database schema documentation
├── public/ # Static assets
├── package.json
├── tsconfig.json
└── README.md
| Method | Endpoint | Description |
|---|---|---|
GET |
/ |
Health check / welcome message |
POST |
/auth/login |
Authenticate user & return JWT |
POST |
/auth/register |
Register a new user |
GET |
/student/profile |
Fetch student profile |
Note: Full API documentation is auto-generated at
http://127.0.0.1:8000/docs(Swagger UI) when the backend is running.
| Issue | Solution |
|---|---|
CORS errors (Failed to fetch) |
Ensure backend runs on port 8000 and frontend on port 3000. CORS is configured in backend/app.py. |
| Database connection failed | Verify internet access — the connection string in backend/database.py points to MongoDB Atlas. |
| Module not found (Python) | Make sure the virtual environment is activated and all pip packages are installed. |
| Port already in use | Kill the process occupying the port: lsof -ti:8000 | xargs kill (macOS/Linux). |
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Commit your changes:
git commit -m "Add your feature" - Push to the branch:
git push origin feature/your-feature - Open a Pull Request
This project is open-source and available under the MIT License.
Made with ❤️ by Godstaf