SkillConnect is a virtual internship platform where students complete practical company projects, employers manage opportunities and submissions, mentors give feedback, and administrators monitor the platform.
SkillConnect/
├── backend/ Flask API, SQLAlchemy models, migrations, and pytest tests
├── frontend/ React application built with Vite
└── Procfile Production Gunicorn process command
- Python 3.9 or newer
- Node.js 20 or newer
- npm
- MySQL for normal development and production
The backend tests use an in-memory SQLite database, so MySQL is not required to run the automated test suite.
The backend and frontend run as separate processes. Open two terminals from the repository root.
Admin Account
Email: admin.demo@skillconnect.test Password: Demo_Admin@2026 Role: admin Admin portal: /admin
cd backend
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .envOn Windows PowerShell, activate the environment with:
.venv\Scripts\Activate.ps1Edit backend/.env and replace the example secrets and database connection:
SECRET_KEY=replace-with-a-random-secret
JWT_SECRET_KEY=replace-with-another-random-secret
DATABASE_URL=mysql+pymysql://user:password@localhost:3306/skillconnectCreate the MySQL database if it does not exist, then apply the checked-in migrations:
flask --app run.py db upgradeStart the API:
python run.pyThe API runs at http://127.0.0.1:8000. Useful checks:
- Health check:
http://127.0.0.1:8000/api/health - API documentation:
http://127.0.0.1:8000/api/docs
In the second terminal:
cd frontend
npm ci
npm run devOpen the URL printed by Vite, normally http://localhost:5173. During local
development, Vite proxies /api requests to http://127.0.0.1:8000.
To use a backend at another address:
VITE_BACKEND_URL=http://localhost:9000 npm run devInstall the development dependencies once:
cd backend
source .venv/bin/activate
pip install -r requirements-dev.txtRun the complete backend test suite:
python -m pytest -qFor verbose output:
python -m pytest -vThe tests create an isolated in-memory SQLite database and do not modify the
database configured in backend/.env.
The frontend does not currently have an automated component test suite. Use the production build as the required verification check:
cd frontend
npm ci
npm run buildOptionally serve the generated production build:
npm run previewThen manually verify login, role navigation, opportunities, student tasks, employer reviews, mentor assessments, the Community directory, and admin user management.
From the repository root, the included Procfile starts Gunicorn with:
gunicorn --chdir backend --bind 0.0.0.0:$PORT run:appWhen running directly from backend/, use:
gunicorn --bind 0.0.0.0:${PORT:-8000} run:appSet secure SECRET_KEY, JWT_SECRET_KEY, and DATABASE_URL environment
variables in the deployment environment. For lower API latency, deploy the
backend in the same region as the database.
| Task | Command |
|---|---|
| Start backend | cd backend && python run.py |
| Apply migrations | cd backend && flask --app run.py db upgrade |
| Run backend tests | cd backend && python -m pytest -q |
| Start frontend | cd frontend && npm run dev |
| Build frontend | cd frontend && npm run build |
- Rene Guido Kayigamba — Frontend Developer
- Aldrick Kalisa — System Architect
- David Irihose — Backend Engineer
- Kizito Imena — Database Engineer
- Ganza Gavin — Documentation Lead
- Butera Irebe Asnath — UI/UX