TIMS is a comprehensive, enterprise-grade Training & Internship Management System designed to streamline student onboarding, course scheduling, batch management, trainer allocation, attendance tracking, fee collection, project evaluations, and certificate issuance.
Built using a modern decoupled architecture, TIMS combines a high-performance Node.js/Express backend with a responsive, dynamic Next.js frontend.
Here is a preview of the TIMS Home/Dashboard interface:
- Role-Based Access Control (RBAC): Custom levels of access for
ADMIN,HR,TRAINER, andSTUDENT. - Secure Authentication: Secure JWT-based session management, hashed passwords, rate limiting, and security headers (Helmet).
- Audit Logging: Detailed tracking of critical actions across the system.
- Profiles: Complete profile management for students and trainers, including document uploads (profile photos, leaves, materials).
- Enrollments: Structured registration flow linked to specific courses and batches.
- Course Catalog: Easy creation and classification of courses.
- Batch Scheduling: Flexible scheduling and management of batches.
- Daily Log: Live attendance capturing with automated locking jobs (via BullMQ/Redis).
- Visual Reports: Instant visual summaries of student and batch attendance rates.
- Fee Structures: Tailored installment configurations.
- Razorpay Integration: Secure payment gateway integration.
- Automated Reminders: Automated fee reminder notifications.
- Assignments: Distribution of projects/assignments to students.
- Submissions: Easy submission portal for students.
- Grading: Evaluation dashboard for trainers and admins to grade student work.
- Verification: Automatic or manual issuance of certificates upon course completion.
- Public Verification: Unique URLs/IDs to verify certificates.
- WebSockets: Real-time system notifications and messaging powered by Socket.IO.
- Framework: Next.js (React)
- State Management: Zustand
- Styling: Tailwind CSS (Vanilla PostCSS)
- Animations: Framer Motion
- Charts & Analytics: ApexCharts
- HTTP Client: Axios (with custom request/response interceptors)
- Real-time Communication: Socket.IO Client
- Runtime: Node.js
- Framework: Express.js
- Database ORM: Sequelize (PostgreSQL)
- Job Queue: BullMQ / Redis (for background workers and email queueing)
- File Uploads: Multer (categorized storage rules)
- Validation: Joi / Zod
- Logging: Winston & Morgan
- Node.js (v18+ recommended)
- PostgreSQL database
- Redis server (for queues and caching)
-
Create a PostgreSQL database:
psql -U postgres -c "CREATE DATABASE tims_db;" -
Configure database connection URLs in your environment files.
- Navigate to the Backend directory:
cd Backend - Install dependencies:
npm install
- Configure environment variables by creating a
.envfile:PORT=5000 NODE_ENV=development DATABASE_URL="postgresql://username:password@localhost:5432/tims_db" JWT_SECRET="your-super-secret-jwt-key" REDIS_HOST="127.0.0.1" REDIS_PORT=6379
- Run database synchronization scripts:
npm run migrate # or run custom setup script node scripts/db_sync_and_seed.js - Start the backend development server:
npm run dev
- Navigate to the Frontend directory:
cd ../Frontend - Install dependencies:
npm install
- Configure environment variables by creating a
.env.localfile:NEXT_PUBLIC_API_URL="http://localhost:5000/api/v1"
- Start the Next.js development server:
npm run dev
Open http://localhost:3000 with your browser to see the application.
For detailed guides, please refer to:
