<<<<<<< HEAD TrackIt helps students discover opportunities, save them, apply, and track application progress from one place.
front-end/- Next.js web application.back-end/- Express and MongoDB API. ======= TrackIt helps Rwanda Coding Academy students discover approved opportunities, save them, apply, rate them, and receive deadline reminders from one place.
front-end/app/page.tsx- public landing page.front-end/app/auth/login- login only; there is no public signup.front-end/app/auth/teacher-invite/[token]- invite-only teacher registration.front-end/app/dashboard- role-based admin, student, teacher, and maintainer dashboards.front-end/components- reusable UI and dashboard shell components.back-end/- Express and MongoDB API.resources/images- profile and opportunity images served by the API.resources/documents- large documents such as PDFs.
844f25bde1b009521ef4ff56a4e8de3314c0f183
docker-compose.yml- Production-style local deployment for both services.
Copy the example files and fill in real values:
cp .env.example .env
cp back-end/.env.example back-end/.env
cp front-end/.env.example front-end/.envRequired backend variables:
PORT=6487
DB_URI=mongodb://mongo:27017/trackit
JWT_SECRET=replace-with-a-long-random-secret
<<<<<<< HEAD
JWT_EXPIRES_IN=1d
NODE_ENV=development
CLIENT_URL=http://localhost:3000
=======
JWT_EXPIRES_IN=7d
NODE_ENV=development
CLIENT_URL=http://localhost:3000
SYSTEM_LOGIN_URL=http://localhost:3000/auth/login
EMAIL=
EMAIL_PASSWORD=
EMAIL_SERVICE=smtp.gmail.com
EMAIL_PORT=465
EMAIL_SECURE=true
SLACK_BOT_TOKEN=
>>>>>>> 844f25bde1b009521ef4ff56a4e8de3314c0f183Required frontend variable:
NEXT_PUBLIC_API_URL=http://localhost:6487Run the API:
cd back-end
npm install
npm run devRun the web app:
cd front-end
npm install
npm run devThe frontend expects the backend at NEXT_PUBLIC_API_URL. The backend allows browser requests from CLIENT_URL.
- Only the existing admin account manages users from
/dashboard/admin. - Admin-created users receive invitation emails with a temporary password and are asked to change it after login.
- Teachers can register only through
/auth/teacher-invite/[token], using a non-guessable invite generated by the admin. - Student, teacher, and maintainer opportunity posts wait for admin approval before becoming public.
- Student interest, ratings, and applications feed the popular opportunities shown on the landing page.
- Deadline reminders are sent by email and, when
SLACK_BOT_TOKENplus a user Slack ID are configured, by Slack DM. - Account removal is implemented as deactivation so historical analytics remain intact.
- Maintainer profile images and large resources can be stored under
resources/imagesand served by the API from/resources.
844f25bde1b009521ef4ff56a4e8de3314c0f183
Build and start both services:
docker compose up --buildThen open:
- Web app:
http://localhost:3000 - API health check:
http://localhost:6487/health