A comprehensive educational platform combining file sharing (notes/assignments), real-time messaging, anonymous study rooms, and collaborative learning features.
- User Authentication - Role-based access (Admin, Teacher, Student)
- Notes & Assignment Sharing - Upload and share educational content
- Search & Discovery - Find relevant study materials
- Ratings & Comments - Community feedback on uploads
- Bookmarking - Save favorite resources
- Direct Messages - Private one-on-one messaging with real-time delivery
- Anonymous Chat Rooms - Subject-specific study groups with random anonymous identities
- Real-time Features - Typing indicators, read receipts, online status
- File Sharing - Share documents and images in conversations
- Message Management - Edit, delete, and search messages
- User Management - View, edit, and manage user accounts
- Content Moderation - Monitor and moderate uploads and messages
- Analytics Dashboard - Platform usage statistics
- Announcements - Platform-wide and targeted announcements
- Report System - Handle user reports and content takedowns
- Node.js + Express - Server framework
- PostgreSQL - Database
- Socket.io - Real-time WebSocket communication
- JWT - Authentication
- Bcrypt - Password hashing
- React 18 - UI framework
- Vite - Build tool
- TailwindCSS - Styling
- React Router - Routing
- Zustand - State management
- React Query - Data fetching
- Socket.io Client - Real-time messaging
- Node.js >= 18.x
- Database: PostgreSQL >= 14.x OR MySQL >= 8.0
- npm or yarn
Note: The application supports both PostgreSQL and MySQL. See MYSQL_SETUP.md for MySQL migration guide.
See SETUP.md for detailed installation instructions.
# 1. Install dependencies
npm install
# 2. Set up environment variables
cp .env.example .env
# Edit .env with your database credentials
# 3. Create database
createdb notes_platform
# 4. Run database setup
cd server
npm run db:setup
# 5. Start development servers
cd ..
npm run devThe app will be available at:
- Frontend: http://localhost:5173
- Backend API: http://localhost:5000
- API Health: http://localhost:5000/api/health
- README.md - Project overview and quick start
- SETUP.md - Detailed setup instructions
- DEPLOYMENT.md - Production deployment guide
- PROJECT_SUMMARY.md - Complete project overview
- API_DOCUMENTATION.md - Complete API reference
- CONTRIBUTING.md - Contribution guidelines
- SECURITY.md - Security policy and best practices
- CHANGELOG.md - Version history and changes
- RELEASE_NOTES.md - Release notes v1.0.0
- PHASE3_COMPLETE.md - Phase 3 completion summary
- BRAND_GUIDELINES.html - Visual brand guidelines
- LICENSE - MIT License
After running the database setup, you can login with:
- Email:
admin@notesplatform.com - Password:
admin123
notes-assignment-platform/
βββ client/ # Frontend React app
βββ server/ # Backend Node.js app
β βββ src/
β β βββ config/ # Configuration files
β β βββ controllers/ # Route controllers
β β βββ models/ # Database models
β β βββ middleware/ # Express middleware
β β βββ routes/ # API routes
β β βββ socket/ # Socket.io handlers
β β βββ database/ # Database schema & setup
β βββ package.json
βββ package.json # Root workspace config
βββ README.md
- Project setup with monorepo structure
- PostgreSQL database with comprehensive schema
- User authentication (register, login, JWT)
- Direct messaging API & UI
- Anonymous chat rooms API & UI
- Socket.io real-time messaging
- File upload system (AWS S3 / Local)
- Search functionality with filters
- Ratings and comments system
- Admin panel UI & Content Management
- Email verification & Password Reset
- User profiles and bookmarks
- File attachments in messages
- Privacy & Security (Blocking, Rate Limiting)
- Notifications system (UI integration)
- Mobile optimization
- Redis Caching
POST /api/auth/register- Register new userPOST /api/auth/login- Login userGET /api/auth/me- Get current userPUT /api/auth/profile- Update profilePUT /api/auth/password- Change passwordGET /api/auth/search- Search users
GET /api/messages/conversations- Get all conversationsGET /api/messages/conversation/:userId- Get/create conversationGET /api/messages/:conversationId- Get messagesPOST /api/messages/send- Send messagePUT /api/messages/:messageId- Edit messageDELETE /api/messages/:messageId- Delete message
GET /api/rooms- Get public roomsPOST /api/rooms- Create roomGET /api/rooms/:roomId- Get room detailsPOST /api/rooms/:roomId/join- Join roomPOST /api/rooms/:roomId/leave- Leave roomGET /api/rooms/:roomId/messages- Get room messages
- JWT-based authentication
- Password hashing with bcrypt
- CORS protection
- Helmet security headers
- Rate limiting
- Input validation
- SQL injection prevention
- XSS protection
This is an educational project. Contributions are welcome!
MIT License - feel free to use this project for learning and development.
Built with modern web technologies for educational collaboration and learning.