A sophisticated, production-ready educational management system built with modern web technologies, featuring enterprise-grade architecture, comprehensive security, and scalable design patterns.
ManageMe is a full-stack educational management platform designed to handle complex business operations for educational institutions. The system provides comprehensive solutions for student management, course administration, financial tracking, and institutional operations with a focus on security, scalability, and maintainability.
- Multi-tenant architecture supporting multiple educational institutions
- Role-based access control (RBAC) with granular permissions
- Real-time data processing with Redis caching
- Secure file management via AWS S3 integration
- Comprehensive audit trails and transaction logging
- Multi-language support (Uzbek, Russian, English)
- Runtime: Node.js 18+ with ES6+ modules
- Framework: Express.js 4.19+ with custom middleware architecture
- Database: MongoDB 8.3+ with Mongoose ODM
- Authentication: JWT with bcrypt password hashing
- Caching: Redis for performance optimization
- File Storage: AWS S3 with multer-s3 integration
- Email: Nodemailer with SMTP integration
- Image Processing: Sharp for optimization
- Security: Helmet.js with custom CSP configuration
- Framework: React 18+ with TypeScript 5.2+
- Build Tool: Vite 5.2+ for fast development
- Styling: TailwindCSS with Ant Design components
- State Management: Zustand with devtools
- Data Fetching: React Query (TanStack Query)
- Routing: React Router DOM 6+
- Internationalization: i18next with multiple locales
- Charts: ApexCharts and Recharts for analytics
- Testing: Vitest for unit testing
- Linting: ESLint with TypeScript support
- Type Checking: TypeScript strict mode
- CI/CD: GitHub Actions workflow
- Code Quality: Prettier formatting
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Frontend β β Backend API β β Database β
β (React/TS) βββββΊβ (Node/Express)βββββΊβ (MongoDB) β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β
βββββββββββββββββββ
β External β
β Services β
β (AWS S3, β
β Redis, β
β Email) β
βββββββββββββββββββ
- Authentication & Authorization: JWT-based with RBAC
- User Management: Multi-role user system with permissions
- Course Management: Comprehensive course and category handling
- Student Management: Enrollment, attendance, and progress tracking
- Financial Management: Payment processing, debt tracking, and reporting
- Group Management: Dynamic group creation with scheduling
- Attendance System: Time-based attendance with business rules
- File Management: Secure file uploads with AWS S3
- Reporting & Analytics: Comprehensive statistics and insights
- Web Application: Public-facing content management
- JWT tokens with secure storage
- Password hashing using bcrypt with salt rounds
- Role-based access control with granular permissions
- Session management with Redis
- Input validation and sanitization
- School-level data isolation ensuring tenant separation
- CORS configuration with whitelist approach
- Content Security Policy with Helmet.js
- Rate limiting and request validation
- Secure file uploads with type and size validation
- Middleware-based authentication on protected routes
- Permission validation at route level
- Request sanitization and validation
- Error handling without information leakage
// User with role-based access
const userSchema = new Schema({
username: { type: String, unique: true, required: true },
password: { type: String, required: true, minlength: 4 },
roles: [{ type: Types.ObjectId, ref: 'UserRoles' }],
selected_role: { type: Types.ObjectId, ref: 'UserRoles' }
});
// Group with complex scheduling
const groupSchema = new Schema({
name: { type: String, required: true },
students: [{ type: Types.ObjectId, ref: 'User' }],
teachers: [{ type: Types.ObjectId, ref: 'User' }],
days: [{ date: Date, attendance: Types.ObjectId }],
status: { type: String, enum: ['NEW', 'WAITING', 'ACCEPTED', 'FINISHED', 'FROZEN'] }
});- Proper indexing for performance optimization
- Referential integrity with Mongoose relationships
- Data validation at schema level
- Transaction support for financial operations
- Aggregation pipelines for complex queries
- Node.js: 18.0.0 or higher
- MongoDB: 6.0 or higher
- Redis: 6.0 or higher
- AWS Account: For S3 file storage
- SMTP Service: For email functionality
Create .env files in both server/ and client/ directories:
# Server Configuration
PORT=5000
MODE=development
NODE_ENV=development
# Database
DATABASE_URL=mongodb://localhost:27017/manageme
# JWT Configuration
JWT_SECRET=your-super-secret-jwt-key-here
# AWS S3 Configuration
S3_ACCESS_KEY_ID=your-aws-access-key
S3_SECRET_ACCESS_KEY=your-aws-secret-key
S3_BUCKET_REGION=eu-north-1
S3_BUCKET_NAME=your-bucket-name
# Redis Configuration
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=your-redis-password
# Email Configuration
USER_EMAIL=your-email@gmail.com
USER_PASSWORD=your-app-password
# Admin Configuration
ADMIN_USERNAME=admin
ADMIN_PASSWORD=secure-admin-passwordVITE_BASE_URL=http://localhost:5000/apigit clone https://github.com/yourusername/manageme.uz.git
cd manageme.uzcd server
npm install
npm run devcd client
npm install
npm run dev# MongoDB will be automatically seeded with:
# - Admin user
# - Month configurations
# - Initial data structuresnpm run dev # Start development server with nodemon
npm start # Start production server
npm test # Run test suite
npm run test:coverage # Run tests with coverage
npm run lint # Run ESLint
npm run type-check # Run TypeScript type checkingnpm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build
npm run lint # Run ESLint
npm run type-check # Run TypeScript type checking- ESLint: Strict linting rules for JavaScript/TypeScript
- Prettier: Consistent code formatting
- TypeScript: Strict type checking enabled
- Git Hooks: Pre-commit validation (recommended)
POST /api/auth/register # User registration
POST /api/auth/login # User authentication
GET /api/auth/user-data # Get current user data
PUT /api/auth/select-role # Select user role# Group Management
GET /api/group # List groups
POST /api/group # Create group
PUT /api/group/:id # Update group
DELETE /api/group/:id # Delete group
# Student Management
GET /api/student # List students
POST /api/student # Create student
PUT /api/student/:id # Update student
# Course Management
GET /api/course # List courses
POST /api/course # Create course
PUT /api/course/:id # Update course
# Financial Management
GET /api/student-payment # Payment records
POST /api/student-payment # Process payment
GET /api/transaction # Transaction history# Public Content Management
GET /api/web-app/news # Public news
GET /api/web-app/course # Public courses
GET /api/web-app/portfolio # Portfolio items
GET /api/web-app/slider # Slider content- Unit Testing: Vitest framework setup
- API Testing: Endpoint validation
- Integration Testing: Database operations
- Test Coverage: Aim for 80%+ coverage
- E2E Testing: Playwright or Cypress
- Performance Testing: Load testing with Artillery
- Security Testing: OWASP ZAP integration
- Environment Variables: Secure configuration management
- Database: MongoDB Atlas or self-hosted with replication
- Caching: Redis Cloud or ElastiCache
- File Storage: AWS S3 with CDN
- Monitoring: Application performance monitoring
- Logging: Structured logging with Winston/Pino
# Example Dockerfile for backend
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 5000
CMD ["npm", "start"]- Redis Caching: Frequently accessed data
- Database Indexing: Optimized query performance
- File Compression: Image optimization with Sharp
- Pagination: Efficient data loading
- CDN Integration: Global content delivery
- Database Sharding: Horizontal scaling
- Microservices: Service decomposition
- GraphQL: Efficient data fetching
- Console Logging: Basic application logging
- Error Tracking: Centralized error handling
- Structured Logging: Winston or Pino integration
- Metrics Collection: Prometheus + Grafana
- APM Tools: New Relic or DataDog
- Health Checks: Endpoint monitoring
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- TypeScript: Strict mode enabled
- ESLint: Follow project linting rules
- Testing: Include tests for new features
- Documentation: Update relevant documentation
This project is licensed under the ISC License - see the LICENSE file for details.
Durbek Saydaliyev - Senior Software Engineer
- LinkedIn: [Your LinkedIn Profile]
- GitHub: [Your GitHub Profile]
- Portfolio: [Your Portfolio Website]
- Open Source Community: For invaluable tools and libraries
- MongoDB Team: For excellent documentation and support
- Express.js Community: For the robust web framework
- React Team: For the amazing frontend library
For support, questions, or collaboration opportunities:
- Email: [saydaliyevdurbek0512@gmail.com]
- Issues: GitHub Issues
- Discussions: GitHub Discussions