5.3 KiB
5.3 KiB
IMK Platform Documentation
Table of Contents
Introduction
IMK Platform is a modern web application built to manage and share documents securely. The platform provides robust user management, document handling, and secure sharing capabilities.
Features
User Management
- User registration and authentication
- Role-based access control (Admin, User)
- Password reset functionality
- Email notifications for account activities
- Profile management
Document Management
- Document upload and storage
- Document sharing between users
- Document version control
- Document metadata management
- Secure document access control
Email Notifications
- Welcome emails for new users
- Password reset notifications
- Document sharing notifications
- Password change confirmations
Administrative Features
- User management dashboard
- Document oversight
- System monitoring
- Access control management
Technical Stack
Frontend
- React.js with Vite
- TypeScript for type safety
- TailwindCSS for styling
- Shadcn UI components
- React Query for state management
- React Router for navigation
Backend
- NestJS framework
- TypeScript
- Prisma ORM
- PostgreSQL database
- Node.js runtime
- JWT authentication
- Nodemailer for email services
Architecture
Frontend Architecture
- Component-based architecture
- Responsive design
- State management using React Query
- Protected routes with authentication
- Form validation and error handling
Backend Architecture
- RESTful API design
- Modular architecture with NestJS
- Database abstraction with Prisma
- Email service integration
- JWT-based authentication
- Role-based authorization
User Flows
Authentication Flow
-
User Registration
- User fills registration form
- System validates input
- Welcome email sent
- User redirected to login
-
Login Flow
- User enters credentials
- System validates credentials
- JWT token issued
- User redirected to dashboard
-
Password Reset Flow
- User requests password reset
- System sends reset email
- User clicks reset link
- User sets new password
- Confirmation email sent
Document Management Flow
-
Document Upload
- User selects document
- System validates document
- Document metadata captured
- Document stored securely
-
Document Sharing
- User selects document to share
- User selects recipient(s)
- System sends notification
- Access granted to recipient
API Documentation
Authentication Endpoints
- POST /auth/register - User registration
- POST /auth/login - User login
- POST /auth/reset-password - Password reset request
- POST /auth/change-password - Password change
User Endpoints
- GET /users/profile - Get user profile
- PUT /users/profile - Update user profile
- GET /users - List users (admin only)
- PUT /users/:id - Update user (admin only)
Document Endpoints
- POST /documents - Upload document
- GET /documents - List documents
- GET /documents/:id - Get document details
- PUT /documents/:id - Update document
- DELETE /documents/:id - Delete document
- POST /documents/:id/share - Share document
Security
Authentication Security
- JWT token-based authentication
- Password hashing with bcrypt
- Rate limiting on auth endpoints
- Session management
- CSRF protection
Data Security
- HTTPS encryption
- Input validation
- XSS protection
- SQL injection prevention
- File type validation
Access Control
- Role-based access control
- Document-level permissions
- API endpoint protection
- Resource isolation
Deployment
Frontend Deployment
- Static site hosting
- CDN integration
- Environment configuration
- Build optimization
Backend Deployment
- Node.js runtime environment
- Process management with PM2
- Nginx reverse proxy
- SSL/TLS configuration
- Database backup system
Environment Variables
Frontend:
VITE_API_URL=https://api.example.com
Backend:
DATABASE_URL=postgresql://user:password@localhost:5432/dbname
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=user@example.com
SMTP_PASS=password
EMAIL_FROM=noreply@example.com
JWT_SECRET=your-secret-key
Getting Started
Development Setup
- Clone the repository
- Install dependencies:
# Frontend cd frontend npm install # Backend cd backend npm install - Set up environment variables
- Start development servers:
# Frontend npm run dev # Backend npm run start:dev
Production Deployment
- Build applications:
# Frontend npm run build # Backend npm run build - Configure environment variables
- Start production servers:
# Frontend serve -s dist # Backend npm run start:prod
Support and Maintenance
Monitoring
- Application performance monitoring
- Error tracking and logging
- Database monitoring
- Email service monitoring
Backup and Recovery
- Database backup strategy
- Document backup system
- System configuration backup
- Recovery procedures
Updates and Maintenance
- Regular security updates
- Dependency updates
- Performance optimization
- Feature updates