A full-stack web application built for D-Talk to manage internships, monitor student progress, and facilitate communication between instructors and interns. The platform supports real-time task assignments and comments via WebSockets, features a modern UI with TailwindCSS, and runs on a scalable backend using Node.js, Express, MySQL, and Prisma ORM.
- βοΈ React - Modern JavaScript library for building user interfaces
- π Redux - Predictable state container for JavaScript apps
- π¨ TailwindCSS - Utility-first CSS framework for rapid UI development
- π WebSocket Client - Real-time communication with the server
- π Node.js - JavaScript runtime for server-side development
- π§© Express.js - Fast, unopinionated web framework for Node.js
- π WebSocket - Native WebSocket for real-time bidirectional communication
- 𧬠Prisma ORM - Modern database toolkit and ORM
- π¬ MySQL - Relational database management system
- π§ Nodemailer - Email sending functionality
- π‘οΈ Helmet - Security middleware for Express
- π Multer - File upload handling middleware
- π³ Docker Compose - Multi-container Docker application orchestration
- Node.js (v16 or higher)
- Docker & Docker Compose
- Git
git clone https://github.com/hamzabenarfa/d-talk-internship.git
cd d-talk-internshipCreate .env files in both frontend and backend directories:
Backend .env
# Database Configuration
DATABASE_URL="mysql://dtalk_user:secure_password@localhost:3306/dtalk_db"
# Server Configuration
PORT=4000
# CORS & Client
CLIENT_URL=http://localhost:3000
# JWT Secret (generate a secure one)
JWT_SECRET=your_super_secure_jwt_secret_key
# WebSocket Configuration
SOCKET_PORT=8081Frontend .env
# API Configuration
WEB_SOCKET_URL=http://localhost:8081# Start all services (MySQL, Backend, Frontend)
docker-compose up --build
# Or run in detached mode
docker-compose up -d --build# Navigate to backend directory
cd backend
# Run Prisma migrations
npx prisma migrate dev --name init
# Seed the admin account
npx prisma db admin
# Optional: Seed the database
npx prisma db seed
# Open Prisma Studio (Database GUI)
npx prisma studio- β Internship Listings - Browse and search internship opportunities
- β Company Profiles - Detailed company information and job postings
- β User Authentication - Secure login/register for students and companies
- β Application Management - Track and manage internship applications
- β Real-time Notifications - Instant updates via WebSockets
- β Responsive Design - Mobile-first approach with TailwindCSS
- β Modern UI Components - Clean, professional interface
- β Advanced Filtering - Search by location, company, skills, etc.
- β Dashboard Analytics - Statistics and insights for companies
- β RESTful API - Well-structured backend API
- β Database Relations - Optimized MySQL schema with Prisma
- β File Upload - Resume and company logo upload functionality
- β Email Integration - Automated notifications and confirmations
cd backend
# Development server with hot reload
npm run dev
# Production build
npm run build
# Start production server
npm start
# Database operations
npm run db:migrate # Run migrations
npm run db:seed # Seed database
npm run db:reset # Reset database
npm run db:studio # Open Prisma Studiocd frontend
# Development server
npm run dev
# Production build
npm run build# Build and start all services
docker-compose up --build
# Start services in background
docker-compose up -d
# Stop all services
docker-compose down
# View logs
docker-compose logs -f
# Rebuild specific service
docker-compose build backend
docker-compose build frontend- β JWT Tokens for secure authentication
- β Password Hashing using bcrypt
- β Role-based Access Control (Student, Instructor, Admin)
- β Protected Routes on both frontend and backend
- β Input Validation using yup schemas
- β SQL Injection Prevention via Prisma ORM
- β XSS Protection with proper sanitization
- β CORS Configuration for allowed origins only
- β Rate Limiting on API endpoints
- β Database Indexing for optimized queries
- β Error Handling with proper logging
- β Request Compression with gzip
This project is licensed under the MIT License - see the LICENSE file for details.
Lead Developer: Hamza Benarfa
- π§ Email: hamzabenarfa4@gmail.com benarfahamza@d-talk.co
- π§ Email: benarfahamza@d-talk.co
- πΌ LinkedIn: linkedin.com/in/hamza-benarfa
- π GitHub: @hamza-benarfa
Project Repository: github.com/hamza-benarfa/dtalk-internships
- D-Talk Team for project vision and requirements
- Open Source Community for amazing tools and libraries
- Prisma Documentation
- TailwindCSS Guide
- React Best Practices
- Express.js Guide
- Docker Compose Reference