Skip to content

Latest commit

 

History

History
239 lines (193 loc) · 7.88 KB

README.md

File metadata and controls

239 lines (193 loc) · 7.88 KB

🎓 Smart TNP Education Platform

GitHub stars GitHub forks GitHub issues GitHub license

Advanced Training and Placement Department Education Platform with Real-time Features

Report BugRequest Feature

🌟 Overview

Smart TNP Education Platform is a modern, feature-rich online learning system built specifically for college Training and Placement departments. Using a turborepo monorepo structure, it delivers a seamless experience across student and administrative portals with real-time communication capabilities.

💻 Technology Stack

Frontend

React TypeScript Vite TailwindCSS Framer Motion Recoil

Backend

Node.js Express PostgreSQL Prisma WebSocket

Cloud & DevOps

AWS Docker GitHub Actions Vercel

🏗️ Project Structure

Smart-TNP-education-app/
├── apps/
│   ├── web/                 # Student portal (Vite + React)
│   │   ├── src/
│   │   │   ├── components/  # Reusable UI components
│   │   │   ├── pages/      # Route pages
│   │   │   ├── hooks/      # Custom React hooks
│   │   │   ├── services/   # API services
│   │   │   ├── store/      # Recoil state management
│   │   │   └── types/      # TypeScript types
│   │   
│   ├── admin/              # Admin portal
│   │   ├── src/
│   │   │   ├── components/ # Admin UI components
│   │   │   ├── pages/     # Admin routes
│   │   │   ├── hooks/     # Admin-specific hooks
│   │   │   └── services/  # Admin API services
│   │   
│   ├── api/                # Main backend service
│   │   ├── src/
│   │   │   ├── controllers/
│   │   │   ├── middlewares/
│   │   │   ├── routes/
│   │   │   └── services/
│   │   └── Dockerfile
│   │   
│   └── ws/                 # WebSocket service
│       └── src/
│           ├── index.js
│           └── prisma.js
│
├── packages/               # Shared packages
│   ├── ui/                # Shared UI components
│   ├── store/             # Shared state management
│   ├── config-typescript/ # TypeScript configs
│   ├── config-eslint/     # ESLint configs
│   ├── tailwind-config/   # Tailwind configs
│   └── db/                # Database package
│       └── prisma/        # Prisma schema & migrations
│
└── turbo.json             # Turborepo config

✨ Key Features

🎓 Student Portal (Web)

  • Live virtual classrooms using WebRTC
  • Real-time notifications via WebSocket
  • Course enrollment and tracking
  • Assignment submission with AWS S3
  • Interactive UI with Framer Motion animations
  • Secure authentication with JWT

👨‍💼 Admin Portal

  • Comprehensive dashboard
  • Student management
  • Course administration
  • Live session management
  • Resource allocation
  • Performance analytics

🔄 Real-time Features

  • WebRTC-powered live classes
  • Live Kit integration
  • Instant messaging
  • Real-time status updates
  • Activity tracking

🛠️ Development Setup

  1. Clone and Install

    git clone https://github.com/kushwahramkumar2003/Smart-TNP-education-app.git
    cd Smart-TNP-education-app
    npm install
  2. Database Setup

    cd packages/db
    ./setupDB.sh
    npx prisma migrate dev
  3. Environment Configuration

    # Set up environment files for each app
    cp apps/api/.env.example apps/api/.env
    cp apps/web/.env.example apps/web/.env
    cp apps/admin/.env.example apps/admin/.env
    cp apps/ws/.env.example apps/ws/.env
  4. Start Development Services

    # Start all services
    npm run dev
    
    # Start specific apps
    npm run dev --filter=web
    npm run dev --filter=admin
    npm run dev --filter=api
    npm run dev --filter=ws

🚀 Deployment

The project uses GitHub Actions for CI/CD and deploys to:

  • Frontend: Vercel
  • Backend: AWS (with Docker containers)
  • Database: AWS RDS (PostgreSQL)
  • WebSocket: AWS EC2

🔒 Environment Variables

Required environment variables for each app:

# apps/api/.env
DATABASE_URL=
JWT_SECRET=
AWS_ACCESS_KEY=
AWS_SECRET_KEY=
AWS_BUCKET_NAME=

# apps/web/.env & apps/admin/.env
VITE_API_URL=
VITE_WS_URL=

# apps/ws/.env
DATABASE_URL=
WS_PORT=

🤝 Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • Training and Placement Department faculty
  • College administration
  • All contributors

👥 Contributors

Thanks goes to these wonderful people: