Skip to content

call-me-badman/trackit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TrackIt

<<<<<<< HEAD TrackIt helps students discover opportunities, save them, apply, and track application progress from one place.

Project Structure

  • 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.

Project Structure

  • 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.

Environment

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/.env

Required 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=
>>>>>>> 844f25bde1b009521ef4ff56a4e8de3314c0f183

Required frontend variable:

NEXT_PUBLIC_API_URL=http://localhost:6487

Local Development

Run the API:

cd back-end
npm install
npm run dev

Run the web app:

cd front-end
npm install
npm run dev

The frontend expects the backend at NEXT_PUBLIC_API_URL. The backend allows browser requests from CLIENT_URL.

<<<<<<< HEAD

RCA Workflows

  • 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_TOKEN plus 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/images and served by the API from /resources.

844f25bde1b009521ef4ff56a4e8de3314c0f183

Docker

Build and start both services:

docker compose up --build

Then open:

  • Web app: http://localhost:3000
  • API health check: http://localhost:6487/health

About

a deadline and opportunity system management

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors