DCISM Drive is a secure, premium web portal designed for students to access, manage, and back up their files on the school's internal SFTP server (data.dcism.org). It replaces rigid command-line file management with a modern, responsive, and secure cloud storage experience.
- Responsive Layout: Seamless navigation across Desktop, Tablet, and Mobile screens.
- Rich Aesthetics: A cohesive dark mode interface featuring smooth CSS micro-animations, glassmorphic modals, and active storage visualizers.
- Touchscreen Friendly: Optimized scrolling physics and touch-action mappings for mobile browsers (including iOS Safari).
- Multi-User Security: Utilizes
express-sessionto instantiate isolated SFTP clients (SFTPManager) for each unique browser tab/session. One student's session can never view or access another user's files. - Inactivity Timeout: Automatically disconnects idle SFTP sessions after 5 minutes of inactivity to prevent unauthorized access on shared school lab computers.
- Automatic Session Cleanup: Session cookies are configured to destroy automatically when the browser window or tab is closed.
- Auto-Routing SSH Tunneling: Automatically redirects school server connections to
127.0.0.1:22074when a local SSH tunnel is active off-campus. - Offline Dev Sandbox: Falls back seamlessly to a local laptop sandbox directory (
tmp_sftp_storage/) when developing off-campus without an active tunnel connection.
- File Management: Create directories, upload, download, and rename files or folders.
- Soft Delete (Trash): Soft-deletes files to a hidden
.trashdirectory, allowing students to restore items easily or empty their trash permanently. - Bulk Operations: Select multiple files or folders for batch deletion or download as a unified ZIP archive.
- PDF & Code Previews: View documents and source code directly in the browser.
- Framework: React 19 (SPA) + Vite
- Styling: Tailwind CSS & Custom CSS
- Icons & Animation: Lucide React & Framer Motion
- Safety: Safe local storage wrapper preventing crashes on iOS WebKit Private Browsing.
- Server: Node.js & Express
- Session Store: In-memory session tracking with cookie isolation
- Client Protocol:
ssh2-sftp-clientwith legacy algorithm negotiation fallbacks - Compression:
archiverfor runner-side ZIP packaging
This repository is configured with a GitHub Actions workflow (.github/workflows/deploy.yml):
- Pushing to the
master/mainbranches automatically triggers a compilation and production build. - Packages and uploads files to the production server via secure SCP.
- Extracts package contents and cleanly restarts the application process using PM2.